@splinetool/loader 1.0.22 → 1.0.23
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 +154 -153
- package/build/SplineLoader.js +154 -153
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
var jS=Object.create;var Al=Object.defineProperty;var US=Object.getOwnPropertyDescriptor;var HS=Object.getOwnPropertyNames;var qS=Object.getPrototypeOf,WS=Object.prototype.hasOwnProperty;var $S=(n,t,e)=>t in n?Al(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var Qt=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),YS=(n,t)=>{for(var e in t)Al(n,e,{get:t[e],enumerable:!0})},XS=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of HS(t))!WS.call(n,o)&&o!==e&&Al(n,o,{get:()=>t[o],enumerable:!(r=US(t,o))||r.enumerable});return n};var kt=(n,t,e)=>(e=n!=null?jS(qS(n)):{},XS(t||!n||!n.__esModule?Al(e,"default",{value:n,enumerable:!0}):e,n));var _t=(n,t,e)=>($S(n,typeof t!="symbol"?t+"":t,e),e);var $g=Qt((Yd,Wg)=>{(function(n,t){typeof Yd=="object"?Wg.exports=t():typeof define=="function"&&define.amd?define(t):n.Alea=t()})(Yd,function(){"use strict";return n.importState=function(e){var r=new n;return r.importState(e),r},n;function n(){return function(e){var r=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=t();r=s(" "),o=s(" "),i=s(" ");for(var l=0;l<e.length;l++)r-=s(e[l]),r<0&&(r+=1),o-=s(e[l]),o<0&&(o+=1),i-=s(e[l]),i<0&&(i+=1);s=null;var u=function(){var c=2091639*r+a*23283064365386963e-26;return r=o,o=i,i=c-(a=c|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[r,o,i,a]},u.importState=function(c){r=+c[0]||0,o=+c[1]||0,i=+c[2]||0,a=+c[3]||0},u}(Array.prototype.slice.call(arguments))}function t(){var e=4022871197,r=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 r.version="Mash 0.9",r}})});var Zg=Qt((kc,Kg)=>{(function(n,t){typeof kc=="object"&&typeof Kg<"u"?t(kc):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(kc,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var a,s,l,u,c,d,p,f,h,m,y,g,b=t[0].length,S=t.length;if(S<b)throw new TypeError("Invalid matrix: m < n");for(var w=[],v=[],_=[],A=e==="f"?S:b,x=m=p=0;x<S;x++)v[x]=new Array(A).fill(0);for(x=0;x<b;x++)_[x]=new Array(b).fill(0);var T,C=new Array(b).fill(0);for(x=0;x<S;x++)for(a=0;a<b;a++)v[x][a]=t[x][a];for(x=0;x<b;x++){for(w[x]=p,h=0,l=x+1,a=x;a<S;a++)h+=Math.pow(v[a][x],2);if(h<i)p=0;else for(f=(d=v[x][x])*(p=d<0?Math.sqrt(h):-Math.sqrt(h))-h,v[x][x]=d-p,a=l;a<b;a++){for(h=0,s=x;s<S;s++)h+=v[s][x]*v[s][a];for(d=h/f,s=x;s<S;s++)v[s][a]=v[s][a]+d*v[s][x]}for(C[x]=p,h=0,a=l;a<b;a++)h+=Math.pow(v[x][a],2);if(h<i)p=0;else{for(f=(d=v[x][x+1])*(p=d<0?Math.sqrt(h):-Math.sqrt(h))-h,v[x][x+1]=d-p,a=l;a<b;a++)w[a]=v[x][a]/f;for(a=l;a<S;a++){for(h=0,s=l;s<b;s++)h+=v[a][s]*v[x][s];for(s=l;s<b;s++)v[a][s]=v[a][s]+h*w[s]}}m<(y=Math.abs(C[x])+Math.abs(w[x]))&&(m=y)}if(r)for(x=b-1;0<=x;x--){if(p!==0){for(f=v[x][x+1]*p,a=l;a<b;a++)_[a][x]=v[x][a]/f;for(a=l;a<b;a++){for(h=0,s=l;s<b;s++)h+=v[x][s]*_[s][a];for(s=l;s<b;s++)_[s][a]=_[s][a]+h*_[s][x]}}for(a=l;a<b;a++)_[x][a]=0,_[a][x]=0;_[x][x]=1,p=w[x],l=x}if(e){if(e==="f")for(x=b;x<S;x++){for(a=b;a<S;a++)v[x][a]=0;v[x][x]=1}for(x=b-1;0<=x;x--){for(l=x+1,p=C[x],a=l;a<A;a++)v[x][a]=0;if(p!==0){for(f=v[x][x]*p,a=l;a<A;a++){for(h=0,s=l;s<S;s++)h+=v[s][x]*v[s][a];for(d=h/f,s=x;s<S;s++)v[s][a]=v[s][a]+d*v[s][x]}for(a=x;a<S;a++)v[a][x]=v[a][x]/p}else for(a=x;a<S;a++)v[a][x]=0;v[x][x]=v[x][x]+1}}for(o*=m,s=b-1;0<=s;s--)for(var P=0;P<50;P++){for(T=!1,l=s;0<=l;l--){if(Math.abs(w[l])<=o){T=!0;break}if(Math.abs(C[l-1])<=o)break}if(!T){for(c=0,u=l-(h=1),x=l;x<s+1&&(d=h*w[x],w[x]=c*w[x],!(Math.abs(d)<=o));x++)if(p=C[x],C[x]=Math.sqrt(d*d+p*p),c=p/(f=C[x]),h=-d/f,e)for(a=0;a<S;a++)y=v[a][u],g=v[a][x],v[a][u]=y*c+g*h,v[a][x]=-y*h+g*c}if(g=C[s],l===s){if(g<0&&(C[s]=-g,r))for(a=0;a<b;a++)_[a][s]=-_[a][s];break}for(m=C[l],d=(((y=C[s-1])-g)*(y+g)+((p=w[s-1])-(f=w[s]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((m-g)*(m+g)+f*(y/(d<0?d-p:d+p)-f))/m,x=l+(h=c=1);x<s+1;x++){if(p=w[x],y=C[x],f=h*p,p*=c,g=Math.sqrt(d*d+f*f),d=m*(c=d/(w[x-1]=g))+p*(h=f/g),p=-m*h+p*c,f=y*h,y*=c,r)for(a=0;a<b;a++)m=_[a][x-1],g=_[a][x],_[a][x-1]=m*c+g*h,_[a][x]=-m*h+g*c;if(g=Math.sqrt(d*d+f*f),d=(c=d/(C[x-1]=g))*p+(h=f/g)*y,m=-h*p+c*y,e)for(a=0;a<S;a++)y=v[a][x-1],g=v[a][x],v[a][x-1]=y*c+g*h,v[a][x]=-y*h+g*c}w[l]=0,w[s]=d,C[s]=m}for(x=0;x<b;x++)C[x]<o&&(C[x]=0);return{u:v,q:C,v:_}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var N0=Qt((Sp,wp)=>{(function(n,t){typeof Sp=="object"&&typeof wp<"u"?wp.exports=t():typeof define=="function"&&define.amd?define(t):(n=n||self,n.TinyQueue=t())})(Sp,function(){"use strict";var n=function(r,o){if(r===void 0&&(r=[]),o===void 0&&(o=t),this.data=r,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(r){this.data.push(r),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var r=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),r}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(r){for(var o=this,i=o.data,a=o.compare,s=i[r];r>0;){var l=r-1>>1,u=i[l];if(a(s,u)>=0)break;i[r]=u,r=l}i[r]=s},n.prototype._down=function(r){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,l=i[r];r<s;){var u=(r<<1)+1,c=i[u],d=u+1;if(d<this.length&&a(i[d],c)<0&&(u=d,c=i[d]),a(c,l)>=0)break;i[r]=c,r=u}i[r]=l};function t(e,r){return e<r?-1:e>r?1:0}return n})});var E0=Qt((qq,_p)=>{"use strict";var Zc=N0();Zc.default&&(Zc=Zc.default);_p.exports=D0;_p.exports.default=D0;function D0(n,t,e){t=t||1;for(var r,o,i,a,s=0;s<n[0].length;s++){var l=n[0][s];(!s||l[0]<r)&&(r=l[0]),(!s||l[1]<o)&&(o=l[1]),(!s||l[0]>i)&&(i=l[0]),(!s||l[1]>a)&&(a=l[1])}var u=i-r,c=a-o,d=Math.min(u,c),p=d/2;if(d===0){var f=[r,o];return f.distance=0,f}for(var h=new Zc(void 0,dT),m=r;m<i;m+=d)for(var y=o;y<a;y+=d)h.push(new yn(m+p,y+p,p,n));var g=fT(n),b=new yn(r+u/2,o+c/2,0,n);b.d>g.d&&(g=b);for(var S=h.length;h.length;){var w=h.pop();w.d>g.d&&(g=w,e&&console.log("found best %d after %d probes",Math.round(1e4*w.d)/1e4,S)),!(w.max-g.d<=t)&&(p=w.h/2,h.push(new yn(w.x-p,w.y-p,p,n)),h.push(new yn(w.x+p,w.y-p,p,n)),h.push(new yn(w.x-p,w.y+p,p,n)),h.push(new yn(w.x+p,w.y+p,p,n)),S+=4)}e&&(console.log("num probes: "+S),console.log("best distance: "+g.d));var v=[g.x,g.y];return v.distance=g.d,v}function dT(n,t){return t.max-n.max}function yn(n,t,e,r){this.x=n,this.y=t,this.h=e,this.d=pT(n,t,r),this.max=this.d+this.h*Math.SQRT2}function pT(n,t,e){for(var r=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,l=a.length,u=l-1;s<l;u=s++){var c=a[s],d=a[u];c[1]>t!=d[1]>t&&n<(d[0]-c[0])*(t-c[1])/(d[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,hT(n,t,c,d))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function fT(n){for(var t=0,e=0,r=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var l=o[i],u=o[s],c=l[0]*u[1]-u[0]*l[1];e+=(l[0]+u[0])*c,r+=(l[1]+u[1])*c,t+=c*3}return t===0?new yn(o[0][0],o[0][1],0,n):new yn(e/t,r/t,0,n)}function hT(n,t,e,r){var o=e[0],i=e[1],a=r[0]-o,s=r[1]-i;if(a!==0||s!==0){var l=((n-o)*a+(t-i)*s)/(a*a+s*s);l>1?(o=r[0],i=r[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=t-i,a*a+s*s}});var Kx=Qt(Pu=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var c=this||t;return c._counter=1e3,c._html5AudioPool=[],c.html5PoolSize=10,c._codecs={},c._howls=[],c._muted=!1,c._volume=1,c._canPlayEvent="canplaythrough",c._navigator=typeof window<"u"&&window.navigator?window.navigator:null,c.masterGain=null,c.noAudio=!1,c.usingWebAudio=!0,c.autoSuspend=!0,c.ctx=null,c.autoUnlock=!0,c._setup(),c},volume:function(c){var d=this||t;if(c=parseFloat(c),d.ctx||u(),typeof c<"u"&&c>=0&&c<=1){if(d._volume=c,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(c,t.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=d._howls[p]._soundById(f[h]);m&&m._node&&(m._node.volume=m._volume*c)}return d}return d._volume},mute:function(c){var d=this||t;d.ctx||u(),d._muted=c,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(c?0:d._volume,t.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=d._howls[p]._soundById(f[h]);m&&m._node&&(m._node.muted=c?!0:m._muted)}return d},stop:function(){for(var c=this||t,d=0;d<c._howls.length;d++)c._howls[d].stop();return c},unload:function(){for(var c=this||t,d=c._howls.length-1;d>=0;d--)c._howls[d].unload();return c.usingWebAudio&&c.ctx&&typeof c.ctx.close<"u"&&(c.ctx.close(),c.ctx=null,u()),c},codecs:function(c){return(this||t)._codecs[c.replace(/^x-/,"")]},_setup:function(){var c=this||t;if(c.state=c.ctx&&c.ctx.state||"suspended",c._autoSuspend(),!c.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(c._canPlayEvent="canplay")}catch{c.noAudio=!0}else c.noAudio=!0;try{var d=new Audio;d.muted&&(c.noAudio=!0)}catch{}return c.noAudio||c._setupCodecs(),c},_setupCodecs:function(){var c=this||t,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return c}if(!d||typeof d.canPlayType!="function")return c;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=c._navigator?c._navigator.userAgent:"",h=f.match(/OPR\/([0-6].)/g),m=h&&parseInt(h[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),b=y&&g&&parseInt(g[1],10)<15;return c._codecs={mp3:!!(!m&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!b&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!b&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},c},_unlockAudio:function(){var c=this||t;if(!(c._audioUnlocked||!c.ctx)){c._audioUnlocked=!1,c.autoUnlock=!1,!c._mobileUnloaded&&c.ctx.sampleRate!==44100&&(c._mobileUnloaded=!0,c.unload()),c._scratchBuffer=c.ctx.createBuffer(1,1,22050);var d=function(p){for(;c._html5AudioPool.length<c.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,c._releaseHtml5Audio(f)}catch{c.noAudio=!0;break}for(var h=0;h<c._howls.length;h++)if(!c._howls[h]._webAudio)for(var m=c._howls[h]._getSoundIds(),y=0;y<m.length;y++){var g=c._howls[h]._soundById(m[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}c._autoResume();var b=c.ctx.createBufferSource();b.buffer=c._scratchBuffer,b.connect(c.ctx.destination),typeof b.start>"u"?b.noteOn(0):b.start(0),typeof c.ctx.resume=="function"&&c.ctx.resume(),b.onended=function(){b.disconnect(0),c._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var S=0;S<c._howls.length;S++)c._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),c}},_obtainHtml5Audio:function(){var c=this||t;if(c._html5AudioPool.length)return c._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(c){var d=this||t;return c._unlocked&&d._html5AudioPool.push(c),d},_autoSuspend:function(){var c=this;if(!(!c.autoSuspend||!c.ctx||typeof c.ctx.suspend>"u"||!t.usingWebAudio)){for(var d=0;d<c._howls.length;d++)if(c._howls[d]._webAudio){for(var p=0;p<c._howls[d]._sounds.length;p++)if(!c._howls[d]._sounds[p]._paused)return c}return c._suspendTimer&&clearTimeout(c._suspendTimer),c._suspendTimer=setTimeout(function(){if(!!c.autoSuspend){c._suspendTimer=null,c.state="suspending";var f=function(){c.state="suspended",c._resumeAfterSuspend&&(delete c._resumeAfterSuspend,c._autoResume())};c.ctx.suspend().then(f,f)}},3e4),c}},_autoResume:function(){var c=this;if(!(!c.ctx||typeof c.ctx.resume>"u"||!t.usingWebAudio))return c.state==="running"&&c.ctx.state!=="interrupted"&&c._suspendTimer?(clearTimeout(c._suspendTimer),c._suspendTimer=null):c.state==="suspended"||c.state==="running"&&c.ctx.state==="interrupted"?(c.ctx.resume().then(function(){c.state="running";for(var d=0;d<c._howls.length;d++)c._howls[d]._emit("resume")}),c._suspendTimer&&(clearTimeout(c._suspendTimer),c._suspendTimer=null)):c.state==="suspending"&&(c._resumeAfterSuspend=!0),c}};var t=new n,e=function(c){var d=this;if(!c.src||c.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(c)};e.prototype={init:function(c){var d=this;return t.ctx||u(),d._autoplay=c.autoplay||!1,d._format=typeof c.format!="string"?c.format:[c.format],d._html5=c.html5||!1,d._muted=c.mute||!1,d._loop=c.loop||!1,d._pool=c.pool||5,d._preload=typeof c.preload=="boolean"||c.preload==="metadata"?c.preload:!0,d._rate=c.rate||1,d._sprite=c.sprite||{},d._src=typeof c.src!="string"?c.src:[c.src],d._volume=c.volume!==void 0?c.volume:1,d._xhr={method:c.xhr&&c.xhr.method?c.xhr.method:"GET",headers:c.xhr&&c.xhr.headers?c.xhr.headers:null,withCredentials:c.xhr&&c.xhr.withCredentials?c.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=c.onend?[{fn:c.onend}]:[],d._onfade=c.onfade?[{fn:c.onfade}]:[],d._onload=c.onload?[{fn:c.onload}]:[],d._onloaderror=c.onloaderror?[{fn:c.onloaderror}]:[],d._onplayerror=c.onplayerror?[{fn:c.onplayerror}]:[],d._onpause=c.onpause?[{fn:c.onpause}]:[],d._onplay=c.onplay?[{fn:c.onplay}]:[],d._onstop=c.onstop?[{fn:c.onstop}]:[],d._onmute=c.onmute?[{fn:c.onmute}]:[],d._onvolume=c.onvolume?[{fn:c.onvolume}]:[],d._onrate=c.onrate?[{fn:c.onrate}]:[],d._onseek=c.onseek?[{fn:c.onseek}]:[],d._onunlock=c.onunlock?[{fn:c.onunlock}]:[],d._onresume=[],d._webAudio=t.usingWebAudio&&!d._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var c=this,d=null;if(t.noAudio){c._emit("loaderror",null,"No audio support.");return}typeof c._src=="string"&&(c._src=[c._src]);for(var p=0;p<c._src.length;p++){var f,h;if(c._format&&c._format[p])f=c._format[p];else{if(h=c._src[p],typeof h!="string"){c._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(h),f||(f=/\.([^.]+)$/.exec(h.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&t.codecs(f)){d=c._src[p];break}}if(!d){c._emit("loaderror",null,"No codec support for selected audio sources.");return}return c._src=d,c._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(c._html5=!0,c._webAudio=!1),new r(c),c._webAudio&&i(c),c},play:function(c,d){var p=this,f=null;if(typeof c=="number")f=c,c=null;else{if(typeof c=="string"&&p._state==="loaded"&&!p._sprite[c])return null;if(typeof c>"u"&&(c="__default",!p._playLock)){for(var h=0,m=0;m<p._sounds.length;m++)p._sounds[m]._paused&&!p._sounds[m]._ended&&(h++,f=p._sounds[m]._id);h===1?c=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!c&&(c=y._sprite||"__default"),p._state!=="loaded"){y._sprite=c,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&t._autoResume();var b=Math.max(0,y._seek>0?y._seek:p._sprite[c][0]/1e3),S=Math.max(0,(p._sprite[c][0]+p._sprite[c][1])/1e3-b),w=S*1e3/Math.abs(y._rate),v=p._sprite[c][0]/1e3,_=(p._sprite[c][0]+p._sprite[c][1])/1e3;y._sprite=c,y._ended=!1;var A=function(){y._paused=!1,y._seek=b,y._start=v,y._stop=_,y._loop=!!(y._loop||p._sprite[c][2])};if(b>=_){p._ended(y);return}var x=y._node;if(p._webAudio){var T=function(){p._playLock=!1,A(),p._refreshBuffer(y);var M=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(M,t.ctx.currentTime),y._playStart=t.ctx.currentTime,typeof x.bufferSource.start>"u"?y._loop?x.bufferSource.noteGrainOn(0,b,86400):x.bufferSource.noteGrainOn(0,b,S):y._loop?x.bufferSource.start(0,b,86400):x.bufferSource.start(0,b,S),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?T():(p._playLock=!0,p.once("resume",T),p._clearTimer(y._id))}else{var C=function(){x.currentTime=b,x.muted=y._muted||p._muted||t._muted||x.muted,x.volume=y._volume*t.volume(),x.playbackRate=y._rate;try{var M=x.play();if(M&&typeof Promise<"u"&&(M instanceof Promise||typeof M.then=="function")?(p._playLock=!0,A(),M.then(function(){p._playLock=!1,x._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,A(),p._emit("play",y._id)),x.playbackRate=y._rate,x.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}c!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),x.removeEventListener("ended",p._endTimers[y._id],!1)},x.addEventListener("ended",p._endTimers[y._id],!1))}catch(I){p._emit("playerror",y._id,I)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var P=window&&window.ejecta||!x.readyState&&t._navigator.isCocoonJS;if(x.readyState>=3||P)C();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",C(),x.removeEventListener(t._canPlayEvent,O,!1)};x.addEventListener(t._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(c){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(c)}}),d;for(var p=d._getSoundIds(c),f=0;f<p.length;f++){d._clearTimer(p[f]);var h=d._soundById(p[f]);if(h&&!h._paused&&(h._seek=d.seek(p[f]),h._rateSeek=0,h._paused=!0,d._stopFade(p[f]),h._node))if(d._webAudio){if(!h._node.bufferSource)continue;typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)}else(!isNaN(h._node.duration)||h._node.duration===1/0)&&h._node.pause();arguments[1]||d._emit("pause",h?h._id:null)}return d},stop:function(c,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(c)}}),p;for(var f=p._getSoundIds(c),h=0;h<f.length;h++){p._clearTimer(f[h]);var m=p._soundById(f[h]);m&&(m._seek=m._start||0,m._rateSeek=0,m._paused=!0,m._ended=!0,p._stopFade(f[h]),m._node&&(p._webAudio?m._node.bufferSource&&(typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),p._cleanBuffer(m._node)):(!isNaN(m._node.duration)||m._node.duration===1/0)&&(m._node.currentTime=m._start||0,m._node.pause(),m._node.duration===1/0&&p._clearSound(m._node))),d||p._emit("stop",m._id))}return p},mute:function(c,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(c,d)}}),p;if(typeof d>"u")if(typeof c=="boolean")p._muted=c;else return p._muted;for(var f=p._getSoundIds(d),h=0;h<f.length;h++){var m=p._soundById(f[h]);m&&(m._muted=c,m._interval&&p._stopFade(m._id),p._webAudio&&m._node?m._node.gain.setValueAtTime(c?0:m._volume,t.ctx.currentTime):m._node&&(m._node.muted=t._muted?!0:c),p._emit("mute",m._id))}return p},volume:function(){var c=this,d=arguments,p,f;if(d.length===0)return c._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var h=c._getSoundIds(),m=h.indexOf(d[0]);m>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"volume",action:function(){c.volume.apply(c,d)}}),c;typeof f>"u"&&(c._volume=p),f=c._getSoundIds(f);for(var g=0;g<f.length;g++)y=c._soundById(f[g]),y&&(y._volume=p,d[2]||c._stopFade(f[g]),c._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,t.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*t.volume()),c._emit("volume",y._id))}else return y=f?c._soundById(f):c._sounds[0],y?y._volume:0;return c},fade:function(c,d,p,f){var h=this;if(h._state!=="loaded"||h._playLock)return h._queue.push({event:"fade",action:function(){h.fade(c,d,p,f)}}),h;c=Math.min(Math.max(0,parseFloat(c)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),h.volume(c,f);for(var m=h._getSoundIds(f),y=0;y<m.length;y++){var g=h._soundById(m[y]);if(g){if(f||h._stopFade(m[y]),h._webAudio&&!g._muted){var b=t.ctx.currentTime,S=b+p/1e3;g._volume=c,g._node.gain.setValueAtTime(c,b),g._node.gain.linearRampToValueAtTime(d,S)}h._startFadeInterval(g,c,d,p,m[y],typeof f>"u")}}return h},_startFadeInterval:function(c,d,p,f,h,m){var y=this,g=d,b=p-d,S=Math.abs(b/.01),w=Math.max(4,S>0?f/S:f),v=Date.now();c._fadeTo=p,c._interval=setInterval(function(){var _=(Date.now()-v)/f;v=Date.now(),g+=b*_,g=Math.round(g*100)/100,b<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?c._volume=g:y.volume(g,c._id,!0),m&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(c._interval),c._interval=null,c._fadeTo=null,y.volume(p,c._id),y._emit("fade",c._id))},w)},_stopFade:function(c){var d=this,p=d._soundById(c);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,c),p._fadeTo=null,d._emit("fade",c)),d},loop:function(){var c=this,d=arguments,p,f,h;if(d.length===0)return c._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],c._loop=p;else return h=c._soundById(parseInt(d[0],10)),h?h._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var m=c._getSoundIds(f),y=0;y<m.length;y++)h=c._soundById(m[y]),h&&(h._loop=p,c._webAudio&&h._node&&h._node.bufferSource&&(h._node.bufferSource.loop=p,p&&(h._node.bufferSource.loopStart=h._start||0,h._node.bufferSource.loopEnd=h._stop,c.playing(m[y])&&(c.pause(m[y],!0),c.play(m[y],!0)))));return c},rate:function(){var c=this,d=arguments,p,f;if(d.length===0)f=c._sounds[0]._id;else if(d.length===1){var h=c._getSoundIds(),m=h.indexOf(d[0]);m>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"rate",action:function(){c.rate.apply(c,d)}}),c;typeof f>"u"&&(c._rate=p),f=c._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=c._soundById(f[g]),y){c.playing(f[g])&&(y._rateSeek=c.seek(f[g]),y._playStart=c._webAudio?t.ctx.currentTime:y._playStart),y._rate=p,c._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,t.ctx.currentTime):y._node&&(y._node.playbackRate=p);var b=c.seek(f[g]),S=(c._sprite[y._sprite][0]+c._sprite[y._sprite][1])/1e3-b,w=S*1e3/Math.abs(y._rate);(c._endTimers[f[g]]||!y._paused)&&(c._clearTimer(f[g]),c._endTimers[f[g]]=setTimeout(c._ended.bind(c,y),w)),c._emit("rate",y._id)}}else return y=c._soundById(f),y?y._rate:c._rate;return c},seek:function(){var c=this,d=arguments,p,f;if(d.length===0)c._sounds.length&&(f=c._sounds[0]._id);else if(d.length===1){var h=c._getSoundIds(),m=h.indexOf(d[0]);m>=0?f=parseInt(d[0],10):c._sounds.length&&(f=c._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(c._state!=="loaded"||c._playLock))return c._queue.push({event:"seek",action:function(){c.seek.apply(c,d)}}),c;var y=c._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=c.playing(f);g&&c.pause(f,!0),y._seek=p,y._ended=!1,c._clearTimer(f),!c._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var b=function(){g&&c.play(f,!0),c._emit("seek",f)};if(g&&!c._webAudio){var S=function(){c._playLock?setTimeout(S,0):b()};setTimeout(S,0)}else b()}else if(c._webAudio){var w=c.playing(f)?t.ctx.currentTime-y._playStart:0,v=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(v+w*Math.abs(y._rate))}else return y._node.currentTime;return c},playing:function(c){var d=this;if(typeof c=="number"){var p=d._soundById(c);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(c){var d=this,p=d._duration,f=d._soundById(c);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var c=this,d=c._sounds,p=0;p<d.length;p++)d[p]._paused||c.stop(d[p]._id),c._webAudio||(c._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(t._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),t._releaseHtml5Audio(d[p]._node)),delete d[p]._node,c._clearTimer(d[p]._id);var f=t._howls.indexOf(c);f>=0&&t._howls.splice(f,1);var h=!0;for(p=0;p<t._howls.length;p++)if(t._howls[p]._src===c._src||c._src.indexOf(t._howls[p]._src)>=0){h=!1;break}return o&&h&&delete o[c._src],t.noAudio=!1,c._state="unloaded",c._sounds=[],c=null,null},on:function(c,d,p,f){var h=this,m=h["_on"+c];return typeof d=="function"&&m.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),h},off:function(c,d,p){var f=this,h=f["_on"+c],m=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(m=0;m<h.length;m++){var y=p===h[m].id;if(d===h[m].fn&&y||!d&&y){h.splice(m,1);break}}else if(c)f["_on"+c]=[];else{var g=Object.keys(f);for(m=0;m<g.length;m++)g[m].indexOf("_on")===0&&Array.isArray(f[g[m]])&&(f[g[m]]=[])}return f},once:function(c,d,p){var f=this;return f.on(c,d,p,1),f},_emit:function(c,d,p){for(var f=this,h=f["_on"+c],m=h.length-1;m>=0;m--)(!h[m].id||h[m].id===d||c==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,h[m].fn),0),h[m].once&&f.off(c,h[m].fn,h[m].id));return f._loadQueue(c),f},_loadQueue:function(c){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===c&&(d._queue.shift(),d._loadQueue()),c||p.action()}return d},_ended:function(c){var d=this,p=c._sprite;if(!d._webAudio&&c._node&&!c._node.paused&&!c._node.ended&&c._node.currentTime<c._stop)return setTimeout(d._ended.bind(d,c),100),d;var f=!!(c._loop||d._sprite[p][2]);if(d._emit("end",c._id),!d._webAudio&&f&&d.stop(c._id,!0).play(c._id),d._webAudio&&f){d._emit("play",c._id),c._seek=c._start||0,c._rateSeek=0,c._playStart=t.ctx.currentTime;var h=(c._stop-c._start)*1e3/Math.abs(c._rate);d._endTimers[c._id]=setTimeout(d._ended.bind(d,c),h)}return d._webAudio&&!f&&(c._paused=!0,c._ended=!0,c._seek=c._start||0,c._rateSeek=0,d._clearTimer(c._id),d._cleanBuffer(c._node),t._autoSuspend()),!d._webAudio&&!f&&d.stop(c._id,!0),d},_clearTimer:function(c){var d=this;if(d._endTimers[c]){if(typeof d._endTimers[c]!="function")clearTimeout(d._endTimers[c]);else{var p=d._soundById(c);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[c],!1)}delete d._endTimers[c]}return d},_soundById:function(c){for(var d=this,p=0;p<d._sounds.length;p++)if(c===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var c=this;c._drain();for(var d=0;d<c._sounds.length;d++)if(c._sounds[d]._ended)return c._sounds[d].reset();return new r(c)},_drain:function(){var c=this,d=c._pool,p=0,f=0;if(!(c._sounds.length<d)){for(f=0;f<c._sounds.length;f++)c._sounds[f]._ended&&p++;for(f=c._sounds.length-1;f>=0;f--){if(p<=d)return;c._sounds[f]._ended&&(c._webAudio&&c._sounds[f]._node&&c._sounds[f]._node.disconnect(0),c._sounds.splice(f,1),p--)}}},_getSoundIds:function(c){var d=this;if(typeof c>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[c]},_refreshBuffer:function(c){var d=this;return c._node.bufferSource=t.ctx.createBufferSource(),c._node.bufferSource.buffer=o[d._src],c._panner?c._node.bufferSource.connect(c._panner):c._node.bufferSource.connect(c._node),c._node.bufferSource.loop=c._loop,c._loop&&(c._node.bufferSource.loopStart=c._start||0,c._node.bufferSource.loopEnd=c._stop||0),c._node.bufferSource.playbackRate.setValueAtTime(c._rate,t.ctx.currentTime),d},_cleanBuffer:function(c){var d=this,p=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&c.bufferSource&&(c.bufferSource.onended=null,c.bufferSource.disconnect(0),p))try{c.bufferSource.buffer=t._scratchBuffer}catch{}return c.bufferSource=null,d},_clearSound:function(c){var d=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);d||(c.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(c){this._parent=c,this.init()};r.prototype={init:function(){var c=this,d=c._parent;return c._muted=d._muted,c._loop=d._loop,c._volume=d._volume,c._rate=d._rate,c._seek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,d._sounds.push(c),c.create(),c},create:function(){var c=this,d=c._parent,p=t._muted||c._muted||c._parent._muted?0:c._volume;return d._webAudio?(c._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),c._node.gain.setValueAtTime(p,t.ctx.currentTime),c._node.paused=!0,c._node.connect(t.masterGain)):t.noAudio||(c._node=t._obtainHtml5Audio(),c._errorFn=c._errorListener.bind(c),c._node.addEventListener("error",c._errorFn,!1),c._loadFn=c._loadListener.bind(c),c._node.addEventListener(t._canPlayEvent,c._loadFn,!1),c._endFn=c._endListener.bind(c),c._node.addEventListener("ended",c._endFn,!1),c._node.src=d._src,c._node.preload=d._preload===!0?"auto":d._preload,c._node.volume=p*t.volume(),c._node.load()),c},reset:function(){var c=this,d=c._parent;return c._muted=d._muted,c._loop=d._loop,c._volume=d._volume,c._rate=d._rate,c._seek=0,c._rateSeek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,c},_errorListener:function(){var c=this;c._parent._emit("loaderror",c._id,c._node.error?c._node.error.code:0),c._node.removeEventListener("error",c._errorFn,!1)},_loadListener:function(){var c=this,d=c._parent;d._duration=Math.ceil(c._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),c._node.removeEventListener(t._canPlayEvent,c._loadFn,!1)},_endListener:function(){var c=this,d=c._parent;d._duration===1/0&&(d._duration=Math.ceil(c._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(c)),c._node.removeEventListener("ended",c._endFn,!1)}};var o={},i=function(c){var d=c._src;if(o[d]){c._duration=o[d].duration,l(c);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),h=0;h<p.length;++h)f[h]=p.charCodeAt(h);s(f.buffer,c)}else{var m=new XMLHttpRequest;m.open(c._xhr.method,d,!0),m.withCredentials=c._xhr.withCredentials,m.responseType="arraybuffer",c._xhr.headers&&Object.keys(c._xhr.headers).forEach(function(y){m.setRequestHeader(y,c._xhr.headers[y])}),m.onload=function(){var y=(m.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){c._emit("loaderror",null,"Failed loading audio file with status: "+m.status+".");return}s(m.response,c)},m.onerror=function(){c._webAudio&&(c._html5=!0,c._webAudio=!1,c._sounds=[],delete o[d],c.load())},a(m)}},a=function(c){try{c.send()}catch{c.onerror()}},s=function(c,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(h){h&&d._sounds.length>0?(o[d._src]=h,l(d,h)):p()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(c).then(f).catch(p):t.ctx.decodeAudioData(c,f,p)},l=function(c,d){d&&!c._duration&&(c._duration=d.duration),Object.keys(c._sprite).length===0&&(c._sprite={__default:[0,c._duration*1e3]}),c._state!=="loaded"&&(c._state="loaded",c._emit("load"),c._loadQueue())},u=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var c=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),d=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(c&&p&&p<9){var f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof Pu<"u"&&(Pu.Howler=t,Pu.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=t,window.Howl=e,window.Sound=r)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var r=e._howls.length-1;r>=0;r--)e._howls[r].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,e,r],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(t,e,r,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var l=s._orientation;if(e=typeof e!="number"?l[1]:e,r=typeof r!="number"?l[2]:r,o=typeof o!="number"?l[3]:o,i=typeof i!="number"?l[4]:i,a=typeof a!="number"?l[5]:a,typeof t=="number")s._orientation=[t,e,r,o,i,a],typeof s.ctx.listener.forwardX<"u"?(s.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(t,e,r,o,i,a);else return l;return s},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var i=r._getSoundIds(e),a=0;a<i.length;a++){var s=r._soundById(i[a]);if(s)if(typeof t=="number")s._stereo=t,s._pos=[t,0,0],s._node&&(s._pannerAttr.panningModel="equalpower",(!s._panner||!s._panner.pan)&&n(s,o),o==="spatial"?typeof s._panner.positionX<"u"?(s._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),s._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),s._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):s._panner.setPosition(t,0,0):s._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",s._id);else return s._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(t,e,r,o)}}),i;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")i._pos=[t,e,r];else return i._pos;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._pos=[t,e,r],l._node&&((!l._panner||l._panner.pan)&&n(l,"spatial"),typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):l._panner.setPosition(t,e,r)),i._emit("pos",l._id);else return l._pos}return i},Howl.prototype.orientation=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(t,e,r,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,r=typeof r!="number"?i._orientation[2]:r,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,r];else return i._orientation;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._orientation=[t,e,r],l._node&&(l._panner||(l._pos||(l._pos=i._pos||[0,0,-.5]),n(l,"spatial")),typeof l._panner.orientationX<"u"?(l._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):l._panner.setOrientation(t,e,r)),i._emit("orientation",l._id);else return l._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")r=e[0],typeof o>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var a=t._getSoundIds(o),s=0;s<a.length;s++)if(i=t._soundById(a[s]),i){var l=i._pannerAttr;l={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:l.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:l.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:l.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:l.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:l.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:l.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:l.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:l.panningModel};var u=i._panner;u?(u.coneInnerAngle=l.coneInnerAngle,u.coneOuterAngle=l.coneOuterAngle,u.coneOuterGain=l.coneOuterGain,u.distanceModel=l.distanceModel,u.maxDistance=l.maxDistance,u.refDistance=l.refDistance,u.rolloffFactor=l.rolloffFactor,u.panningModel=l.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),n(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,r=e._parent;e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,t.call(this),e._stereo?r.stereo(e._stereo):e._pos&&r.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,r=e._parent;return e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,e._stereo?r.stereo(e._stereo):e._pos?r.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,r._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var n=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var Fv=Qt((Hce,Gv)=>{"use strict";function F3(n){for(var t=new Array(n),e=0;e<n;++e)t[e]=e;return t}Gv.exports=F3});var Uv=Qt((qce,jv)=>{jv.exports=function(n){return n!=null&&(kv(n)||k3(n)||!!n._isBuffer)};function kv(n){return!!n.constructor&&typeof n.constructor.isBuffer=="function"&&n.constructor.isBuffer(n)}function k3(n){return typeof n.readFloatLE=="function"&&typeof n.slice=="function"&&kv(n.slice(0,0))}});var ps=Qt((Wce,Hv)=>{var j3=Fv(),U3=Uv(),H3=typeof Float64Array<"u";function q3(n,t){return n[0]-t[0]}function W3(){var n=this.stride,t=new Array(n.length),e;for(e=0;e<t.length;++e)t[e]=[Math.abs(n[e]),e];t.sort(q3);var r=new Array(t.length);for(e=0;e<r.length;++e)r[e]=t[e][1];return r}function $3(n,t){var e=["View",t,"d",n].join("");t<0&&(e="View_Nil"+n);var r=n==="generic";if(t===-1){var o="function "+e+"(a){this.data=a;};var proto="+e+".prototype;proto.dtype='"+n+"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new "+e+"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_"+e+"(a){return new "+e+"(a);}",m=new Function(o);return m()}else if(t===0){var o="function "+e+"(a,d) {this.data = a;this.offset = d};var proto="+e+".prototype;proto.dtype='"+n+"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function "+e+"_copy() {return new "+e+"(this.data,this.offset)};proto.pick=function "+e+"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function "+e+"_get(){return "+(r?"this.data.get(this.offset)":"this.data[this.offset]")+"};proto.set=function "+e+"_set(v){return "+(r?"this.data.set(this.offset,v)":"this.data[this.offset]=v")+"};return function construct_"+e+"(a,b,c,d){return new "+e+"(a,d)}",m=new Function("TrivialArray",o);return m(td[n][0])}var o=["'use strict'"],i=j3(t),a=i.map(function(y){return"i"+y}),s="this.offset+"+i.map(function(y){return"this.stride["+y+"]*i"+y}).join("+"),l=i.map(function(y){return"b"+y}).join(","),u=i.map(function(y){return"c"+y}).join(",");o.push("function "+e+"(a,"+l+","+u+",d){this.data=a","this.shape=["+l+"]","this.stride=["+u+"]","this.offset=d|0}","var proto="+e+".prototype","proto.dtype='"+n+"'","proto.dimension="+t),o.push("Object.defineProperty(proto,'size',{get:function "+e+"_size(){return "+i.map(function(y){return"this.shape["+y+"]"}).join("*"),"}})"),t===1?o.push("proto.order=[0]"):(o.push("Object.defineProperty(proto,'order',{get:"),t<4?(o.push("function "+e+"_order(){"),t===2?o.push("return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})"):t===3&&o.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):o.push("ORDER})")),o.push("proto.set=function "+e+"_set("+a.join(",")+",v){"),r?o.push("return this.data.set("+s+",v)}"):o.push("return this.data["+s+"]=v}"),o.push("proto.get=function "+e+"_get("+a.join(",")+"){"),r?o.push("return this.data.get("+s+")}"):o.push("return this.data["+s+"]}"),o.push("proto.index=function "+e+"_index(",a.join(),"){return "+s+"}"),o.push("proto.hi=function "+e+"_hi("+a.join(",")+"){return new "+e+"(this.data,"+i.map(function(y){return["(typeof i",y,"!=='number'||i",y,"<0)?this.shape[",y,"]:i",y,"|0"].join("")}).join(",")+","+i.map(function(y){return"this.stride["+y+"]"}).join(",")+",this.offset)}");var c=i.map(function(y){return"a"+y+"=this.shape["+y+"]"}),d=i.map(function(y){return"c"+y+"=this.stride["+y+"]"});o.push("proto.lo=function "+e+"_lo("+a.join(",")+"){var b=this.offset,d=0,"+c.join(",")+","+d.join(","));for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'&&i"+p+">=0){d=i"+p+"|0;b+=c"+p+"*d;a"+p+"-=d}");o.push("return new "+e+"(this.data,"+i.map(function(y){return"a"+y}).join(",")+","+i.map(function(y){return"c"+y}).join(",")+",b)}"),o.push("proto.step=function "+e+"_step("+a.join(",")+"){var "+i.map(function(y){return"a"+y+"=this.shape["+y+"]"}).join(",")+","+i.map(function(y){return"b"+y+"=this.stride["+y+"]"}).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'){d=i"+p+"|0;if(d<0){c+=b"+p+"*(a"+p+"-1);a"+p+"=ceil(-a"+p+"/d)}else{a"+p+"=ceil(a"+p+"/d)}b"+p+"*=d}");o.push("return new "+e+"(this.data,"+i.map(function(y){return"a"+y}).join(",")+","+i.map(function(y){return"b"+y}).join(",")+",c)}");for(var f=new Array(t),h=new Array(t),p=0;p<t;++p)f[p]="a[i"+p+"]",h[p]="b[i"+p+"]";o.push("proto.transpose=function "+e+"_transpose("+a+"){"+a.map(function(y,g){return y+"=("+y+"===undefined?"+g+":"+y+"|0)"}).join(";"),"var a=this.shape,b=this.stride;return new "+e+"(this.data,"+f.join(",")+","+h.join(",")+",this.offset)}"),o.push("proto.pick=function "+e+"_pick("+a+"){var a=[],b=[],c=this.offset");for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'&&i"+p+">=0){c=(c+this.stride["+p+"]*i"+p+")|0}else{a.push(this.shape["+p+"]);b.push(this.stride["+p+"])}");o.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),o.push("return function construct_"+e+"(data,shape,stride,offset){return new "+e+"(data,"+i.map(function(y){return"shape["+y+"]"}).join(",")+","+i.map(function(y){return"stride["+y+"]"}).join(",")+",offset)}");var m=new Function("CTOR_LIST","ORDER",o.join(`
|
|
2
|
-
`));return m(td[n],W3)}function Y3(n){if(U3(n))return"buffer";if(H3)switch(Object.prototype.toString.call(n)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(n)?"array":"generic"}var td={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],bigint64:[],biguint64:[],buffer:[],generic:[]};function X3(n,t,e,r){if(n===void 0){var u=td.array[0];return u([])}else typeof n=="number"&&(n=[n]);t===void 0&&(t=[n.length]);var o=t.length;if(e===void 0){e=new Array(o);for(var i=o-1,a=1;i>=0;--i)e[i]=a,a*=t[i]}if(r===void 0){r=0;for(var i=0;i<o;++i)e[i]<0&&(r-=(t[i]-1)*e[i])}for(var s=Y3(n),l=td[s];l.length<=o+1;)l.push($3(s,l.length-1));var u=l[o+1];return u(n,t,e,r)}Hv.exports=X3});var Wv=Qt(($ce,qv)=>{"use strict";function Q3(n,t){for(var e=1,r=n.length,o=n[0],i=n[0],a=1;a<r;++a)if(i=o,o=n[a],t(o,i)){if(a===e){e++;continue}n[e++]=o}return n.length=e,n}function K3(n){for(var t=1,e=n.length,r=n[0],o=n[0],i=1;i<e;++i,o=r)if(o=r,r=n[i],r!==o){if(i===t){t++;continue}n[t++]=r}return n.length=t,n}function Z3(n,t,e){return n.length===0?n:t?(e||n.sort(t),Q3(n,t)):(e||n.sort(),K3(n))}qv.exports=Z3});var Xv=Qt((Yce,Yv)=>{"use strict";var J3=Wv();function $v(n,t,e){var r=n.length,o=t.arrayArgs.length,i=t.indexArgs.length>0,a=[],s=[],l=0,u=0,c,d;for(c=0;c<r;++c)s.push(["i",c,"=0"].join(""));for(d=0;d<o;++d)for(c=0;c<r;++c)u=l,l=n[c],c===0?s.push(["d",d,"s",c,"=t",d,"p",l].join("")):s.push(["d",d,"s",c,"=(t",d,"p",l,"-s",u,"*t",d,"p",u,")"].join(""));for(s.length>0&&a.push("var "+s.join(",")),c=r-1;c>=0;--c)l=n[c],a.push(["for(i",c,"=0;i",c,"<s",l,";++i",c,"){"].join(""));for(a.push(e),c=0;c<r;++c){for(u=l,l=n[c],d=0;d<o;++d)a.push(["p",d,"+=d",d,"s",c].join(""));i&&(c>0&&a.push(["index[",u,"]-=s",u].join("")),a.push(["++index[",l,"]"].join(""))),a.push("}")}return a.join(`
|
|
3
|
-
`)}function
|
|
4
|
-
`)}function
|
|
1
|
+
var H1=Object.create;var Yl=Object.defineProperty;var q1=Object.getOwnPropertyDescriptor;var W1=Object.getOwnPropertyNames;var $1=Object.getPrototypeOf,Y1=Object.prototype.hasOwnProperty;var X1=(n,t,e)=>t in n?Yl(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var Kt=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Q1=(n,t)=>{for(var e in t)Yl(n,e,{get:t[e],enumerable:!0})},K1=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of W1(t))!Y1.call(n,o)&&o!==e&&Yl(n,o,{get:()=>t[o],enumerable:!(r=q1(t,o))||r.enumerable});return n};var Zt=(n,t,e)=>(e=n!=null?H1($1(n)):{},K1(t||!n||!n.__esModule?Yl(e,"default",{value:n,enumerable:!0}):e,n));var Bt=(n,t,e)=>(X1(n,typeof t!="symbol"?t+"":t,e),e);var R0=Kt((Ip,L0)=>{(function(n,t){typeof Ip=="object"?L0.exports=t():typeof define=="function"&&define.amd?define(t):n.Alea=t()})(Ip,function(){"use strict";return n.importState=function(e){var r=new n;return r.importState(e),r},n;function n(){return function(e){var r=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=t();r=s(" "),o=s(" "),i=s(" ");for(var l=0;l<e.length;l++)r-=s(e[l]),r<0&&(r+=1),o-=s(e[l]),o<0&&(o+=1),i-=s(e[l]),i<0&&(i+=1);s=null;var u=function(){var c=2091639*r+a*23283064365386963e-26;return r=o,o=i,i=c-(a=c|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[r,o,i,a]},u.importState=function(c){r=+c[0]||0,o=+c[1]||0,i=+c[2]||0,a=+c[3]||0},u}(Array.prototype.slice.call(arguments))}function t(){var e=4022871197,r=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 r.version="Mash 0.9",r}})});var F0=Kt((du,k0)=>{(function(n,t){typeof du=="object"&&typeof k0<"u"?t(du):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(du,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var a,s,l,u,c,d,p,f,h,m,y,g,b=t[0].length,w=t.length;if(w<b)throw new TypeError("Invalid matrix: m < n");for(var _=[],S=[],P=[],O=e==="f"?w:b,x=m=p=0;x<w;x++)S[x]=new Array(O).fill(0);for(x=0;x<b;x++)P[x]=new Array(b).fill(0);var D,N=new Array(b).fill(0);for(x=0;x<w;x++)for(a=0;a<b;a++)S[x][a]=t[x][a];for(x=0;x<b;x++){for(_[x]=p,h=0,l=x+1,a=x;a<w;a++)h+=Math.pow(S[a][x],2);if(h<i)p=0;else for(f=(d=S[x][x])*(p=d<0?Math.sqrt(h):-Math.sqrt(h))-h,S[x][x]=d-p,a=l;a<b;a++){for(h=0,s=x;s<w;s++)h+=S[s][x]*S[s][a];for(d=h/f,s=x;s<w;s++)S[s][a]=S[s][a]+d*S[s][x]}for(N[x]=p,h=0,a=l;a<b;a++)h+=Math.pow(S[x][a],2);if(h<i)p=0;else{for(f=(d=S[x][x+1])*(p=d<0?Math.sqrt(h):-Math.sqrt(h))-h,S[x][x+1]=d-p,a=l;a<b;a++)_[a]=S[x][a]/f;for(a=l;a<w;a++){for(h=0,s=l;s<b;s++)h+=S[a][s]*S[x][s];for(s=l;s<b;s++)S[a][s]=S[a][s]+h*_[s]}}m<(y=Math.abs(N[x])+Math.abs(_[x]))&&(m=y)}if(r)for(x=b-1;0<=x;x--){if(p!==0){for(f=S[x][x+1]*p,a=l;a<b;a++)P[a][x]=S[x][a]/f;for(a=l;a<b;a++){for(h=0,s=l;s<b;s++)h+=S[x][s]*P[s][a];for(s=l;s<b;s++)P[s][a]=P[s][a]+h*P[s][x]}}for(a=l;a<b;a++)P[x][a]=0,P[a][x]=0;P[x][x]=1,p=_[x],l=x}if(e){if(e==="f")for(x=b;x<w;x++){for(a=b;a<w;a++)S[x][a]=0;S[x][x]=1}for(x=b-1;0<=x;x--){for(l=x+1,p=N[x],a=l;a<O;a++)S[x][a]=0;if(p!==0){for(f=S[x][x]*p,a=l;a<O;a++){for(h=0,s=l;s<w;s++)h+=S[s][x]*S[s][a];for(d=h/f,s=x;s<w;s++)S[s][a]=S[s][a]+d*S[s][x]}for(a=x;a<w;a++)S[a][x]=S[a][x]/p}else for(a=x;a<w;a++)S[a][x]=0;S[x][x]=S[x][x]+1}}for(o*=m,s=b-1;0<=s;s--)for(var T=0;T<50;T++){for(D=!1,l=s;0<=l;l--){if(Math.abs(_[l])<=o){D=!0;break}if(Math.abs(N[l-1])<=o)break}if(!D){for(c=0,u=l-(h=1),x=l;x<s+1&&(d=h*_[x],_[x]=c*_[x],!(Math.abs(d)<=o));x++)if(p=N[x],N[x]=Math.sqrt(d*d+p*p),c=p/(f=N[x]),h=-d/f,e)for(a=0;a<w;a++)y=S[a][u],g=S[a][x],S[a][u]=y*c+g*h,S[a][x]=-y*h+g*c}if(g=N[s],l===s){if(g<0&&(N[s]=-g,r))for(a=0;a<b;a++)P[a][s]=-P[a][s];break}for(m=N[l],d=(((y=N[s-1])-g)*(y+g)+((p=_[s-1])-(f=_[s]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((m-g)*(m+g)+f*(y/(d<0?d-p:d+p)-f))/m,x=l+(h=c=1);x<s+1;x++){if(p=_[x],y=N[x],f=h*p,p*=c,g=Math.sqrt(d*d+f*f),d=m*(c=d/(_[x-1]=g))+p*(h=f/g),p=-m*h+p*c,f=y*h,y*=c,r)for(a=0;a<b;a++)m=P[a][x-1],g=P[a][x],P[a][x-1]=m*c+g*h,P[a][x]=-m*h+g*c;if(g=Math.sqrt(d*d+f*f),d=(c=d/(N[x-1]=g))*p+(h=f/g)*y,m=-h*p+c*y,e)for(a=0;a<w;a++)y=S[a][x-1],g=S[a][x],S[a][x-1]=y*c+g*h,S[a][x]=-y*h+g*c}_[l]=0,_[s]=d,N[s]=m}for(x=0;x<b;x++)N[x]<o&&(N[x]=0);return{u:S,q:N,v:P}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var vx=Kt((of,nf)=>{(function(n,t){typeof of=="object"&&typeof nf<"u"?nf.exports=t():typeof define=="function"&&define.amd?define(t):(n=n||self,n.TinyQueue=t())})(of,function(){"use strict";var n=function(r,o){if(r===void 0&&(r=[]),o===void 0&&(o=t),this.data=r,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(r){this.data.push(r),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var r=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),r}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(r){for(var o=this,i=o.data,a=o.compare,s=i[r];r>0;){var l=r-1>>1,u=i[l];if(a(s,u)>=0)break;i[r]=u,r=l}i[r]=s},n.prototype._down=function(r){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,l=i[r];r<s;){var u=(r<<1)+1,c=i[u],d=u+1;if(d<this.length&&a(i[d],c)<0&&(u=d,c=i[d]),a(c,l)>=0)break;i[r]=c,r=u}i[r]=l};function t(e,r){return e<r?-1:e>r?1:0}return n})});var wx=Kt((JW,af)=>{"use strict";var wu=vx();wu.default&&(wu=wu.default);af.exports=Sx;af.exports.default=Sx;function Sx(n,t,e){t=t||1;for(var r,o,i,a,s=0;s<n[0].length;s++){var l=n[0][s];(!s||l[0]<r)&&(r=l[0]),(!s||l[1]<o)&&(o=l[1]),(!s||l[0]>i)&&(i=l[0]),(!s||l[1]>a)&&(a=l[1])}var u=i-r,c=a-o,d=Math.min(u,c),p=d/2;if(d===0){var f=[r,o];return f.distance=0,f}for(var h=new wu(void 0,fM),m=r;m<i;m+=d)for(var y=o;y<a;y+=d)h.push(new On(m+p,y+p,p,n));var g=mM(n),b=new On(r+u/2,o+c/2,0,n);b.d>g.d&&(g=b);for(var w=h.length;h.length;){var _=h.pop();_.d>g.d&&(g=_,e&&console.log("found best %d after %d probes",Math.round(1e4*_.d)/1e4,w)),!(_.max-g.d<=t)&&(p=_.h/2,h.push(new On(_.x-p,_.y-p,p,n)),h.push(new On(_.x+p,_.y-p,p,n)),h.push(new On(_.x-p,_.y+p,p,n)),h.push(new On(_.x+p,_.y+p,p,n)),w+=4)}e&&(console.log("num probes: "+w),console.log("best distance: "+g.d));var S=[g.x,g.y];return S.distance=g.d,S}function fM(n,t){return t.max-n.max}function On(n,t,e,r){this.x=n,this.y=t,this.h=e,this.d=hM(n,t,r),this.max=this.d+this.h*Math.SQRT2}function hM(n,t,e){for(var r=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,l=a.length,u=l-1;s<l;u=s++){var c=a[s],d=a[u];c[1]>t!=d[1]>t&&n<(d[0]-c[0])*(t-c[1])/(d[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,yM(n,t,c,d))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function mM(n){for(var t=0,e=0,r=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var l=o[i],u=o[s],c=l[0]*u[1]-u[0]*l[1];e+=(l[0]+u[0])*c,r+=(l[1]+u[1])*c,t+=c*3}return t===0?new On(o[0][0],o[0][1],0,n):new On(e/t,r/t,0,n)}function yM(n,t,e,r){var o=e[0],i=e[1],a=r[0]-o,s=r[1]-i;if(a!==0||s!==0){var l=((n-o)*a+(t-i)*s)/(a*a+s*s);l>1?(o=r[0],i=r[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=t-i,a*a+s*s}});var kb=Kt(Xu=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var c=this||t;return c._counter=1e3,c._html5AudioPool=[],c.html5PoolSize=10,c._codecs={},c._howls=[],c._muted=!1,c._volume=1,c._canPlayEvent="canplaythrough",c._navigator=typeof window<"u"&&window.navigator?window.navigator:null,c.masterGain=null,c.noAudio=!1,c.usingWebAudio=!0,c.autoSuspend=!0,c.ctx=null,c.autoUnlock=!0,c._setup(),c},volume:function(c){var d=this||t;if(c=parseFloat(c),d.ctx||u(),typeof c<"u"&&c>=0&&c<=1){if(d._volume=c,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(c,t.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=d._howls[p]._soundById(f[h]);m&&m._node&&(m._node.volume=m._volume*c)}return d}return d._volume},mute:function(c){var d=this||t;d.ctx||u(),d._muted=c,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(c?0:d._volume,t.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=d._howls[p]._soundById(f[h]);m&&m._node&&(m._node.muted=c?!0:m._muted)}return d},stop:function(){for(var c=this||t,d=0;d<c._howls.length;d++)c._howls[d].stop();return c},unload:function(){for(var c=this||t,d=c._howls.length-1;d>=0;d--)c._howls[d].unload();return c.usingWebAudio&&c.ctx&&typeof c.ctx.close<"u"&&(c.ctx.close(),c.ctx=null,u()),c},codecs:function(c){return(this||t)._codecs[c.replace(/^x-/,"")]},_setup:function(){var c=this||t;if(c.state=c.ctx&&c.ctx.state||"suspended",c._autoSuspend(),!c.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(c._canPlayEvent="canplay")}catch{c.noAudio=!0}else c.noAudio=!0;try{var d=new Audio;d.muted&&(c.noAudio=!0)}catch{}return c.noAudio||c._setupCodecs(),c},_setupCodecs:function(){var c=this||t,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return c}if(!d||typeof d.canPlayType!="function")return c;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=c._navigator?c._navigator.userAgent:"",h=f.match(/OPR\/([0-6].)/g),m=h&&parseInt(h[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),b=y&&g&&parseInt(g[1],10)<15;return c._codecs={mp3:!!(!m&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!b&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!b&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},c},_unlockAudio:function(){var c=this||t;if(!(c._audioUnlocked||!c.ctx)){c._audioUnlocked=!1,c.autoUnlock=!1,!c._mobileUnloaded&&c.ctx.sampleRate!==44100&&(c._mobileUnloaded=!0,c.unload()),c._scratchBuffer=c.ctx.createBuffer(1,1,22050);var d=function(p){for(;c._html5AudioPool.length<c.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,c._releaseHtml5Audio(f)}catch{c.noAudio=!0;break}for(var h=0;h<c._howls.length;h++)if(!c._howls[h]._webAudio)for(var m=c._howls[h]._getSoundIds(),y=0;y<m.length;y++){var g=c._howls[h]._soundById(m[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}c._autoResume();var b=c.ctx.createBufferSource();b.buffer=c._scratchBuffer,b.connect(c.ctx.destination),typeof b.start>"u"?b.noteOn(0):b.start(0),typeof c.ctx.resume=="function"&&c.ctx.resume(),b.onended=function(){b.disconnect(0),c._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var w=0;w<c._howls.length;w++)c._howls[w]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),c}},_obtainHtml5Audio:function(){var c=this||t;if(c._html5AudioPool.length)return c._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(c){var d=this||t;return c._unlocked&&d._html5AudioPool.push(c),d},_autoSuspend:function(){var c=this;if(!(!c.autoSuspend||!c.ctx||typeof c.ctx.suspend>"u"||!t.usingWebAudio)){for(var d=0;d<c._howls.length;d++)if(c._howls[d]._webAudio){for(var p=0;p<c._howls[d]._sounds.length;p++)if(!c._howls[d]._sounds[p]._paused)return c}return c._suspendTimer&&clearTimeout(c._suspendTimer),c._suspendTimer=setTimeout(function(){if(!!c.autoSuspend){c._suspendTimer=null,c.state="suspending";var f=function(){c.state="suspended",c._resumeAfterSuspend&&(delete c._resumeAfterSuspend,c._autoResume())};c.ctx.suspend().then(f,f)}},3e4),c}},_autoResume:function(){var c=this;if(!(!c.ctx||typeof c.ctx.resume>"u"||!t.usingWebAudio))return c.state==="running"&&c.ctx.state!=="interrupted"&&c._suspendTimer?(clearTimeout(c._suspendTimer),c._suspendTimer=null):c.state==="suspended"||c.state==="running"&&c.ctx.state==="interrupted"?(c.ctx.resume().then(function(){c.state="running";for(var d=0;d<c._howls.length;d++)c._howls[d]._emit("resume")}),c._suspendTimer&&(clearTimeout(c._suspendTimer),c._suspendTimer=null)):c.state==="suspending"&&(c._resumeAfterSuspend=!0),c}};var t=new n,e=function(c){var d=this;if(!c.src||c.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(c)};e.prototype={init:function(c){var d=this;return t.ctx||u(),d._autoplay=c.autoplay||!1,d._format=typeof c.format!="string"?c.format:[c.format],d._html5=c.html5||!1,d._muted=c.mute||!1,d._loop=c.loop||!1,d._pool=c.pool||5,d._preload=typeof c.preload=="boolean"||c.preload==="metadata"?c.preload:!0,d._rate=c.rate||1,d._sprite=c.sprite||{},d._src=typeof c.src!="string"?c.src:[c.src],d._volume=c.volume!==void 0?c.volume:1,d._xhr={method:c.xhr&&c.xhr.method?c.xhr.method:"GET",headers:c.xhr&&c.xhr.headers?c.xhr.headers:null,withCredentials:c.xhr&&c.xhr.withCredentials?c.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=c.onend?[{fn:c.onend}]:[],d._onfade=c.onfade?[{fn:c.onfade}]:[],d._onload=c.onload?[{fn:c.onload}]:[],d._onloaderror=c.onloaderror?[{fn:c.onloaderror}]:[],d._onplayerror=c.onplayerror?[{fn:c.onplayerror}]:[],d._onpause=c.onpause?[{fn:c.onpause}]:[],d._onplay=c.onplay?[{fn:c.onplay}]:[],d._onstop=c.onstop?[{fn:c.onstop}]:[],d._onmute=c.onmute?[{fn:c.onmute}]:[],d._onvolume=c.onvolume?[{fn:c.onvolume}]:[],d._onrate=c.onrate?[{fn:c.onrate}]:[],d._onseek=c.onseek?[{fn:c.onseek}]:[],d._onunlock=c.onunlock?[{fn:c.onunlock}]:[],d._onresume=[],d._webAudio=t.usingWebAudio&&!d._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var c=this,d=null;if(t.noAudio){c._emit("loaderror",null,"No audio support.");return}typeof c._src=="string"&&(c._src=[c._src]);for(var p=0;p<c._src.length;p++){var f,h;if(c._format&&c._format[p])f=c._format[p];else{if(h=c._src[p],typeof h!="string"){c._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(h),f||(f=/\.([^.]+)$/.exec(h.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&t.codecs(f)){d=c._src[p];break}}if(!d){c._emit("loaderror",null,"No codec support for selected audio sources.");return}return c._src=d,c._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(c._html5=!0,c._webAudio=!1),new r(c),c._webAudio&&i(c),c},play:function(c,d){var p=this,f=null;if(typeof c=="number")f=c,c=null;else{if(typeof c=="string"&&p._state==="loaded"&&!p._sprite[c])return null;if(typeof c>"u"&&(c="__default",!p._playLock)){for(var h=0,m=0;m<p._sounds.length;m++)p._sounds[m]._paused&&!p._sounds[m]._ended&&(h++,f=p._sounds[m]._id);h===1?c=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!c&&(c=y._sprite||"__default"),p._state!=="loaded"){y._sprite=c,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&t._autoResume();var b=Math.max(0,y._seek>0?y._seek:p._sprite[c][0]/1e3),w=Math.max(0,(p._sprite[c][0]+p._sprite[c][1])/1e3-b),_=w*1e3/Math.abs(y._rate),S=p._sprite[c][0]/1e3,P=(p._sprite[c][0]+p._sprite[c][1])/1e3;y._sprite=c,y._ended=!1;var O=function(){y._paused=!1,y._seek=b,y._start=S,y._stop=P,y._loop=!!(y._loop||p._sprite[c][2])};if(b>=P){p._ended(y);return}var x=y._node;if(p._webAudio){var D=function(){p._playLock=!1,O(),p._refreshBuffer(y);var E=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(E,t.ctx.currentTime),y._playStart=t.ctx.currentTime,typeof x.bufferSource.start>"u"?y._loop?x.bufferSource.noteGrainOn(0,b,86400):x.bufferSource.noteGrainOn(0,b,w):y._loop?x.bufferSource.start(0,b,86400):x.bufferSource.start(0,b,w),_!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),_)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?D():(p._playLock=!0,p.once("resume",D),p._clearTimer(y._id))}else{var N=function(){x.currentTime=b,x.muted=y._muted||p._muted||t._muted||x.muted,x.volume=y._volume*t.volume(),x.playbackRate=y._rate;try{var E=x.play();if(E&&typeof Promise<"u"&&(E instanceof Promise||typeof E.then=="function")?(p._playLock=!0,O(),E.then(function(){p._playLock=!1,x._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,O(),p._emit("play",y._id)),x.playbackRate=y._rate,x.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}c!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),_):(p._endTimers[y._id]=function(){p._ended(y),x.removeEventListener("ended",p._endTimers[y._id],!1)},x.addEventListener("ended",p._endTimers[y._id],!1))}catch(B){p._emit("playerror",y._id,B)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var T=window&&window.ejecta||!x.readyState&&t._navigator.isCocoonJS;if(x.readyState>=3||T)N();else{p._playLock=!0,p._state="loading";var I=function(){p._state="loaded",N(),x.removeEventListener(t._canPlayEvent,I,!1)};x.addEventListener(t._canPlayEvent,I,!1),p._clearTimer(y._id)}}return y._id},pause:function(c){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(c)}}),d;for(var p=d._getSoundIds(c),f=0;f<p.length;f++){d._clearTimer(p[f]);var h=d._soundById(p[f]);if(h&&!h._paused&&(h._seek=d.seek(p[f]),h._rateSeek=0,h._paused=!0,d._stopFade(p[f]),h._node))if(d._webAudio){if(!h._node.bufferSource)continue;typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)}else(!isNaN(h._node.duration)||h._node.duration===1/0)&&h._node.pause();arguments[1]||d._emit("pause",h?h._id:null)}return d},stop:function(c,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(c)}}),p;for(var f=p._getSoundIds(c),h=0;h<f.length;h++){p._clearTimer(f[h]);var m=p._soundById(f[h]);m&&(m._seek=m._start||0,m._rateSeek=0,m._paused=!0,m._ended=!0,p._stopFade(f[h]),m._node&&(p._webAudio?m._node.bufferSource&&(typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),p._cleanBuffer(m._node)):(!isNaN(m._node.duration)||m._node.duration===1/0)&&(m._node.currentTime=m._start||0,m._node.pause(),m._node.duration===1/0&&p._clearSound(m._node))),d||p._emit("stop",m._id))}return p},mute:function(c,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(c,d)}}),p;if(typeof d>"u")if(typeof c=="boolean")p._muted=c;else return p._muted;for(var f=p._getSoundIds(d),h=0;h<f.length;h++){var m=p._soundById(f[h]);m&&(m._muted=c,m._interval&&p._stopFade(m._id),p._webAudio&&m._node?m._node.gain.setValueAtTime(c?0:m._volume,t.ctx.currentTime):m._node&&(m._node.muted=t._muted?!0:c),p._emit("mute",m._id))}return p},volume:function(){var c=this,d=arguments,p,f;if(d.length===0)return c._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var h=c._getSoundIds(),m=h.indexOf(d[0]);m>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"volume",action:function(){c.volume.apply(c,d)}}),c;typeof f>"u"&&(c._volume=p),f=c._getSoundIds(f);for(var g=0;g<f.length;g++)y=c._soundById(f[g]),y&&(y._volume=p,d[2]||c._stopFade(f[g]),c._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,t.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*t.volume()),c._emit("volume",y._id))}else return y=f?c._soundById(f):c._sounds[0],y?y._volume:0;return c},fade:function(c,d,p,f){var h=this;if(h._state!=="loaded"||h._playLock)return h._queue.push({event:"fade",action:function(){h.fade(c,d,p,f)}}),h;c=Math.min(Math.max(0,parseFloat(c)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),h.volume(c,f);for(var m=h._getSoundIds(f),y=0;y<m.length;y++){var g=h._soundById(m[y]);if(g){if(f||h._stopFade(m[y]),h._webAudio&&!g._muted){var b=t.ctx.currentTime,w=b+p/1e3;g._volume=c,g._node.gain.setValueAtTime(c,b),g._node.gain.linearRampToValueAtTime(d,w)}h._startFadeInterval(g,c,d,p,m[y],typeof f>"u")}}return h},_startFadeInterval:function(c,d,p,f,h,m){var y=this,g=d,b=p-d,w=Math.abs(b/.01),_=Math.max(4,w>0?f/w:f),S=Date.now();c._fadeTo=p,c._interval=setInterval(function(){var P=(Date.now()-S)/f;S=Date.now(),g+=b*P,g=Math.round(g*100)/100,b<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?c._volume=g:y.volume(g,c._id,!0),m&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(c._interval),c._interval=null,c._fadeTo=null,y.volume(p,c._id),y._emit("fade",c._id))},_)},_stopFade:function(c){var d=this,p=d._soundById(c);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,c),p._fadeTo=null,d._emit("fade",c)),d},loop:function(){var c=this,d=arguments,p,f,h;if(d.length===0)return c._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],c._loop=p;else return h=c._soundById(parseInt(d[0],10)),h?h._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var m=c._getSoundIds(f),y=0;y<m.length;y++)h=c._soundById(m[y]),h&&(h._loop=p,c._webAudio&&h._node&&h._node.bufferSource&&(h._node.bufferSource.loop=p,p&&(h._node.bufferSource.loopStart=h._start||0,h._node.bufferSource.loopEnd=h._stop,c.playing(m[y])&&(c.pause(m[y],!0),c.play(m[y],!0)))));return c},rate:function(){var c=this,d=arguments,p,f;if(d.length===0)f=c._sounds[0]._id;else if(d.length===1){var h=c._getSoundIds(),m=h.indexOf(d[0]);m>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"rate",action:function(){c.rate.apply(c,d)}}),c;typeof f>"u"&&(c._rate=p),f=c._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=c._soundById(f[g]),y){c.playing(f[g])&&(y._rateSeek=c.seek(f[g]),y._playStart=c._webAudio?t.ctx.currentTime:y._playStart),y._rate=p,c._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,t.ctx.currentTime):y._node&&(y._node.playbackRate=p);var b=c.seek(f[g]),w=(c._sprite[y._sprite][0]+c._sprite[y._sprite][1])/1e3-b,_=w*1e3/Math.abs(y._rate);(c._endTimers[f[g]]||!y._paused)&&(c._clearTimer(f[g]),c._endTimers[f[g]]=setTimeout(c._ended.bind(c,y),_)),c._emit("rate",y._id)}}else return y=c._soundById(f),y?y._rate:c._rate;return c},seek:function(){var c=this,d=arguments,p,f;if(d.length===0)c._sounds.length&&(f=c._sounds[0]._id);else if(d.length===1){var h=c._getSoundIds(),m=h.indexOf(d[0]);m>=0?f=parseInt(d[0],10):c._sounds.length&&(f=c._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(c._state!=="loaded"||c._playLock))return c._queue.push({event:"seek",action:function(){c.seek.apply(c,d)}}),c;var y=c._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=c.playing(f);g&&c.pause(f,!0),y._seek=p,y._ended=!1,c._clearTimer(f),!c._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var b=function(){g&&c.play(f,!0),c._emit("seek",f)};if(g&&!c._webAudio){var w=function(){c._playLock?setTimeout(w,0):b()};setTimeout(w,0)}else b()}else if(c._webAudio){var _=c.playing(f)?t.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+_*Math.abs(y._rate))}else return y._node.currentTime;return c},playing:function(c){var d=this;if(typeof c=="number"){var p=d._soundById(c);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(c){var d=this,p=d._duration,f=d._soundById(c);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var c=this,d=c._sounds,p=0;p<d.length;p++)d[p]._paused||c.stop(d[p]._id),c._webAudio||(c._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(t._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),t._releaseHtml5Audio(d[p]._node)),delete d[p]._node,c._clearTimer(d[p]._id);var f=t._howls.indexOf(c);f>=0&&t._howls.splice(f,1);var h=!0;for(p=0;p<t._howls.length;p++)if(t._howls[p]._src===c._src||c._src.indexOf(t._howls[p]._src)>=0){h=!1;break}return o&&h&&delete o[c._src],t.noAudio=!1,c._state="unloaded",c._sounds=[],c=null,null},on:function(c,d,p,f){var h=this,m=h["_on"+c];return typeof d=="function"&&m.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),h},off:function(c,d,p){var f=this,h=f["_on"+c],m=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(m=0;m<h.length;m++){var y=p===h[m].id;if(d===h[m].fn&&y||!d&&y){h.splice(m,1);break}}else if(c)f["_on"+c]=[];else{var g=Object.keys(f);for(m=0;m<g.length;m++)g[m].indexOf("_on")===0&&Array.isArray(f[g[m]])&&(f[g[m]]=[])}return f},once:function(c,d,p){var f=this;return f.on(c,d,p,1),f},_emit:function(c,d,p){for(var f=this,h=f["_on"+c],m=h.length-1;m>=0;m--)(!h[m].id||h[m].id===d||c==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,h[m].fn),0),h[m].once&&f.off(c,h[m].fn,h[m].id));return f._loadQueue(c),f},_loadQueue:function(c){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===c&&(d._queue.shift(),d._loadQueue()),c||p.action()}return d},_ended:function(c){var d=this,p=c._sprite;if(!d._webAudio&&c._node&&!c._node.paused&&!c._node.ended&&c._node.currentTime<c._stop)return setTimeout(d._ended.bind(d,c),100),d;var f=!!(c._loop||d._sprite[p][2]);if(d._emit("end",c._id),!d._webAudio&&f&&d.stop(c._id,!0).play(c._id),d._webAudio&&f){d._emit("play",c._id),c._seek=c._start||0,c._rateSeek=0,c._playStart=t.ctx.currentTime;var h=(c._stop-c._start)*1e3/Math.abs(c._rate);d._endTimers[c._id]=setTimeout(d._ended.bind(d,c),h)}return d._webAudio&&!f&&(c._paused=!0,c._ended=!0,c._seek=c._start||0,c._rateSeek=0,d._clearTimer(c._id),d._cleanBuffer(c._node),t._autoSuspend()),!d._webAudio&&!f&&d.stop(c._id,!0),d},_clearTimer:function(c){var d=this;if(d._endTimers[c]){if(typeof d._endTimers[c]!="function")clearTimeout(d._endTimers[c]);else{var p=d._soundById(c);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[c],!1)}delete d._endTimers[c]}return d},_soundById:function(c){for(var d=this,p=0;p<d._sounds.length;p++)if(c===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var c=this;c._drain();for(var d=0;d<c._sounds.length;d++)if(c._sounds[d]._ended)return c._sounds[d].reset();return new r(c)},_drain:function(){var c=this,d=c._pool,p=0,f=0;if(!(c._sounds.length<d)){for(f=0;f<c._sounds.length;f++)c._sounds[f]._ended&&p++;for(f=c._sounds.length-1;f>=0;f--){if(p<=d)return;c._sounds[f]._ended&&(c._webAudio&&c._sounds[f]._node&&c._sounds[f]._node.disconnect(0),c._sounds.splice(f,1),p--)}}},_getSoundIds:function(c){var d=this;if(typeof c>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[c]},_refreshBuffer:function(c){var d=this;return c._node.bufferSource=t.ctx.createBufferSource(),c._node.bufferSource.buffer=o[d._src],c._panner?c._node.bufferSource.connect(c._panner):c._node.bufferSource.connect(c._node),c._node.bufferSource.loop=c._loop,c._loop&&(c._node.bufferSource.loopStart=c._start||0,c._node.bufferSource.loopEnd=c._stop||0),c._node.bufferSource.playbackRate.setValueAtTime(c._rate,t.ctx.currentTime),d},_cleanBuffer:function(c){var d=this,p=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&c.bufferSource&&(c.bufferSource.onended=null,c.bufferSource.disconnect(0),p))try{c.bufferSource.buffer=t._scratchBuffer}catch{}return c.bufferSource=null,d},_clearSound:function(c){var d=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);d||(c.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(c){this._parent=c,this.init()};r.prototype={init:function(){var c=this,d=c._parent;return c._muted=d._muted,c._loop=d._loop,c._volume=d._volume,c._rate=d._rate,c._seek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,d._sounds.push(c),c.create(),c},create:function(){var c=this,d=c._parent,p=t._muted||c._muted||c._parent._muted?0:c._volume;return d._webAudio?(c._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),c._node.gain.setValueAtTime(p,t.ctx.currentTime),c._node.paused=!0,c._node.connect(t.masterGain)):t.noAudio||(c._node=t._obtainHtml5Audio(),c._errorFn=c._errorListener.bind(c),c._node.addEventListener("error",c._errorFn,!1),c._loadFn=c._loadListener.bind(c),c._node.addEventListener(t._canPlayEvent,c._loadFn,!1),c._endFn=c._endListener.bind(c),c._node.addEventListener("ended",c._endFn,!1),c._node.src=d._src,c._node.preload=d._preload===!0?"auto":d._preload,c._node.volume=p*t.volume(),c._node.load()),c},reset:function(){var c=this,d=c._parent;return c._muted=d._muted,c._loop=d._loop,c._volume=d._volume,c._rate=d._rate,c._seek=0,c._rateSeek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,c},_errorListener:function(){var c=this;c._parent._emit("loaderror",c._id,c._node.error?c._node.error.code:0),c._node.removeEventListener("error",c._errorFn,!1)},_loadListener:function(){var c=this,d=c._parent;d._duration=Math.ceil(c._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),c._node.removeEventListener(t._canPlayEvent,c._loadFn,!1)},_endListener:function(){var c=this,d=c._parent;d._duration===1/0&&(d._duration=Math.ceil(c._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(c)),c._node.removeEventListener("ended",c._endFn,!1)}};var o={},i=function(c){var d=c._src;if(o[d]){c._duration=o[d].duration,l(c);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),h=0;h<p.length;++h)f[h]=p.charCodeAt(h);s(f.buffer,c)}else{var m=new XMLHttpRequest;m.open(c._xhr.method,d,!0),m.withCredentials=c._xhr.withCredentials,m.responseType="arraybuffer",c._xhr.headers&&Object.keys(c._xhr.headers).forEach(function(y){m.setRequestHeader(y,c._xhr.headers[y])}),m.onload=function(){var y=(m.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){c._emit("loaderror",null,"Failed loading audio file with status: "+m.status+".");return}s(m.response,c)},m.onerror=function(){c._webAudio&&(c._html5=!0,c._webAudio=!1,c._sounds=[],delete o[d],c.load())},a(m)}},a=function(c){try{c.send()}catch{c.onerror()}},s=function(c,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(h){h&&d._sounds.length>0?(o[d._src]=h,l(d,h)):p()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(c).then(f).catch(p):t.ctx.decodeAudioData(c,f,p)},l=function(c,d){d&&!c._duration&&(c._duration=d.duration),Object.keys(c._sprite).length===0&&(c._sprite={__default:[0,c._duration*1e3]}),c._state!=="loaded"&&(c._state="loaded",c._emit("load"),c._loadQueue())},u=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var c=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),d=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(c&&p&&p<9){var f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof Xu<"u"&&(Xu.Howler=t,Xu.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=t,window.Howl=e,window.Sound=r)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var r=e._howls.length-1;r>=0;r--)e._howls[r].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,e,r],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(t,e,r,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var l=s._orientation;if(e=typeof e!="number"?l[1]:e,r=typeof r!="number"?l[2]:r,o=typeof o!="number"?l[3]:o,i=typeof i!="number"?l[4]:i,a=typeof a!="number"?l[5]:a,typeof t=="number")s._orientation=[t,e,r,o,i,a],typeof s.ctx.listener.forwardX<"u"?(s.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(t,e,r,o,i,a);else return l;return s},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var i=r._getSoundIds(e),a=0;a<i.length;a++){var s=r._soundById(i[a]);if(s)if(typeof t=="number")s._stereo=t,s._pos=[t,0,0],s._node&&(s._pannerAttr.panningModel="equalpower",(!s._panner||!s._panner.pan)&&n(s,o),o==="spatial"?typeof s._panner.positionX<"u"?(s._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),s._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),s._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):s._panner.setPosition(t,0,0):s._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",s._id);else return s._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(t,e,r,o)}}),i;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")i._pos=[t,e,r];else return i._pos;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._pos=[t,e,r],l._node&&((!l._panner||l._panner.pan)&&n(l,"spatial"),typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):l._panner.setPosition(t,e,r)),i._emit("pos",l._id);else return l._pos}return i},Howl.prototype.orientation=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(t,e,r,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,r=typeof r!="number"?i._orientation[2]:r,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,r];else return i._orientation;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._orientation=[t,e,r],l._node&&(l._panner||(l._pos||(l._pos=i._pos||[0,0,-.5]),n(l,"spatial")),typeof l._panner.orientationX<"u"?(l._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):l._panner.setOrientation(t,e,r)),i._emit("orientation",l._id);else return l._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")r=e[0],typeof o>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var a=t._getSoundIds(o),s=0;s<a.length;s++)if(i=t._soundById(a[s]),i){var l=i._pannerAttr;l={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:l.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:l.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:l.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:l.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:l.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:l.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:l.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:l.panningModel};var u=i._panner;u?(u.coneInnerAngle=l.coneInnerAngle,u.coneOuterAngle=l.coneOuterAngle,u.coneOuterGain=l.coneOuterGain,u.distanceModel=l.distanceModel,u.maxDistance=l.maxDistance,u.refDistance=l.refDistance,u.rolloffFactor=l.rolloffFactor,u.panningModel=l.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),n(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,r=e._parent;e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,t.call(this),e._stereo?r.stereo(e._stereo):e._pos&&r.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,r=e._parent;return e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,e._stereo?r.stereo(e._stereo):e._pos?r.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,r._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var n=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var Zv=Kt((wse,Kv)=>{"use strict";function JN(n,t){function e(){this.constructor=n}e.prototype=t.prototype,n.prototype=new e}function _i(n,t,e,r){this.message=n,this.expected=t,this.found=e,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,_i)}JN(_i,Error);_i.buildMessage=function(n,t){var e={literal:function(u){return'"'+o(u.text)+'"'},class:function(u){var c="",d;for(d=0;d<u.parts.length;d++)c+=u.parts[d]instanceof Array?i(u.parts[d][0])+"-"+i(u.parts[d][1]):i(u.parts[d]);return"["+(u.inverted?"^":"")+c+"]"},any:function(u){return"any character"},end:function(u){return"end of input"},other:function(u){return u.description}};function r(u){return u.charCodeAt(0).toString(16).toUpperCase()}function o(u){return u.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(c){return"\\x0"+r(c)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(c){return"\\x"+r(c)})}function i(u){return u.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(c){return"\\x0"+r(c)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(c){return"\\x"+r(c)})}function a(u){return e[u.type](u)}function s(u){var c=new Array(u.length),d,p;for(d=0;d<u.length;d++)c[d]=a(u[d]);if(c.sort(),c.length>0){for(d=1,p=1;d<c.length;d++)c[d-1]!==c[d]&&(c[p]=c[d],p++);c.length=p}switch(c.length){case 1:return c[0];case 2:return c[0]+" or "+c[1];default:return c.slice(0,-1).join(", ")+", or "+c[c.length-1]}}function l(u){return u?'"'+o(u)+'"':"end of input"}return"Expected "+s(n)+" but "+l(t)+" found."};function eD(n,t){t=t!==void 0?t:{};var e={},r={svg_path:Ls},o=Ls,i=function(v){if(!v)return[];for(var A=[],L=0;L<v.length;L++)A=A.concat.apply(A,v[L]);var M=A[0];return M&&M.code=="m"&&(delete M.relative,M.code="M"),A},a=function(v,A){return U1(v,A)},s=/^[Mm]/,l=Ke(["M","m"],!1,!1),u=function(v,A,L){var M=Di(v,[A]);return L&&(M=M.concat(Di(v=="M"?"L":"l",L[1]))),M},c=/^[Zz]/,d=Ke(["Z","z"],!1,!1),p=function(){return Di("Z")},f=/^[Ll]/,h=Ke(["L","l"],!1,!1),m=function(v,A){return Di(v,A)},y=/^[Hh]/,g=Ke(["H","h"],!1,!1),b=function(v,A){return Di(v,A.map(function(L){return{x:L}}))},w=/^[Vv]/,_=Ke(["V","v"],!1,!1),S=function(v,A){return Di(v,A.map(function(L){return{y:L}}))},P=/^[Cc]/,O=Ke(["C","c"],!1,!1),x=function(v,A,L){return{x1:v.x,y1:v.y,x2:A.x,y2:A.y,x:L.x,y:L.y}},D=/^[Ss]/,N=Ke(["S","s"],!1,!1),T=function(v,A){return{x2:v.x,y2:v.y,x:A.x,y:A.y}},I=/^[Qq]/,E=Ke(["Q","q"],!1,!1),B=function(v,A){return{x1:v.x,y1:v.y,x:A.x,y:A.y}},R=/^[Tt]/,k=Ke(["T","t"],!1,!1),V=/^[Aa]/,q=Ke(["A","a"],!1,!1),F=function(v,A,L,M,z,oe){return{rx:v,ry:A,xAxisRotation:L,largeArc:M,sweep:z,x:oe.x,y:oe.y}},U=function(v,A){return{x:v,y:A}},H=function(v){return v*1},$=function(v){return v.join("")*1},J=/^[01]/,K=Ke(["0","1"],!1,!1),X=function(v){return v=="1"},te=function(){return""},Y=",",ee=st(",",!1),Q=function(v){return v.join("")},W=".",ue=st(".",!1),le=/^[eE]/,ne=Ke(["e","E"],!1,!1),ce=/^[+\-]/,ae=Ke(["+","-"],!1,!1),he=/^[0-9]/,pe=Ke([["0","9"]],!1,!1),fe=function(v){return v.join("")},ge=/^[ \t\n\r]/,me=Ke([" "," ",`
|
|
2
|
+
`,"\r"],!1,!1),C=0,ie=0,De=[{line:1,column:1}],Ge=0,Ee=[],_e=0,Ct;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');o=r[t.startRule]}function Me(){return n.substring(ie,C)}function At(){return Wn(ie,C)}function Tt(v,A){throw A=A!==void 0?A:Wn(ie,C),Or([Ed(v)],n.substring(ie,C),A)}function qn(v,A){throw A=A!==void 0?A:Wn(ie,C),Bd(v,A)}function st(v,A){return{type:"literal",text:v,ignoreCase:A}}function Ke(v,A,L){return{type:"class",parts:v,inverted:A,ignoreCase:L}}function kr(){return{type:"any"}}function Dd(){return{type:"end"}}function Ed(v){return{type:"other",description:v}}function Ul(v){var A=De[v],L;if(A)return A;for(L=v-1;!De[L];)L--;for(A=De[L],A={line:A.line,column:A.column};L<v;)n.charCodeAt(L)===10?(A.line++,A.column=1):A.column++,L++;return De[v]=A,A}function Wn(v,A){var L=Ul(v),M=Ul(A);return{start:{offset:v,line:L.line,column:L.column},end:{offset:A,line:M.line,column:M.column}}}function mt(v){C<Ge||(C>Ge&&(Ge=C,Ee=[]),Ee.push(v))}function Bd(v,A){return new _i(v,null,null,A)}function Or(v,A,L){return new _i(_i.buildMessage(v,A),v,A,L)}function Ls(){var v,A,L,M,z;for(v=C,A=[],L=ke();L!==e;)A.push(L),L=ke();if(A!==e)if(L=Qt(),L===e&&(L=null),L!==e){for(M=[],z=ke();z!==e;)M.push(z),z=ke();M!==e?(ie=v,A=i(L),v=A):(C=v,v=e)}else C=v,v=e;else C=v,v=e;return v}function Qt(){var v,A,L,M,z,oe;if(v=C,A=$n(),A!==e){for(L=[],M=C,z=[],oe=ke();oe!==e;)z.push(oe),oe=ke();for(z!==e?(oe=$n(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=ke();oe!==e;)z.push(oe),oe=ke();z!==e?(oe=$n(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=v,A=a(A,L),v=A):(C=v,v=e)}else C=v,v=e;return v}function $n(){var v,A,L,M,z,oe;if(v=C,A=Ii(),A!==e){for(L=[],M=C,z=[],oe=ke();oe!==e;)z.push(oe),oe=ke();for(z!==e?(oe=Hl(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=ke();oe!==e;)z.push(oe),oe=ke();z!==e?(oe=Hl(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=v,A=a(A,L),v=A):(C=v,v=e)}else C=v,v=e;return v}function Hl(){var v;return v=T1(),v===e&&(v=M1(),v===e&&(v=I1(),v===e&&(v=N1(),v===e&&(v=D1(),v===e&&(v=B1(),v===e&&(v=R1(),v===e&&(v=z1(),v===e&&(v=k1())))))))),v}function Ii(){var v,A,L,M,z,oe,Ei;if(v=C,s.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(l)),A!==e){for(L=[],M=ke();M!==e;)L.push(M),M=ke();L!==e?(M=tr(),M!==e?(z=C,oe=nt(),oe===e&&(oe=null),oe!==e?(Ei=Yh(),Ei!==e?(oe=[oe,Ei],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ie=v,A=u(A,M,z),v=A):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)}else C=v,v=e;return v}function T1(){var v,A;return v=C,c.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(d)),A!==e&&(ie=v,A=p()),v=A,v}function M1(){var v,A,L,M;if(v=C,f.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(h)),A!==e){for(L=[],M=ke();M!==e;)L.push(M),M=ke();L!==e?(M=Yh(),M!==e?(ie=v,A=m(A,M),v=A):(C=v,v=e)):(C=v,v=e)}else C=v,v=e;return v}function Yh(){var v,A,L,M,z,oe;if(v=C,A=tr(),A!==e){for(L=[],M=C,z=nt(),z===e&&(z=null),z!==e?(oe=tr(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=nt(),z===e&&(z=null),z!==e?(oe=tr(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=v,A=a(A,L),v=A):(C=v,v=e)}else C=v,v=e;return v}function I1(){var v,A,L,M;if(v=C,y.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(g)),A!==e){for(L=[],M=ke();M!==e;)L.push(M),M=ke();L!==e?(M=Xh(),M!==e?(ie=v,A=b(A,M),v=A):(C=v,v=e)):(C=v,v=e)}else C=v,v=e;return v}function Xh(){var v,A,L,M,z,oe;if(v=C,A=Ni(),A!==e){for(L=[],M=C,z=nt(),z===e&&(z=null),z!==e?(oe=Ni(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=nt(),z===e&&(z=null),z!==e?(oe=Ni(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=v,A=a(A,L),v=A):(C=v,v=e)}else C=v,v=e;return v}function N1(){var v,A,L,M;if(v=C,w.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(_)),A!==e){for(L=[],M=ke();M!==e;)L.push(M),M=ke();L!==e?(M=Xh(),M!==e?(ie=v,A=S(A,M),v=A):(C=v,v=e)):(C=v,v=e)}else C=v,v=e;return v}function D1(){var v,A,L,M;if(v=C,P.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(O)),A!==e){for(L=[],M=ke();M!==e;)L.push(M),M=ke();L!==e?(M=E1(),M!==e?(ie=v,A=m(A,M),v=A):(C=v,v=e)):(C=v,v=e)}else C=v,v=e;return v}function E1(){var v,A,L,M,z,oe;if(v=C,A=Ld(),A!==e){for(L=[],M=C,z=nt(),z===e&&(z=null),z!==e?(oe=Ld(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=nt(),z===e&&(z=null),z!==e?(oe=Ld(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=v,A=a(A,L),v=A):(C=v,v=e)}else C=v,v=e;return v}function Ld(){var v,A,L,M,z,oe;return v=C,A=tr(),A!==e?(L=nt(),L===e&&(L=null),L!==e?(M=tr(),M!==e?(z=nt(),z===e&&(z=null),z!==e?(oe=tr(),oe!==e?(ie=v,A=x(A,M,oe),v=A):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)):(C=v,v=e),v}function B1(){var v,A,L,M;if(v=C,D.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(N)),A!==e){for(L=[],M=ke();M!==e;)L.push(M),M=ke();L!==e?(M=L1(),M!==e?(ie=v,A=m(A,M),v=A):(C=v,v=e)):(C=v,v=e)}else C=v,v=e;return v}function L1(){var v,A,L,M,z,oe;if(v=C,A=Rd(),A!==e){for(L=[],M=C,z=nt(),z===e&&(z=null),z!==e?(oe=Rd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=nt(),z===e&&(z=null),z!==e?(oe=Rd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=v,A=a(A,L),v=A):(C=v,v=e)}else C=v,v=e;return v}function Rd(){var v,A,L,M;return v=C,A=tr(),A!==e?(L=nt(),L===e&&(L=null),L!==e?(M=tr(),M!==e?(ie=v,A=T(A,M),v=A):(C=v,v=e)):(C=v,v=e)):(C=v,v=e),v}function R1(){var v,A,L,M;if(v=C,I.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(E)),A!==e){for(L=[],M=ke();M!==e;)L.push(M),M=ke();L!==e?(M=V1(),M!==e?(ie=v,A=m(A,M),v=A):(C=v,v=e)):(C=v,v=e)}else C=v,v=e;return v}function V1(){var v,A,L,M,z,oe;if(v=C,A=Vd(),A!==e){for(L=[],M=C,z=nt(),z===e&&(z=null),z!==e?(oe=Vd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=nt(),z===e&&(z=null),z!==e?(oe=Vd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=v,A=a(A,L),v=A):(C=v,v=e)}else C=v,v=e;return v}function Vd(){var v,A,L,M;return v=C,A=tr(),A!==e?(L=nt(),L===e&&(L=null),L!==e?(M=tr(),M!==e?(ie=v,A=B(A,M),v=A):(C=v,v=e)):(C=v,v=e)):(C=v,v=e),v}function z1(){var v,A,L,M;if(v=C,R.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(k)),A!==e){for(L=[],M=ke();M!==e;)L.push(M),M=ke();L!==e?(M=G1(),M!==e?(ie=v,A=m(A,M),v=A):(C=v,v=e)):(C=v,v=e)}else C=v,v=e;return v}function G1(){var v,A,L,M,z,oe;if(v=C,A=tr(),A!==e){for(L=[],M=C,z=nt(),z===e&&(z=null),z!==e?(oe=tr(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=nt(),z===e&&(z=null),z!==e?(oe=tr(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=v,A=a(A,L),v=A):(C=v,v=e)}else C=v,v=e;return v}function k1(){var v,A,L,M;if(v=C,V.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(q)),A!==e){for(L=[],M=ke();M!==e;)L.push(M),M=ke();L!==e?(M=F1(),M!==e?(ie=v,A=m(A,M),v=A):(C=v,v=e)):(C=v,v=e)}else C=v,v=e;return v}function F1(){var v,A,L,M,z,oe;if(v=C,A=zd(),A!==e){for(L=[],M=C,z=nt(),z===e&&(z=null),z!==e?(oe=zd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=nt(),z===e&&(z=null),z!==e?(oe=zd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=v,A=a(A,L),v=A):(C=v,v=e)}else C=v,v=e;return v}function zd(){var v,A,L,M,z,oe,Ei,kd,Wl,Fd,$l,jd;return v=C,A=Qh(),A!==e?(L=nt(),L===e&&(L=null),L!==e?(M=Qh(),M!==e?(z=nt(),z===e&&(z=null),z!==e?(oe=Ni(),oe!==e?(Ei=nt(),Ei!==e?(kd=Kh(),kd!==e?(Wl=nt(),Wl===e&&(Wl=null),Wl!==e?(Fd=Kh(),Fd!==e?($l=nt(),$l===e&&($l=null),$l!==e?(jd=tr(),jd!==e?(ie=v,A=F(A,M,oe,kd,Fd,jd),v=A):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)):(C=v,v=e)):(C=v,v=e),v}function tr(){var v,A,L,M;return v=C,A=Ni(),A!==e?(L=nt(),L===e&&(L=null),L!==e?(M=Ni(),M!==e?(ie=v,A=U(A,M),v=A):(C=v,v=e)):(C=v,v=e)):(C=v,v=e),v}function Qh(){var v,A;return v=C,A=Jh(),A===e&&(A=Yn()),A!==e&&(ie=v,A=H(A)),v=A,v}function Ni(){var v,A,L,M;return v=C,A=C,L=Gd(),L===e&&(L=null),L!==e?(M=Jh(),M!==e?(L=[L,M],A=L):(C=A,A=e)):(C=A,A=e),A===e&&(A=C,L=Gd(),L===e&&(L=null),L!==e?(M=Yn(),M!==e?(L=[L,M],A=L):(C=A,A=e)):(C=A,A=e)),A!==e&&(ie=v,A=$(A)),v=A,v}function Kh(){var v,A;return v=C,J.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(K)),A!==e&&(ie=v,A=X(A)),v=A,v}function nt(){var v,A,L,M,z;if(v=C,A=[],L=ke(),L!==e)for(;L!==e;)A.push(L),L=ke();else A=e;if(A!==e)if(L=Zh(),L===e&&(L=null),L!==e){for(M=[],z=ke();z!==e;)M.push(z),z=ke();M!==e?(A=[A,L,M],v=A):(C=v,v=e)}else C=v,v=e;else C=v,v=e;if(v===e){if(v=C,A=C,L=Zh(),L!==e){for(M=[],z=ke();z!==e;)M.push(z),z=ke();M!==e?(L=[L,M],A=L):(C=A,A=e)}else C=A,A=e;A!==e&&(ie=v,A=te()),v=A}return v}function Zh(){var v;return n.charCodeAt(C)===44?(v=Y,C++):(v=e,_e===0&&mt(ee)),v}function Jh(){var v,A,L,M;return v=C,A=C,L=j1(),L!==e?(M=em(),M===e&&(M=null),M!==e?(L=[L,M],A=L):(C=A,A=e)):(C=A,A=e),A===e&&(A=C,L=Yn(),L!==e?(M=em(),M!==e?(L=[L,M],A=L):(C=A,A=e)):(C=A,A=e)),A!==e&&(ie=v,A=Q(A)),v=A,v}function j1(){var v,A,L,M,z;return v=C,A=C,L=Yn(),L===e&&(L=null),L!==e?(n.charCodeAt(C)===46?(M=W,C++):(M=e,_e===0&&mt(ue)),M!==e?(z=Yn(),z!==e?(L=[L,M,z],A=L):(C=A,A=e)):(C=A,A=e)):(C=A,A=e),A===e&&(A=C,L=Yn(),L!==e?(n.charCodeAt(C)===46?(M=W,C++):(M=e,_e===0&&mt(ue)),M!==e?(L=[L,M],A=L):(C=A,A=e)):(C=A,A=e)),A!==e&&(ie=v,A=Q(A)),v=A,v}function em(){var v,A,L,M,z;return v=C,A=C,le.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,_e===0&&mt(ne)),L!==e?(M=Gd(),M===e&&(M=null),M!==e?(z=Yn(),z!==e?(L=[L,M,z],A=L):(C=A,A=e)):(C=A,A=e)):(C=A,A=e),A!==e&&(ie=v,A=Q(A)),v=A,v}function Gd(){var v;return ce.test(n.charAt(C))?(v=n.charAt(C),C++):(v=e,_e===0&&mt(ae)),v}function Yn(){var v,A,L;if(v=C,A=[],he.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,_e===0&&mt(pe)),L!==e)for(;L!==e;)A.push(L),he.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,_e===0&&mt(pe));else A=e;return A!==e&&(ie=v,A=fe(A)),v=A,v}function ke(){var v,A;return v=C,ge.test(n.charAt(C))?(A=n.charAt(C),C++):(A=e,_e===0&&mt(me)),A!==e&&(ie=v,A=te()),v=A,v}function U1(v,A){if(!A)return[v];for(var L=[v],M=0,z=A.length;M<z;M++)L[M+1]=A[M][1];return L}var ql={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 tm in ql)ql[tm.toUpperCase()]=ql[tm];function Di(v,A){A||(A=[{}]);for(var L=A.length;L--;){var M={code:v,command:ql[v]};v==v.toLowerCase()&&(M.relative=!0);for(var z in A[L])M[z]=A[L][z];A[L]=M}return A}if(Ct=o(),Ct!==e&&C===n.length)return Ct;throw Ct!==e&&C<n.length&&mt(Dd()),Or(Ee,Ge<n.length?n.charAt(Ge):null,Ge<n.length?Wn(Ge,Ge+1):Wn(Ge,Ge))}Kv.exports={SyntaxError:_i,parse:eD}});var eS=Kt((Ase,Jv)=>{var md=Zv().parse;md.parseSVG=md;md.makeAbsolute=tD;Jv.exports=md;function tD(n){var t,e={x:0,y:0},r={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return n.forEach(function(o){o.command==="moveto"&&(t=o),o.x0=e.x,o.y0=e.y;for(var i in r)i in o&&(o[i]+=o.relative?o[r[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=t.x,o.y=t.y),e=o}),n}});var ES=Kt((hde,DS)=>{"use strict";function YD(n){for(var t=new Array(n),e=0;e<n;++e)t[e]=e;return t}DS.exports=YD});var RS=Kt((mde,LS)=>{LS.exports=function(n){return n!=null&&(BS(n)||XD(n)||!!n._isBuffer)};function BS(n){return!!n.constructor&&typeof n.constructor.isBuffer=="function"&&n.constructor.isBuffer(n)}function XD(n){return typeof n.readFloatLE=="function"&&typeof n.slice=="function"&&BS(n.slice(0,0))}});var Ds=Kt((yde,VS)=>{var QD=ES(),KD=RS(),ZD=typeof Float64Array<"u";function JD(n,t){return n[0]-t[0]}function eE(){var n=this.stride,t=new Array(n.length),e;for(e=0;e<t.length;++e)t[e]=[Math.abs(n[e]),e];t.sort(JD);var r=new Array(t.length);for(e=0;e<r.length;++e)r[e]=t[e][1];return r}function tE(n,t){var e=["View",t,"d",n].join("");t<0&&(e="View_Nil"+n);var r=n==="generic";if(t===-1){var o="function "+e+"(a){this.data=a;};var proto="+e+".prototype;proto.dtype='"+n+"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new "+e+"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_"+e+"(a){return new "+e+"(a);}",m=new Function(o);return m()}else if(t===0){var o="function "+e+"(a,d) {this.data = a;this.offset = d};var proto="+e+".prototype;proto.dtype='"+n+"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function "+e+"_copy() {return new "+e+"(this.data,this.offset)};proto.pick=function "+e+"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function "+e+"_get(){return "+(r?"this.data.get(this.offset)":"this.data[this.offset]")+"};proto.set=function "+e+"_set(v){return "+(r?"this.data.set(this.offset,v)":"this.data[this.offset]=v")+"};return function construct_"+e+"(a,b,c,d){return new "+e+"(a,d)}",m=new Function("TrivialArray",o);return m(Od[n][0])}var o=["'use strict'"],i=QD(t),a=i.map(function(y){return"i"+y}),s="this.offset+"+i.map(function(y){return"this.stride["+y+"]*i"+y}).join("+"),l=i.map(function(y){return"b"+y}).join(","),u=i.map(function(y){return"c"+y}).join(",");o.push("function "+e+"(a,"+l+","+u+",d){this.data=a","this.shape=["+l+"]","this.stride=["+u+"]","this.offset=d|0}","var proto="+e+".prototype","proto.dtype='"+n+"'","proto.dimension="+t),o.push("Object.defineProperty(proto,'size',{get:function "+e+"_size(){return "+i.map(function(y){return"this.shape["+y+"]"}).join("*"),"}})"),t===1?o.push("proto.order=[0]"):(o.push("Object.defineProperty(proto,'order',{get:"),t<4?(o.push("function "+e+"_order(){"),t===2?o.push("return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})"):t===3&&o.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):o.push("ORDER})")),o.push("proto.set=function "+e+"_set("+a.join(",")+",v){"),r?o.push("return this.data.set("+s+",v)}"):o.push("return this.data["+s+"]=v}"),o.push("proto.get=function "+e+"_get("+a.join(",")+"){"),r?o.push("return this.data.get("+s+")}"):o.push("return this.data["+s+"]}"),o.push("proto.index=function "+e+"_index(",a.join(),"){return "+s+"}"),o.push("proto.hi=function "+e+"_hi("+a.join(",")+"){return new "+e+"(this.data,"+i.map(function(y){return["(typeof i",y,"!=='number'||i",y,"<0)?this.shape[",y,"]:i",y,"|0"].join("")}).join(",")+","+i.map(function(y){return"this.stride["+y+"]"}).join(",")+",this.offset)}");var c=i.map(function(y){return"a"+y+"=this.shape["+y+"]"}),d=i.map(function(y){return"c"+y+"=this.stride["+y+"]"});o.push("proto.lo=function "+e+"_lo("+a.join(",")+"){var b=this.offset,d=0,"+c.join(",")+","+d.join(","));for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'&&i"+p+">=0){d=i"+p+"|0;b+=c"+p+"*d;a"+p+"-=d}");o.push("return new "+e+"(this.data,"+i.map(function(y){return"a"+y}).join(",")+","+i.map(function(y){return"c"+y}).join(",")+",b)}"),o.push("proto.step=function "+e+"_step("+a.join(",")+"){var "+i.map(function(y){return"a"+y+"=this.shape["+y+"]"}).join(",")+","+i.map(function(y){return"b"+y+"=this.stride["+y+"]"}).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'){d=i"+p+"|0;if(d<0){c+=b"+p+"*(a"+p+"-1);a"+p+"=ceil(-a"+p+"/d)}else{a"+p+"=ceil(a"+p+"/d)}b"+p+"*=d}");o.push("return new "+e+"(this.data,"+i.map(function(y){return"a"+y}).join(",")+","+i.map(function(y){return"b"+y}).join(",")+",c)}");for(var f=new Array(t),h=new Array(t),p=0;p<t;++p)f[p]="a[i"+p+"]",h[p]="b[i"+p+"]";o.push("proto.transpose=function "+e+"_transpose("+a+"){"+a.map(function(y,g){return y+"=("+y+"===undefined?"+g+":"+y+"|0)"}).join(";"),"var a=this.shape,b=this.stride;return new "+e+"(this.data,"+f.join(",")+","+h.join(",")+",this.offset)}"),o.push("proto.pick=function "+e+"_pick("+a+"){var a=[],b=[],c=this.offset");for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'&&i"+p+">=0){c=(c+this.stride["+p+"]*i"+p+")|0}else{a.push(this.shape["+p+"]);b.push(this.stride["+p+"])}");o.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),o.push("return function construct_"+e+"(data,shape,stride,offset){return new "+e+"(data,"+i.map(function(y){return"shape["+y+"]"}).join(",")+","+i.map(function(y){return"stride["+y+"]"}).join(",")+",offset)}");var m=new Function("CTOR_LIST","ORDER",o.join(`
|
|
3
|
+
`));return m(Od[n],eE)}function rE(n){if(KD(n))return"buffer";if(ZD)switch(Object.prototype.toString.call(n)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(n)?"array":"generic"}var Od={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],bigint64:[],biguint64:[],buffer:[],generic:[]};function oE(n,t,e,r){if(n===void 0){var u=Od.array[0];return u([])}else typeof n=="number"&&(n=[n]);t===void 0&&(t=[n.length]);var o=t.length;if(e===void 0){e=new Array(o);for(var i=o-1,a=1;i>=0;--i)e[i]=a,a*=t[i]}if(r===void 0){r=0;for(var i=0;i<o;++i)e[i]<0&&(r-=(t[i]-1)*e[i])}for(var s=rE(n),l=Od[s];l.length<=o+1;)l.push(tE(s,l.length-1));var u=l[o+1];return u(n,t,e,r)}VS.exports=oE});var GS=Kt((gde,zS)=>{"use strict";function nE(n,t){for(var e=1,r=n.length,o=n[0],i=n[0],a=1;a<r;++a)if(i=o,o=n[a],t(o,i)){if(a===e){e++;continue}n[e++]=o}return n.length=e,n}function iE(n){for(var t=1,e=n.length,r=n[0],o=n[0],i=1;i<e;++i,o=r)if(o=r,r=n[i],r!==o){if(i===t){t++;continue}n[t++]=r}return n.length=t,n}function aE(n,t,e){return n.length===0?n:t?(e||n.sort(t),nE(n,t)):(e||n.sort(),iE(n))}zS.exports=aE});var jS=Kt((xde,FS)=>{"use strict";var sE=GS();function kS(n,t,e){var r=n.length,o=t.arrayArgs.length,i=t.indexArgs.length>0,a=[],s=[],l=0,u=0,c,d;for(c=0;c<r;++c)s.push(["i",c,"=0"].join(""));for(d=0;d<o;++d)for(c=0;c<r;++c)u=l,l=n[c],c===0?s.push(["d",d,"s",c,"=t",d,"p",l].join("")):s.push(["d",d,"s",c,"=(t",d,"p",l,"-s",u,"*t",d,"p",u,")"].join(""));for(s.length>0&&a.push("var "+s.join(",")),c=r-1;c>=0;--c)l=n[c],a.push(["for(i",c,"=0;i",c,"<s",l,";++i",c,"){"].join(""));for(a.push(e),c=0;c<r;++c){for(u=l,l=n[c],d=0;d<o;++d)a.push(["p",d,"+=d",d,"s",c].join(""));i&&(c>0&&a.push(["index[",u,"]-=s",u].join("")),a.push(["++index[",l,"]"].join(""))),a.push("}")}return a.join(`
|
|
4
|
+
`)}function lE(n,t,e,r){for(var o=t.length,i=e.arrayArgs.length,a=e.blockSize,s=e.indexArgs.length>0,l=[],u=0;u<i;++u)l.push(["var offset",u,"=p",u].join(""));for(var u=n;u<o;++u)l.push(["for(var j"+u+"=SS[",t[u],"]|0;j",u,">0;){"].join("")),l.push(["if(j",u,"<",a,"){"].join("")),l.push(["s",t[u],"=j",u].join("")),l.push(["j",u,"=0"].join("")),l.push(["}else{s",t[u],"=",a].join("")),l.push(["j",u,"-=",a,"}"].join("")),s&&l.push(["index[",t[u],"]=j",u].join(""));for(var u=0;u<i;++u){for(var c=["offset"+u],d=n;d<o;++d)c.push(["j",d,"*t",u,"p",t[d]].join(""));l.push(["p",u,"=(",c.join("+"),")"].join(""))}l.push(kS(t,e,r));for(var u=n;u<o;++u)l.push("}");return l.join(`
|
|
5
|
+
`)}function cE(n){for(var t=0,e=n[0].length;t<e;){for(var r=1;r<n.length;++r)if(n[r][t]!==n[0][t])return t;++t}return t}function zh(n,t,e){for(var r=n.body,o=[],i=[],a=0;a<n.args.length;++a){var s=n.args[a];if(!(s.count<=0)){var l=new RegExp(s.name,"g"),u="",c=t.arrayArgs.indexOf(a);switch(t.argTypes[a]){case"offset":var d=t.offsetArgIndex.indexOf(a),p=t.offsetArgs[d];c=p.array,u="+q"+d;case"array":u="p"+c+u;var f="l"+a,h="a"+c;if(t.arrayBlockIndices[c]===0)s.count===1?e[c]==="generic"?s.lvalue?(o.push(["var ",f,"=",h,".get(",u,")"].join("")),r=r.replace(l,f),i.push([h,".set(",u,",",f,")"].join(""))):r=r.replace(l,[h,".get(",u,")"].join("")):r=r.replace(l,[h,"[",u,"]"].join("")):e[c]==="generic"?(o.push(["var ",f,"=",h,".get(",u,")"].join("")),r=r.replace(l,f),s.lvalue&&i.push([h,".set(",u,",",f,")"].join(""))):(o.push(["var ",f,"=",h,"[",u,"]"].join("")),r=r.replace(l,f),s.lvalue&&i.push([h,"[",u,"]=",f].join("")));else{for(var m=[s.name],y=[u],g=0;g<Math.abs(t.arrayBlockIndices[c]);g++)m.push("\\s*\\[([^\\]]+)\\]"),y.push("$"+(g+1)+"*t"+c+"b"+g);if(l=new RegExp(m.join(""),"g"),u=y.join("+"),e[c]==="generic")throw new Error("cwise: Generic arrays not supported in combination with blocks!");r=r.replace(l,[h,"[",u,"]"].join(""))}break;case"scalar":r=r.replace(l,"Y"+t.scalarArgs.indexOf(a));break;case"index":r=r.replace(l,"index");break;case"shape":r=r.replace(l,"shape");break}}}return[o.join(`
|
|
5
6
|
`),r,i.join(`
|
|
6
7
|
`)].join(`
|
|
7
|
-
`).trim()}function
|
|
8
|
+
`).trim()}function uE(n){for(var t=new Array(n.length),e=!0,r=0;r<n.length;++r){var o=n[r],i=o.match(/\d+/);i?i=i[0]:i="",o.charAt(0)===0?t[r]="u"+o.charAt(1)+i:t[r]=o.charAt(0)+i,r>0&&(e=e&&t[r]===t[r-1])}return e?t[0]:t.join("")}function dE(n,t){for(var e=t[1].length-Math.abs(n.arrayBlockIndices[0])|0,r=new Array(n.arrayArgs.length),o=new Array(n.arrayArgs.length),i=0;i<n.arrayArgs.length;++i)o[i]=t[2*i],r[i]=t[2*i+1];for(var a=[],s=[],l=[],u=[],c=[],i=0;i<n.arrayArgs.length;++i){n.arrayBlockIndices[i]<0?(l.push(0),u.push(e),a.push(e),s.push(e+n.arrayBlockIndices[i])):(l.push(n.arrayBlockIndices[i]),u.push(n.arrayBlockIndices[i]+e),a.push(0),s.push(n.arrayBlockIndices[i]));for(var d=[],p=0;p<r[i].length;p++)l[i]<=r[i][p]&&r[i][p]<u[i]&&d.push(r[i][p]-l[i]);c.push(d)}for(var f=["SS"],h=["'use strict'"],m=[],p=0;p<e;++p)m.push(["s",p,"=SS[",p,"]"].join(""));for(var i=0;i<n.arrayArgs.length;++i){f.push("a"+i),f.push("t"+i),f.push("p"+i);for(var p=0;p<e;++p)m.push(["t",i,"p",p,"=t",i,"[",l[i]+p,"]"].join(""));for(var p=0;p<Math.abs(n.arrayBlockIndices[i]);++p)m.push(["t",i,"b",p,"=t",i,"[",a[i]+p,"]"].join(""))}for(var i=0;i<n.scalarArgs.length;++i)f.push("Y"+i);if(n.shapeArgs.length>0&&m.push("shape=SS.slice(0)"),n.indexArgs.length>0){for(var y=new Array(e),i=0;i<e;++i)y[i]="0";m.push(["index=[",y.join(","),"]"].join(""))}for(var i=0;i<n.offsetArgs.length;++i){for(var g=n.offsetArgs[i],b=[],p=0;p<g.offset.length;++p)g.offset[p]!==0&&(g.offset[p]===1?b.push(["t",g.array,"p",p].join("")):b.push([g.offset[p],"*t",g.array,"p",p].join("")));b.length===0?m.push("q"+i+"=0"):m.push(["q",i,"=",b.join("+")].join(""))}var w=sE([].concat(n.pre.thisVars).concat(n.body.thisVars).concat(n.post.thisVars));m=m.concat(w),m.length>0&&h.push("var "+m.join(","));for(var i=0;i<n.arrayArgs.length;++i)h.push("p"+i+"|=0");n.pre.body.length>3&&h.push(zh(n.pre,n,o));var _=zh(n.body,n,o),S=cE(c);S<e?h.push(lE(S,c[0],n,_)):h.push(kS(c[0],n,_)),n.post.body.length>3&&h.push(zh(n.post,n,o)),n.debug&&console.log("-----Generated cwise routine for ",t,`:
|
|
8
9
|
`+h.join(`
|
|
9
10
|
`)+`
|
|
10
|
-
----------`);var
|
|
11
|
-
`),"} return ",
|
|
11
|
+
----------`);var P=[n.funcName||"unnamed","_cwise_loop_",r[0].join("s"),"m",S,uE(o)].join(""),O=new Function(["function ",P,"(",f.join(","),"){",h.join(`
|
|
12
|
+
`),"} return ",P].join(""));return O()}FS.exports=dE});var HS=Kt((bde,US)=>{"use strict";var pE=jS();function fE(n){var t=["'use strict'","var CACHED={}"],e=[],r=n.funcName+"_cwise_thunk";t.push(["return function ",r,"(",n.shimArgs.join(","),"){"].join(""));for(var o=[],i=[],a=[["array",n.arrayArgs[0],".shape.slice(",Math.max(0,n.arrayBlockIndices[0]),n.arrayBlockIndices[0]<0?","+n.arrayBlockIndices[0]+")":")"].join("")],s=[],l=[],u=0;u<n.arrayArgs.length;++u){var c=n.arrayArgs[u];e.push(["t",c,"=array",c,".dtype,","r",c,"=array",c,".order"].join("")),o.push("t"+c),o.push("r"+c),i.push("t"+c),i.push("r"+c+".join()"),a.push("array"+c+".data"),a.push("array"+c+".stride"),a.push("array"+c+".offset|0"),u>0&&(s.push("array"+n.arrayArgs[0]+".shape.length===array"+c+".shape.length+"+(Math.abs(n.arrayBlockIndices[0])-Math.abs(n.arrayBlockIndices[u]))),l.push("array"+n.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,n.arrayBlockIndices[0])+"]===array"+c+".shape[shapeIndex+"+Math.max(0,n.arrayBlockIndices[u])+"]"))}n.arrayArgs.length>1&&(t.push("if (!("+s.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same dimensionality!')"),t.push("for(var shapeIndex=array"+n.arrayArgs[0]+".shape.length-"+Math.abs(n.arrayBlockIndices[0])+"; shapeIndex-->0;) {"),t.push("if (!("+l.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same shape!')"),t.push("}"));for(var u=0;u<n.scalarArgs.length;++u)a.push("scalar"+n.scalarArgs[u]);e.push(["type=[",i.join(","),"].join()"].join("")),e.push("proc=CACHED[type]"),t.push("var "+e.join(",")),t.push(["if(!proc){","CACHED[type]=proc=compile([",o.join(","),"])}","return proc(",a.join(","),")}"].join("")),n.debug&&console.log(`-----Generated thunk:
|
|
12
13
|
`+t.join(`
|
|
13
14
|
`)+`
|
|
14
15
|
----------`);var d=new Function("compile",t.join(`
|
|
15
|
-
`));return d(nD.bind(void 0,n))}Qv.exports=iD});var Jv=Qt((Qce,Zv)=>{"use strict";var aD=Kv();function sD(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}function lD(n){var t=new sD;t.pre=n.pre,t.body=n.body,t.post=n.post;var e=n.args.slice(0);t.argTypes=e;for(var r=0;r<e.length;++r){var o=e[r];if(o==="array"||typeof o=="object"&&o.blockIndices){if(t.argTypes[r]="array",t.arrayArgs.push(r),t.arrayBlockIndices.push(o.blockIndices?o.blockIndices:0),t.shimArgs.push("array"+r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array args");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array args")}else if(o==="scalar")t.scalarArgs.push(r),t.shimArgs.push("scalar"+r);else if(o==="index"){if(t.indexArgs.push(r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array index");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array index");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array index")}else if(o==="shape"){if(t.shapeArgs.push(r),r<t.pre.args.length&&t.pre.args[r].lvalue)throw new Error("cwise: pre() block may not write to array shape");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array shape");if(r<t.post.args.length&&t.post.args[r].lvalue)throw new Error("cwise: post() block may not write to array shape")}else if(typeof o=="object"&&o.offset)t.argTypes[r]="offset",t.offsetArgs.push({array:o.array,offset:o.offset}),t.offsetArgIndex.push(r);else throw new Error("cwise: Unknown argument type "+e[r])}if(t.arrayArgs.length<=0)throw new Error("cwise: No array arguments specified");if(t.pre.args.length>e.length)throw new Error("cwise: Too many arguments in pre() block");if(t.body.args.length>e.length)throw new Error("cwise: Too many arguments in body() block");if(t.post.args.length>e.length)throw new Error("cwise: Too many arguments in post() block");return t.debug=!!n.printCode||!!n.debug,t.funcName=n.funcName||"cwise",t.blockSize=n.blockSize||64,aD(t)}Zv.exports=lD});var fs=Qt(Te=>{"use strict";var ir=Jv(),rd={body:"",args:[],thisVars:[],localVars:[]};function oh(n){if(!n)return rd;for(var t=0;t<n.args.length;++t){var e=n.args[t];t===0?n.args[t]={name:e,lvalue:!0,rvalue:!!n.rvalue,count:n.count||1}:n.args[t]={name:e,lvalue:!1,rvalue:!0,count:1}}return n.thisVars||(n.thisVars=[]),n.localVars||(n.localVars=[]),n}function cD(n){return ir({args:n.args,pre:oh(n.pre),body:oh(n.body),post:oh(n.proc),funcName:n.funcName})}function nt(n){for(var t=[],e=0;e<n.args.length;++e)t.push("a"+e);var r=new Function("P",["return function ",n.funcName,"_ndarrayops(",t.join(","),") {P(",t.join(","),");return a0}"].join(""));return r(cD(n))}var eS={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var n in eS){var t=eS[n];Te[n]=nt({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"eq"]=nt({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:n+"eq"}),Te[n+"s"]=nt({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"seq"]=nt({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:n+"seq"})}})();var tS={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var n in tS){var t=tS[n];Te[n]=nt({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:n}),Te[n+"eq"]=nt({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:n+"eq"})}})();var rS={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};(function(){for(var n in rS){var t=rS[n];Te[n]=nt({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"s"]=nt({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"eq"]=nt({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:n+"eq"}),Te[n+"seq"]=nt({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:n+"seq"})}})();var oS=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];(function(){for(var n=0;n<oS.length;++n){var t=oS[n];Te[t]=nt({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:t}),Te[t+"eq"]=nt({args:["array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"})}})();var nS=["max","min","atan2","pow"];(function(){for(var n=0;n<nS.length;++n){var t=nS[n];Te[t]=nt({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t}),Te[t+"s"]=nt({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t+"s"}),Te[t+"eq"]=nt({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"}),Te[t+"seq"]=nt({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"seq"})}})();var iS=["atan2","pow"];(function(){for(var n=0;n<iS.length;++n){var t=iS[n];Te[t+"op"]=nt({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"op"}),Te[t+"ops"]=nt({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"ops"}),Te[t+"opeq"]=nt({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opeq"}),Te[t+"opseq"]=nt({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opseq"})}})();Te.any=ir({args:["array"],pre:rd,body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"if(a){return true}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return false"},funcName:"any"});Te.all=ir({args:["array"],pre:rd,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1}],body:"if(!x){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"all"});Te.sum=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s+=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"sum"});Te.prod=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=1"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s*=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"prod"});Te.norm2squared=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm2squared"});Te.norm2=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return Math.sqrt(this_s)"},funcName:"norm2"});Te.norminf=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:4}],body:"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"});Te.norm1=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"});Te.sup=ir({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Te.inf=ir({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Te.argmin=ir({args:["index","array","shape"],pre:{body:"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Te.argmax=ir({args:["index","array","shape"],pre:{body:"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Te.random=nt({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"});Te.assign=nt({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"});Te.assigns=nt({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"});Te.equals=ir({args:["array","array"],pre:rd,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})});var NS=Qt((Vpe,IS)=>{IS.exports=function(t,e){for(var r=t.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(r[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 $D,Loader as YD}from"three";function Pl(n){for(let t of Object.keys(n))n[t]===void 0&&delete n[t];return n}function jt(n,t){return Object.setPrototypeOf(n,t),n}function Ol(n){return Array.isArray(n)?n:[n]}function Cl(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var QS=typeof global=="object"&&global&&global.Object===Object&&global,Tl=QS;var KS=typeof self=="object"&&self&&self.Object===Object&&self,ZS=Tl||KS||Function("return this")(),ft=ZS;var JS=ft.Symbol,At=JS;var fh=Object.prototype,e1=fh.hasOwnProperty,t1=fh.toString,ms=At?At.toStringTag:void 0;function r1(n){var t=e1.call(n,ms),e=n[ms];try{n[ms]=void 0;var r=!0}catch{}var o=t1.call(n);return r&&(t?n[ms]=e:delete n[ms]),o}var hh=r1;var o1=Object.prototype,n1=o1.toString;function i1(n){return n1.call(n)}var mh=i1;var a1="[object Null]",s1="[object Undefined]",yh=At?At.toStringTag:void 0;function l1(n){return n==null?n===void 0?s1:a1:yh&&yh in Object(n)?hh(n):mh(n)}var sr=l1;function c1(n){return n!=null&&typeof n=="object"}var Et=c1;var u1="[object Symbol]";function d1(n){return typeof n=="symbol"||Et(n)&&sr(n)==u1}var yi=d1;function p1(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Ml=p1;var f1=Array.isArray,it=f1;var h1=1/0,gh=At?At.prototype:void 0,xh=gh?gh.toString:void 0;function bh(n){if(typeof n=="string")return n;if(it(n))return Ml(n,bh)+"";if(yi(n))return xh?xh.call(n):"";var t=n+"";return t=="0"&&1/n==-h1?"-0":t}var vh=bh;function m1(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var lr=m1;function y1(n){return n}var Sh=y1;var g1="[object AsyncFunction]",x1="[object Function]",b1="[object GeneratorFunction]",v1="[object Proxy]";function S1(n){if(!lr(n))return!1;var t=sr(n);return t==x1||t==b1||t==g1||t==v1}var Il=S1;var w1=ft["__core-js_shared__"],Nl=w1;var wh=function(){var n=/[^.]+$/.exec(Nl&&Nl.keys&&Nl.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function _1(n){return!!wh&&wh in n}var _h=_1;var A1=Function.prototype,P1=A1.toString;function O1(n){if(n!=null){try{return P1.call(n)}catch{}try{return n+""}catch{}}return""}var wo=O1;var C1=/[\\^$.*+?()[\]{}|]/g,T1=/^\[object .+?Constructor\]$/,M1=Function.prototype,I1=Object.prototype,N1=M1.toString,D1=I1.hasOwnProperty,E1=RegExp("^"+N1.call(D1).replace(C1,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function B1(n){if(!lr(n)||_h(n))return!1;var t=Il(n)?E1:T1;return t.test(wo(n))}var Ah=B1;function L1(n,t){return n?.[t]}var Ph=L1;function R1(n,t){var e=Ph(n,t);return Ah(e)?e:void 0}var Kt=R1;var V1=Kt(ft,"WeakMap"),Dl=V1;var Oh=Object.create,z1=function(){function n(){}return function(t){if(!lr(t))return{};if(Oh)return Oh(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Ch=z1;function G1(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var Th=G1;function F1(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Mh=F1;var k1=800,j1=16,U1=Date.now;function H1(n){var t=0,e=0;return function(){var r=U1(),o=j1-(r-e);if(e=r,o>0){if(++t>=k1)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Ih=H1;function q1(n){return function(){return n}}var Nh=q1;var W1=function(){try{var n=Kt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),gi=W1;var $1=gi?function(n,t){return gi(n,"toString",{configurable:!0,enumerable:!1,value:Nh(t),writable:!0})}:Sh,Dh=$1;var Y1=Ih(Dh),Eh=Y1;function X1(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Bh=X1;var Q1=9007199254740991,K1=/^(?:0|[1-9]\d*)$/;function Z1(n,t){var e=typeof n;return t=t??Q1,!!t&&(e=="number"||e!="symbol"&&K1.test(n))&&n>-1&&n%1==0&&n<t}var xi=Z1;function J1(n,t,e){t=="__proto__"&&gi?gi(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var El=J1;function ew(n,t){return n===t||n!==n&&t!==t}var bi=ew;var tw=Object.prototype,rw=tw.hasOwnProperty;function ow(n,t,e){var r=n[t];(!(rw.call(n,t)&&bi(r,e))||e===void 0&&!(t in n))&&El(n,t,e)}var vi=ow;function nw(n,t,e,r){var o=!e;e||(e={});for(var i=-1,a=t.length;++i<a;){var s=t[i],l=r?r(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?El(e,s,l):vi(e,s,l)}return e}var $r=nw;var Lh=Math.max;function iw(n,t,e){return t=Lh(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Lh(r.length-t,0),a=Array(i);++o<i;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),Th(n,this,s)}}var Rh=iw;var aw=9007199254740991;function sw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=aw}var Si=sw;function lw(n){return n!=null&&Si(n.length)&&!Il(n)}var Bl=lw;var cw=Object.prototype;function uw(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||cw;return n===e}var wi=uw;function dw(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Vh=dw;var pw="[object Arguments]";function fw(n){return Et(n)&&sr(n)==pw}var ld=fw;var zh=Object.prototype,hw=zh.hasOwnProperty,mw=zh.propertyIsEnumerable,yw=ld(function(){return arguments}())?ld:function(n){return Et(n)&&hw.call(n,"callee")&&!mw.call(n,"callee")},_i=yw;function gw(){return!1}var Gh=gw;var jh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fh=jh&&typeof module=="object"&&module&&!module.nodeType&&module,xw=Fh&&Fh.exports===jh,kh=xw?ft.Buffer:void 0,bw=kh?kh.isBuffer:void 0,vw=bw||Gh,Ln=vw;var Sw="[object Arguments]",ww="[object Array]",_w="[object Boolean]",Aw="[object Date]",Pw="[object Error]",Ow="[object Function]",Cw="[object Map]",Tw="[object Number]",Mw="[object Object]",Iw="[object RegExp]",Nw="[object Set]",Dw="[object String]",Ew="[object WeakMap]",Bw="[object ArrayBuffer]",Lw="[object DataView]",Rw="[object Float32Array]",Vw="[object Float64Array]",zw="[object Int8Array]",Gw="[object Int16Array]",Fw="[object Int32Array]",kw="[object Uint8Array]",jw="[object Uint8ClampedArray]",Uw="[object Uint16Array]",Hw="[object Uint32Array]",Qe={};Qe[Rw]=Qe[Vw]=Qe[zw]=Qe[Gw]=Qe[Fw]=Qe[kw]=Qe[jw]=Qe[Uw]=Qe[Hw]=!0;Qe[Sw]=Qe[ww]=Qe[Bw]=Qe[_w]=Qe[Lw]=Qe[Aw]=Qe[Pw]=Qe[Ow]=Qe[Cw]=Qe[Tw]=Qe[Mw]=Qe[Iw]=Qe[Nw]=Qe[Dw]=Qe[Ew]=!1;function qw(n){return Et(n)&&Si(n.length)&&!!Qe[sr(n)]}var Uh=qw;function Ww(n){return function(t){return n(t)}}var Ai=Ww;var Hh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ys=Hh&&typeof module=="object"&&module&&!module.nodeType&&module,$w=ys&&ys.exports===Hh,cd=$w&&Tl.process,Yw=function(){try{var n=ys&&ys.require&&ys.require("util").types;return n||cd&&cd.binding&&cd.binding("util")}catch{}}(),_o=Yw;var qh=_o&&_o.isTypedArray,Xw=qh?Ai(qh):Uh,Ll=Xw;var Qw=Object.prototype,Kw=Qw.hasOwnProperty;function Zw(n,t){var e=it(n),r=!e&&_i(n),o=!e&&!r&&Ln(n),i=!e&&!r&&!o&&Ll(n),a=e||r||o||i,s=a?Vh(n.length,String):[],l=s.length;for(var u in n)(t||Kw.call(n,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||xi(u,l)))&&s.push(u);return s}var Rl=Zw;function Jw(n,t){return function(e){return n(t(e))}}var Vl=Jw;var e2=Vl(Object.keys,Object),Wh=e2;var t2=Object.prototype,r2=t2.hasOwnProperty;function o2(n){if(!wi(n))return Wh(n);var t=[];for(var e in Object(n))r2.call(n,e)&&e!="constructor"&&t.push(e);return t}var $h=o2;function n2(n){return Bl(n)?Rl(n):$h(n)}var Pi=n2;function i2(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Yh=i2;var a2=Object.prototype,s2=a2.hasOwnProperty;function l2(n){if(!lr(n))return Yh(n);var t=wi(n),e=[];for(var r in n)r=="constructor"&&(t||!s2.call(n,r))||e.push(r);return e}var Xh=l2;function c2(n){return Bl(n)?Rl(n,!0):Xh(n)}var Oi=c2;var u2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,d2=/^\w*$/;function p2(n,t){if(it(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||yi(n)?!0:d2.test(n)||!u2.test(n)||t!=null&&n in Object(t)}var Qh=p2;var f2=Kt(Object,"create"),Ao=f2;function h2(){this.__data__=Ao?Ao(null):{},this.size=0}var Kh=h2;function m2(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Zh=m2;var y2="__lodash_hash_undefined__",g2=Object.prototype,x2=g2.hasOwnProperty;function b2(n){var t=this.__data__;if(Ao){var e=t[n];return e===y2?void 0:e}return x2.call(t,n)?t[n]:void 0}var Jh=b2;var v2=Object.prototype,S2=v2.hasOwnProperty;function w2(n){var t=this.__data__;return Ao?t[n]!==void 0:S2.call(t,n)}var em=w2;var _2="__lodash_hash_undefined__";function A2(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Ao&&t===void 0?_2:t,this}var tm=A2;function Ci(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Ci.prototype.clear=Kh;Ci.prototype.delete=Zh;Ci.prototype.get=Jh;Ci.prototype.has=em;Ci.prototype.set=tm;var ud=Ci;function P2(){this.__data__=[],this.size=0}var rm=P2;function O2(n,t){for(var e=n.length;e--;)if(bi(n[e][0],t))return e;return-1}var Qo=O2;var C2=Array.prototype,T2=C2.splice;function M2(n){var t=this.__data__,e=Qo(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():T2.call(t,e,1),--this.size,!0}var om=M2;function I2(n){var t=this.__data__,e=Qo(t,n);return e<0?void 0:t[e][1]}var nm=I2;function N2(n){return Qo(this.__data__,n)>-1}var im=N2;function D2(n,t){var e=this.__data__,r=Qo(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var am=D2;function Ti(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Ti.prototype.clear=rm;Ti.prototype.delete=om;Ti.prototype.get=nm;Ti.prototype.has=im;Ti.prototype.set=am;var Ko=Ti;var E2=Kt(ft,"Map"),Zo=E2;function B2(){this.size=0,this.__data__={hash:new ud,map:new(Zo||Ko),string:new ud}}var sm=B2;function L2(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var lm=L2;function R2(n,t){var e=n.__data__;return lm(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Jo=R2;function V2(n){var t=Jo(this,n).delete(n);return this.size-=t?1:0,t}var cm=V2;function z2(n){return Jo(this,n).get(n)}var um=z2;function G2(n){return Jo(this,n).has(n)}var dm=G2;function F2(n,t){var e=Jo(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var pm=F2;function Mi(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Mi.prototype.clear=sm;Mi.prototype.delete=cm;Mi.prototype.get=um;Mi.prototype.has=dm;Mi.prototype.set=pm;var Rn=Mi;var k2="Expected a function";function dd(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(k2);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,r);return e.cache=i.set(o,a)||i,a};return e.cache=new(dd.Cache||Rn),e}dd.Cache=Rn;var fm=dd;var j2=500;function U2(n){var t=fm(n,function(r){return e.size===j2&&e.clear(),r}),e=t.cache;return t}var hm=U2;var H2=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,q2=/\\(\\)?/g,W2=hm(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(H2,function(e,r,o,i){t.push(o?i.replace(q2,"$1"):r||e)}),t}),mm=W2;function $2(n){return n==null?"":vh(n)}var ym=$2;function Y2(n,t){return it(n)?n:Qh(n,t)?[n]:mm(ym(n))}var mr=Y2;var X2=1/0;function Q2(n){if(typeof n=="string"||yi(n))return n;var t=n+"";return t=="0"&&1/n==-X2?"-0":t}var en=Q2;function K2(n,t){t=mr(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[en(t[e++])];return e&&e==r?n:void 0}var zl=K2;function Z2(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Ii=Z2;var gm=At?At.isConcatSpreadable:void 0;function J2(n){return it(n)||_i(n)||!!(gm&&n&&n[gm])}var xm=J2;function bm(n,t,e,r,o){var i=-1,a=n.length;for(e||(e=xm),o||(o=[]);++i<a;){var s=n[i];t>0&&e(s)?t>1?bm(s,t-1,e,r,o):Ii(o,s):r||(o[o.length]=s)}return o}var vm=bm;function e_(n){var t=n==null?0:n.length;return t?vm(n,1):[]}var Sm=e_;function t_(n){return Eh(Rh(n,void 0,Sm),n+"")}var Gl=t_;var r_=Vl(Object.getPrototypeOf,Object),Ni=r_;var o_="[object Object]",n_=Function.prototype,i_=Object.prototype,wm=n_.toString,a_=i_.hasOwnProperty,s_=wm.call(Object);function l_(n){if(!Et(n)||sr(n)!=o_)return!1;var t=Ni(n);if(t===null)return!0;var e=a_.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&wm.call(e)==s_}var _m=l_;function c_(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var Am=c_;function u_(){this.__data__=new Ko,this.size=0}var Pm=u_;function d_(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Om=d_;function p_(n){return this.__data__.get(n)}var Cm=p_;function f_(n){return this.__data__.has(n)}var Tm=f_;var h_=200;function m_(n,t){var e=this.__data__;if(e instanceof Ko){var r=e.__data__;if(!Zo||r.length<h_-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Rn(r)}return e.set(n,t),this.size=e.size,this}var Mm=m_;function Di(n){var t=this.__data__=new Ko(n);this.size=t.size}Di.prototype.clear=Pm;Di.prototype.delete=Om;Di.prototype.get=Cm;Di.prototype.has=Tm;Di.prototype.set=Mm;var Ei=Di;function y_(n,t){return n&&$r(t,Pi(t),n)}var Im=y_;function g_(n,t){return n&&$r(t,Oi(t),n)}var Nm=g_;var Lm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Dm=Lm&&typeof module=="object"&&module&&!module.nodeType&&module,x_=Dm&&Dm.exports===Lm,Em=x_?ft.Buffer:void 0,Bm=Em?Em.allocUnsafe:void 0;function b_(n,t){if(t)return n.slice();var e=n.length,r=Bm?Bm(e):new n.constructor(e);return n.copy(r),r}var Rm=b_;function v_(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var a=n[e];t(a,e,n)&&(i[o++]=a)}return i}var Vm=v_;function S_(){return[]}var Fl=S_;var w_=Object.prototype,__=w_.propertyIsEnumerable,zm=Object.getOwnPropertySymbols,A_=zm?function(n){return n==null?[]:(n=Object(n),Vm(zm(n),function(t){return __.call(n,t)}))}:Fl,Bi=A_;function P_(n,t){return $r(n,Bi(n),t)}var Gm=P_;var O_=Object.getOwnPropertySymbols,C_=O_?function(n){for(var t=[];n;)Ii(t,Bi(n)),n=Ni(n);return t}:Fl,kl=C_;function T_(n,t){return $r(n,kl(n),t)}var Fm=T_;function M_(n,t,e){var r=t(n);return it(n)?r:Ii(r,e(n))}var jl=M_;function I_(n){return jl(n,Pi,Bi)}var gs=I_;function N_(n){return jl(n,Oi,kl)}var Ul=N_;var D_=Kt(ft,"DataView"),Hl=D_;var E_=Kt(ft,"Promise"),ql=E_;var B_=Kt(ft,"Set"),Wl=B_;var km="[object Map]",L_="[object Object]",jm="[object Promise]",Um="[object Set]",Hm="[object WeakMap]",qm="[object DataView]",R_=wo(Hl),V_=wo(Zo),z_=wo(ql),G_=wo(Wl),F_=wo(Dl),Vn=sr;(Hl&&Vn(new Hl(new ArrayBuffer(1)))!=qm||Zo&&Vn(new Zo)!=km||ql&&Vn(ql.resolve())!=jm||Wl&&Vn(new Wl)!=Um||Dl&&Vn(new Dl)!=Hm)&&(Vn=function(n){var t=sr(n),e=t==L_?n.constructor:void 0,r=e?wo(e):"";if(r)switch(r){case R_:return qm;case V_:return km;case z_:return jm;case G_:return Um;case F_:return Hm}return t});var Po=Vn;var k_=Object.prototype,j_=k_.hasOwnProperty;function U_(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&j_.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Wm=U_;var H_=ft.Uint8Array,Li=H_;function q_(n){var t=new n.constructor(n.byteLength);return new Li(t).set(new Li(n)),t}var Ri=q_;function W_(n,t){var e=t?Ri(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $m=W_;var $_=/\w*$/;function Y_(n){var t=new n.constructor(n.source,$_.exec(n));return t.lastIndex=n.lastIndex,t}var Ym=Y_;var Xm=At?At.prototype:void 0,Qm=Xm?Xm.valueOf:void 0;function X_(n){return Qm?Object(Qm.call(n)):{}}var Km=X_;function Q_(n,t){var e=t?Ri(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Zm=Q_;var K_="[object Boolean]",Z_="[object Date]",J_="[object Map]",eA="[object Number]",tA="[object RegExp]",rA="[object Set]",oA="[object String]",nA="[object Symbol]",iA="[object ArrayBuffer]",aA="[object DataView]",sA="[object Float32Array]",lA="[object Float64Array]",cA="[object Int8Array]",uA="[object Int16Array]",dA="[object Int32Array]",pA="[object Uint8Array]",fA="[object Uint8ClampedArray]",hA="[object Uint16Array]",mA="[object Uint32Array]";function yA(n,t,e){var r=n.constructor;switch(t){case iA:return Ri(n);case K_:case Z_:return new r(+n);case aA:return $m(n,e);case sA:case lA:case cA:case uA:case dA:case pA:case fA:case hA:case mA:return Zm(n,e);case J_:return new r;case eA:case oA:return new r(n);case tA:return Ym(n);case rA:return new r;case nA:return Km(n)}}var Jm=yA;function gA(n){return typeof n.constructor=="function"&&!wi(n)?Ch(Ni(n)):{}}var ey=gA;var xA="[object Map]";function bA(n){return Et(n)&&Po(n)==xA}var ty=bA;var ry=_o&&_o.isMap,vA=ry?Ai(ry):ty,oy=vA;var SA="[object Set]";function wA(n){return Et(n)&&Po(n)==SA}var ny=wA;var iy=_o&&_o.isSet,_A=iy?Ai(iy):ny,ay=_A;var AA=1,PA=2,OA=4,sy="[object Arguments]",CA="[object Array]",TA="[object Boolean]",MA="[object Date]",IA="[object Error]",ly="[object Function]",NA="[object GeneratorFunction]",DA="[object Map]",EA="[object Number]",cy="[object Object]",BA="[object RegExp]",LA="[object Set]",RA="[object String]",VA="[object Symbol]",zA="[object WeakMap]",GA="[object ArrayBuffer]",FA="[object DataView]",kA="[object Float32Array]",jA="[object Float64Array]",UA="[object Int8Array]",HA="[object Int16Array]",qA="[object Int32Array]",WA="[object Uint8Array]",$A="[object Uint8ClampedArray]",YA="[object Uint16Array]",XA="[object Uint32Array]",Ye={};Ye[sy]=Ye[CA]=Ye[GA]=Ye[FA]=Ye[TA]=Ye[MA]=Ye[kA]=Ye[jA]=Ye[UA]=Ye[HA]=Ye[qA]=Ye[DA]=Ye[EA]=Ye[cy]=Ye[BA]=Ye[LA]=Ye[RA]=Ye[VA]=Ye[WA]=Ye[$A]=Ye[YA]=Ye[XA]=!0;Ye[IA]=Ye[ly]=Ye[zA]=!1;function $l(n,t,e,r,o,i){var a,s=t&AA,l=t&PA,u=t&OA;if(e&&(a=o?e(n,r,o,i):e(n)),a!==void 0)return a;if(!lr(n))return n;var c=it(n);if(c){if(a=Wm(n),!s)return Mh(n,a)}else{var d=Po(n),p=d==ly||d==NA;if(Ln(n))return Rm(n,s);if(d==cy||d==sy||p&&!o){if(a=l||p?{}:ey(n),!s)return l?Fm(n,Nm(a,n)):Gm(n,Im(a,n))}else{if(!Ye[d])return o?n:{};a=Jm(n,d,s)}}i||(i=new Ei);var f=i.get(n);if(f)return f;i.set(n,a),ay(n)?n.forEach(function(y){a.add($l(y,t,e,y,n,i))}):oy(n)&&n.forEach(function(y,g){a.set(g,$l(y,t,e,g,n,i))});var h=u?l?Ul:gs:l?Oi:Pi,m=c?void 0:h(n);return Bh(m||n,function(y,g){m&&(g=y,y=n[g]),vi(a,g,$l(y,t,e,g,n,i))}),a}var Yl=$l;var QA=1,KA=4;function ZA(n){return Yl(n,QA|KA)}var Oo=ZA;var JA="__lodash_hash_undefined__";function eP(n){return this.__data__.set(n,JA),this}var uy=eP;function tP(n){return this.__data__.has(n)}var dy=tP;function Xl(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new Rn;++t<e;)this.add(n[t])}Xl.prototype.add=Xl.prototype.push=uy;Xl.prototype.has=dy;var py=Xl;function rP(n,t){for(var e=-1,r=n==null?0:n.length;++e<r;)if(t(n[e],e,n))return!0;return!1}var fy=rP;function oP(n,t){return n.has(t)}var hy=oP;var nP=1,iP=2;function aP(n,t,e,r,o,i){var a=e&nP,s=n.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var u=i.get(n),c=i.get(t);if(u&&c)return u==t&&c==n;var d=-1,p=!0,f=e&iP?new py:void 0;for(i.set(n,t),i.set(t,n);++d<s;){var h=n[d],m=t[d];if(r)var y=a?r(m,h,d,t,n,i):r(h,m,d,n,t,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!fy(t,function(g,b){if(!hy(f,b)&&(h===g||o(h,g,e,r,i)))return f.push(b)})){p=!1;break}}else if(!(h===m||o(h,m,e,r,i))){p=!1;break}}return i.delete(n),i.delete(t),p}var Ql=aP;function sP(n){var t=-1,e=Array(n.size);return n.forEach(function(r,o){e[++t]=[o,r]}),e}var my=sP;function lP(n){var t=-1,e=Array(n.size);return n.forEach(function(r){e[++t]=r}),e}var yy=lP;var cP=1,uP=2,dP="[object Boolean]",pP="[object Date]",fP="[object Error]",hP="[object Map]",mP="[object Number]",yP="[object RegExp]",gP="[object Set]",xP="[object String]",bP="[object Symbol]",vP="[object ArrayBuffer]",SP="[object DataView]",gy=At?At.prototype:void 0,pd=gy?gy.valueOf:void 0;function wP(n,t,e,r,o,i,a){switch(e){case SP:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case vP:return!(n.byteLength!=t.byteLength||!i(new Li(n),new Li(t)));case dP:case pP:case mP:return bi(+n,+t);case fP:return n.name==t.name&&n.message==t.message;case yP:case xP:return n==t+"";case hP:var s=my;case gP:var l=r&cP;if(s||(s=yy),n.size!=t.size&&!l)return!1;var u=a.get(n);if(u)return u==t;r|=uP,a.set(n,t);var c=Ql(s(n),s(t),r,o,i,a);return a.delete(n),c;case bP:if(pd)return pd.call(n)==pd.call(t)}return!1}var xy=wP;var _P=1,AP=Object.prototype,PP=AP.hasOwnProperty;function OP(n,t,e,r,o,i){var a=e&_P,s=gs(n),l=s.length,u=gs(t),c=u.length;if(l!=c&&!a)return!1;for(var d=l;d--;){var p=s[d];if(!(a?p in t:PP.call(t,p)))return!1}var f=i.get(n),h=i.get(t);if(f&&h)return f==t&&h==n;var m=!0;i.set(n,t),i.set(t,n);for(var y=a;++d<l;){p=s[d];var g=n[p],b=t[p];if(r)var S=a?r(b,g,p,t,n,i):r(g,b,p,n,t,i);if(!(S===void 0?g===b||o(g,b,e,r,i):S)){m=!1;break}y||(y=p=="constructor")}if(m&&!y){var w=n.constructor,v=t.constructor;w!=v&&"constructor"in n&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof v=="function"&&v instanceof v)&&(m=!1)}return i.delete(n),i.delete(t),m}var by=OP;var CP=1,vy="[object Arguments]",Sy="[object Array]",Kl="[object Object]",TP=Object.prototype,wy=TP.hasOwnProperty;function MP(n,t,e,r,o,i){var a=it(n),s=it(t),l=a?Sy:Po(n),u=s?Sy:Po(t);l=l==vy?Kl:l,u=u==vy?Kl:u;var c=l==Kl,d=u==Kl,p=l==u;if(p&&Ln(n)){if(!Ln(t))return!1;a=!0,c=!1}if(p&&!c)return i||(i=new Ei),a||Ll(n)?Ql(n,t,e,r,o,i):xy(n,t,l,e,r,o,i);if(!(e&CP)){var f=c&&wy.call(n,"__wrapped__"),h=d&&wy.call(t,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?t.value():t;return i||(i=new Ei),o(m,y,e,r,i)}}return p?(i||(i=new Ei),by(n,t,e,r,o,i)):!1}var _y=MP;function Ay(n,t,e,r,o){return n===t?!0:n==null||t==null||!Et(n)&&!Et(t)?n!==n&&t!==t:_y(n,t,e,r,Ay,o)}var Py=Ay;function IP(n,t){return n!=null&&t in Object(n)}var Oy=IP;function NP(n,t,e){t=mr(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var a=en(t[r]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&Si(o)&&xi(a,o)&&(it(n)||_i(n)))}var Cy=NP;function DP(n,t){return n!=null&&Cy(n,t,Oy)}var Ty=DP;function EP(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var My=EP;function BP(n,t){return t.length<2?n:zl(n,Am(t,0,-1))}var Iy=BP;function LP(n,t){return Py(n,t)}var fd=LP;function RP(n,t){return t=mr(t,n),n=Iy(n,t),n==null||delete n[en(My(t))]}var Ny=RP;function VP(n){return _m(n)?void 0:n}var Dy=VP;var zP=1,GP=2,FP=4,kP=Gl(function(n,t){var e={};if(n==null)return e;var r=!1;t=Ml(t,function(i){return i=mr(i,n),r||(r=i.length>1),i}),$r(n,Ul(n),e),r&&(e=Yl(e,zP|GP|FP,Dy));for(var o=t.length;o--;)Ny(e,t[o]);return e}),Vi=kP;function jP(n,t,e,r){if(!lr(n))return n;t=mr(t,n);for(var o=-1,i=t.length,a=i-1,s=n;s!=null&&++o<i;){var l=en(t[o]),u=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var c=s[l];u=r?r(c,l,s):void 0,u===void 0&&(u=lr(c)?c:xi(t[o+1])?[]:{})}vi(s,l,u),s=s[l]}return n}var Ey=jP;function UP(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],s=zl(n,a);e(s,a)&&Ey(i,mr(a,n),s)}return i}var By=UP;function HP(n,t){return By(n,t,function(e,r){return Ty(n,r)})}var Ly=HP;var qP=Gl(function(n,t){return n==null?{}:Ly(n,t)}),Mr=qP;var ce=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,ce.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:a}=t,s={...e,[i]:a};return Object.setPrototypeOf(s,ce.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,ce.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function xs(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&xs(r)}return Object.freeze(n)}function Ry(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var zi=class extends Error{};function Zl(n){let t={...n};return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Yr(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(a)}return r}function Gi(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 Vy(){return typeof process<"u"}function zy(n,t){for(let e of n)t(e.id,e.data)!==!0&&zy(e.children,t)}function Gy(n,t){if(t(n.id,n.data)!==!0)for(let e of n.children)Gy(e,t)}var He=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,He.prototype)}deepFreeze(){let e=0;for(;e<this.length;)xs(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Gy(o,r)}}traverse(e){zy(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(i,a)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(c=>c.id===l);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:s}}Object.setPrototypeOf(i,He.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:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,u=this.childrenArray(l),c={fi:o,id:i,data:a,children:s};return u=[...u,c],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(c),{data:this.modifyArrayBy(l,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(u=>u.id===r);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:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new zi("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),u=l.findIndex(f=>f.id===i);l=[...l];let c=l.splice(u,1)[0],d=this.modifyArrayBy(a,l);a=r,l=d.childrenArray(a);let p=c.fi;return c={...c,fi:o},l=[...l,c],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(c),d=d.modifyArrayBy(a,l),{data:d,actual:e,reverse:{type:9,parent:s,fi:p,id:i}}}previous(e,r){if(r===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===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Ry(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),a=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return Yr(0,o,o);{let a=i[0].fi;return Yr(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return Yr(l,l+o,o)}else return Yr(a.fi,s.fi,o)}}};var Fi;(t=>{function n(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let u=parseInt(l);if(isNaN(u))throw new Error("wrong index");i[l]=a[u],a[u]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let u=o[l];u===void 0?delete a[l]:a[l]=u,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(Fi||(Fi={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)xs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let r=e;return Vy()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:i}=e,a=this,s={fi:r,id:o,data:i};return a=[...a,s],a.sort((u,c)=>u.fi-c.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(l=>l.id===r);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:r,id:o}=e,i=this;i=[...i];let a=i.findIndex(c=>c.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:r};return i[a]=l,i.sort((c,d)=>c.fi-d.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 r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Yr(0,r,r);{let i=o[0].fi;return Yr(i-r,i,r)}}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 Yr(s,s+r,r)}else return Yr(i.fi,a.fi,r)}}};function ki(n){return n&&typeof n=="object"&&n instanceof qe}var qe=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!ki(r))return null;o+=1}r=r?Zl(r):new qe;for(let[l,u]of Object.entries(t.props)){let c=r[l];i[l]=c,u===void 0?delete r[l]:r[l]=u}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=Zl(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let u=Zl(l);u[t.path[o-1]]=r,r=u}else{let u=new qe;u[t.path[o-1]]=r,r=u}}o-=1}let a=Object.setPrototypeOf(r,qe.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},Xr;(r=>{function n(o,i){return bs(o,i)??o}r.apply=n;function t(o,i){return md(o,i)}r.merge=t;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(!ki(l))return;a+=1}if(l===void 0)return i;if(!!ki(l))if(i.type===0){let u={...i.props};for(let c of Object.keys(l))delete u[c];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=hd([i],l);return u?(console.log(u),u):i}else return i}r.filterOp=e})(Xr||(Xr={}));function hd(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=bs(o.data,t[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=hd(o.children,t);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 r}function WP(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=bs(o.data,t[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function bs(n,t){if(!ki(t))return t;if(n instanceof He){let e=hd(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return WP(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let a=bs(o,t[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else{if(n instanceof qe)return md(n,t);if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let a=bs(i,t[o]);r=r||a!==void 0,a===void 0&&(a=i),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function md(n,t){if(n===void 0)return t;if(t===void 0)return n;if(!ki(t))return t;if(!ki(n))return Xr.apply(n,t);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new qe;for(let o of e){let i=md(n===void 0?void 0:n[o],t===void 0?void 0:t[o]);r[o]=i}return r}function Fy(n,t){let e={cur:[],result:[],len:0};return n=vs(n,t,e)??n,[n,e.result]}function Jl(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function ec(n){n&&(n.len-=1)}function $P(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function ky(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=vs(i.data,t,Jl(e,a));ec(e),r=r||l!==void 0,l===void 0&&(l=i.data);let u=ky(i.children,t,e);return u!==void 0?r=!0:u=i.children,{...i,id:a,data:l,children:u}});if(r)return o}function YP(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=vs(i.data,t,Jl(e,a));return ec(e),r=r||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function vs(n,t,e){if(n instanceof He){let r=ky(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof he)return YP(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,a)=>{let s=vs(i,t,Jl(e,a));return ec(e),r=r||s!==void 0,s===void 0&&(s=i),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!Gi(n)){let r={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=t[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=vs(a,t,Jl(e,i));ec(e),o=o||l!==void 0,l===void 0&&(l=a),r[i]=l}else r[i]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(typeof n=="string"){let r=t[n];return r!==void 0&&$P(e),r}else return}}var ji;(t=>{function n(e,r){let o=Ze.zoom(r,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:{}}}t.replaceProps=n})(ji||(ji={}));var Je;(s=>{function n(l,u){return{...l,path:l.path.slice(u)}}s.drop=n;function t(l,u){return e(l,u)?.data??l}s.applySimple=t;function e(l,u){let c=u.path;for(var d=[];;){let p;if(l instanceof qe&&u.type===0&&(p=l.runOp({...u,path:c.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===c.length&&(l instanceof He||l instanceof he||l instanceof ce?p=l.runOp(u):p=Fi.runOp(l,u)),p!==void 0)if(p!==null){let m=p.data;for(let y=d.length-1;y>=0;y--){let g=c[y],b=d[y];if(b instanceof He){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof he){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof ce){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof qe){let S={...b,[g]:m};m=Object.setPrototypeOf(S,qe.prototype)}else if(typeof b=="object")if(Array.isArray(b)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let S=m;m=[...b],m[g]=S}else m={...b,[g]:m};else return null}return{data:m,actual:{...p.actual,path:c},reverse:{...p.reverse,path:c}}}else return null;let f=c[d.length],h;if(l instanceof He){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof he){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)d.push(l),l=h;else return null}}s.apply=e;function r(l,u){for(let c=0;c<l.length&&c<u.length;c++)if(l[c]!==u[c])return!0;return!1}s.pathDisjoint=r;function o(l,u){if(l.length!==u.length)return!1;for(let c=0;c<l.length;c++)if(l[c]!==u[c])return!1;return!0}s.pathEq=o;function i(l,u){return r(l.path,u.path)}s.commutative=i;function a(l,u){return l.type===0&&u.type===0&&o(l.path,u.path)?Object.keys(l.props).every(c=>u.props[c]!==void 0):!1}s.subsumed=a})(Je||(Je={}));var Ss;(l=>{function n(){return[]}l.empty=n;function t(u,c){let d=[];for(let p of u){let[f,...h]=p.path;f===c&&d.push({...p,path:h})}return d}l.removePrefix=t;function e(u,c){return u.map(d=>({...d,path:[c,...d.path]}))}l.addPrefix=e;function r(u,c){return[...u,...c]}l.concat=r;function o(u,c){return[...u.filter(p=>!c.some(f=>Je.subsumed(p,f))),...c]}l.compress=o;function i(u,c){return u.every(d=>c.every(p=>Je.commutative(d,p)))}l.commutative=i;function a(u,c){for(let d of c){let p=s(u,d);p!==null&&(u=p.data)}return u}l.applyAll=a;function s(u,c){var d=u;let p=[],f=[];for(let h of c)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,g;if(h.type===3?(m=Ze.zoom(d,[...h.path,h.id]),g=Je.apply(d,{...h,type:2})):(m=Ze.zoom(d,[...h.path,h.id,"value"]),g=Je.apply(d,h)),g!==null){d=g.data;let[b,S]=Fy(d,{[h.id]:m});d=b;for(let w=0;w<S.length;w++){let v=S[w],_=v.pop();if(typeof _=="number"){let A=[_];for(let T=w+1;T<S.length;T++){let C=S[T],P=C[C.length-1];if(typeof P=="number"&&Ze.equal(v,C.slice(0,C.length-1)))A.push(P),S.splice(T,1);else break}let x=Ze.zoom(d,v);y=x.map((T,C)=>A.includes(C)?h.id:T),m=x,_=v.pop()}else{if(_==="alphaOverride"||_==="alpha"){m/=100;let A=m,x=Ze.zoom(d,v.slice(0,v.length-2)),T=x.layers.map(C=>C.id===v[v.length-1]?{...C,data:{...C.data,[_]:A}}:C);Object.setPrototypeOf(T,Object.getPrototypeOf(x.layers)),x.layers=T}y=h.id}p.push({type:0,path:v,props:{[_]:m}}),f.push({type:0,path:v,props:{[_]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let m=Je.apply(d,h);m!==null&&(p.push(m.actual),d=m.data,f.push(m.reverse))}}catch(m){if(m instanceof zi)return null;throw m}return{data:d,actual:p,reverse:f.reverse()}}l.apply=s})(Ss||(Ss={}));var jy=Symbol(),XP=Symbol(),rc=Symbol(),zn=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof tc);){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,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[rc];r&&r(),delete this._children[t]}}}},gd=class extends zn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,Fi.runOp(this._current,t),t.path)}},xd=class extends zn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,ce.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Uy={get(n,t){if(t===rc)return()=>{n._parent=null};if(t===jy)return n._current;if(t===XP)return n;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],a=oc(n,t,i);return a!==i?(r===void 0&&(r={},n._children=r),r[t]=a,a):i},has(n,t){return t 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,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},QP={...Uy,set(n,t,e){let r={type:0,props:{[t]:et(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},KP={...Uy,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},Ui=class extends zn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[rc]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=oc(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Hi=class extends zn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[rc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id,i=this._current[r].fi;t(this.data(this._current[r].id),o,i)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=oc(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function yd(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&Ze.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var tc=class extends zn{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){yd(this.ts,e,t),yd(this.actual,r,t),yd(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function oc(n,t,e){return e instanceof He?new Ui(n,t,e):e instanceof he?new Hi(n,t,e):e instanceof ce?new Proxy(new xd(n,t,e),KP):e!==null&&typeof e=="object"?Gi(e)?e:new Proxy(new gd(n,t,e),QP):e}function bd(n){let t=new tc(n);return[oc(t,"",n),t]}function tn(n,t){let[e,r]=bd(n);return t(e),r.result()}function et(n){return n instanceof Ui||n instanceof Hi?n._current:n!==null&&typeof n=="object"?n[jy]: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 t(i,a,s){let l=r(s,i);if(l!==void 0&&typeof l=="object"&&l!==null){let u={...a};return Object.keys(l).forEach(c=>{delete u[c]}),u}else return a}o.removeOverridden=t;function e(i,a){if((i instanceof He||i instanceof Ui)&&typeof a=="string")return i.data(a);if((i instanceof he||i instanceof Hi)&&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 r(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=r})(Ze||(Ze={}));function Hy(n,t){let e=[];if(t.length===n.length)for(var r=0;r<n.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}function Oe(n,t){let e=[];if(t.length<=n.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}var nc=class{},ws=class extends nc{constructor(e){super();this.id=e}},_s=class extends nc{constructor(e){super();this.data=e}};var Sd;try{Sd=new TextDecoder}catch{}var re,on,E=0;var Zy=[],wd=Zy,_d=0,Zt={},Ve,rn,yr=0,Qr=0,cr,Co,Ut=[],Ge,qy={useRecords:!1,mapsAsObjects:!0},As=class{},Pd=new As;Pd.name="MessagePack 0xC1";var qi=!1,Kr=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(re)return og(()=>(ac(),this?this.unpack(t,e):Kr.prototype.unpack.call(qy,t,e)));on=e>-1?e:t.length,E=0,_d=0,Qr=0,rn=null,wd=Zy,cr=null,re=t;try{Ge=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw re=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Kr){if(Zt=this,this.structures)return Ve=this.structures,ic();(!Ve||Ve.length>0)&&(Ve=[])}else Zt=qy,(!Ve||Ve.length>0)&&(Ve=[]);return ic()}unpackMultiple(t,e){let r,o=0;try{qi=!0;let i=t.length,a=this?this.unpack(t,i):cc.unpack(t,i);if(e){for(e(a);E<i;)if(o=E,e(ic())===!1)return}else{for(r=[a];E<i;)o=E,r.push(ic());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{qi=!1,ac()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function ic(){try{if(!Zt.trusted&&!qi){let t=Ve.sharedLength||0;t<Ve.length&&(Ve.length=t)}let n=at();if(E==on)Ve.restoreStructures&&Wy(),Ve=null,re=null,Co&&(Co=null);else if(E>on){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!qi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ve.restoreStructures&&Wy(),ac(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Wy(){for(let n in Ve.restoreStructures)Ve[n]=Ve.restoreStructures[n];Ve.restoreStructures=null}function at(){let n=re[E++];if(n<160)if(n<128){if(n<64)return n;{let t=Ve[n&63]||Zt.getStructures&&Jy()[n&63];return t?(t.read||(t.read=Od(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,Zt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[tg()]=at();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(at(),at());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=at();return t}else if(n<192){let t=n-160;if(Qr>=E)return rn.slice(E-yr,(E+=t)-yr);if(Qr==0&&on<140){let e=t<16?Cd(t):eg(t);if(e!=null)return e}return Ad(t)}else{let t;switch(n){case 192:return null;case 193:return cr?(t=at(),t>0?cr[1].slice(cr.position1,cr.position1+=t):cr[0].slice(cr.position0,cr.position0-=t)):Pd;case 194:return!1;case 195:return!0;case 196:return vd(re[E++]);case 197:return t=Ge.getUint16(E),E+=2,vd(t);case 198:return t=Ge.getUint32(E),E+=4,vd(t);case 199:return Gn(re[E++]);case 200:return t=Ge.getUint16(E),E+=2,Gn(t);case 201:return t=Ge.getUint32(E),E+=4,Gn(t);case 202:if(t=Ge.getFloat32(E),Zt.useFloat32>2){let e=lc[(re[E]&127)<<1|re[E+1]>>7];return E+=4,(e*t+(t>0?.5:-.5)>>0)/e}return E+=4,t;case 203:return t=Ge.getFloat64(E),E+=8,t;case 204:return re[E++];case 205:return t=Ge.getUint16(E),E+=2,t;case 206:return t=Ge.getUint32(E),E+=4,t;case 207:return Zt.int64AsNumber?(t=Ge.getUint32(E)*4294967296,t+=Ge.getUint32(E+4)):t=Ge.getBigUint64(E),E+=8,t;case 208:return Ge.getInt8(E++);case 209:return t=Ge.getInt16(E),E+=2,t;case 210:return t=Ge.getInt32(E),E+=4,t;case 211:return Zt.int64AsNumber?(t=Ge.getInt32(E)*4294967296,t+=Ge.getUint32(E+4)):t=Ge.getBigInt64(E),E+=8,t;case 212:if(t=re[E++],t==114)return Ky(re[E++]&63);{let e=Ut[t];if(e)return e.read?(E++,e.read(at())):e.noBuffer?(E++,e()):e(re.subarray(E,++E));throw new Error("Unknown extension "+t)}case 213:return t=re[E],t==114?(E++,Ky(re[E++]&63,re[E++])):Gn(2);case 214:return Gn(4);case 215:return Gn(8);case 216:return Gn(16);case 217:return t=re[E++],Qr>=E?rn.slice(E-yr,(E+=t)-yr):JP(t);case 218:return t=Ge.getUint16(E),E+=2,Qr>=E?rn.slice(E-yr,(E+=t)-yr):eO(t);case 219:return t=Ge.getUint32(E),E+=4,Qr>=E?rn.slice(E-yr,(E+=t)-yr):tO(t);case 220:return t=Ge.getUint16(E),E+=2,Yy(t);case 221:return t=Ge.getUint32(E),E+=4,Yy(t);case 222:return t=Ge.getUint16(E),E+=2,Xy(t);case 223:return t=Ge.getUint32(E),E+=4,Xy(t);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 ZP=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Od(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>ZP.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(at);return n.highByte===0&&(n.read=$y(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let a=n[o];r[a]=at()}return r}return e.count=0,n.highByte===0?$y(t,e):e}var $y=(n,t)=>function(){let e=re[E++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=Ve[r]||Jy()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Od(o,n)),o.read()};function Jy(){let n=og(()=>(re=null,Zt.getStructures()));return Ve=Zt._mergeStructures(n,Ve)}var Ad=sc,JP=sc,eO=sc,tO=sc;function sc(n){let t;if(n<16&&(t=Cd(n)))return t;if(n>64&&Sd)return Sd.decode(re.subarray(E,E+=n));let e=E+n,r=[];for(t="";E<e;){let o=re[E++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=re[E++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=re[E++]&63,a=re[E++]&63;r.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=re[E++]&63,a=re[E++]&63,s=re[E++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Pt.apply(String,r),r.length=0)}return r.length>0&&(t+=Pt.apply(String,r)),t}function Yy(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=at();return t}function Xy(n){if(Zt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[tg()]=at();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(at(),at());return t}}var Pt=String.fromCharCode;function eg(n){let t=E,e=new Array(n);for(let r=0;r<n;r++){let o=re[E++];if((o&128)>0){E=t;return}e[r]=o}return Pt.apply(String,e)}function Cd(n){if(n<4)if(n<2){if(n===0)return"";{let t=re[E++];if((t&128)>1){E-=1;return}return Pt(t)}}else{let t=re[E++],e=re[E++];if((t&128)>0||(e&128)>0){E-=2;return}if(n<3)return Pt(t,e);let r=re[E++];if((r&128)>0){E-=3;return}return Pt(t,e,r)}else{let t=re[E++],e=re[E++],r=re[E++],o=re[E++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){E-=4;return}if(n<6){if(n===4)return Pt(t,e,r,o);{let i=re[E++];if((i&128)>0){E-=5;return}return Pt(t,e,r,o,i)}}else if(n<8){let i=re[E++],a=re[E++];if((i&128)>0||(a&128)>0){E-=6;return}if(n<7)return Pt(t,e,r,o,i,a);let s=re[E++];if((s&128)>0){E-=7;return}return Pt(t,e,r,o,i,a,s)}else{let i=re[E++],a=re[E++],s=re[E++],l=re[E++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){E-=8;return}if(n<10){if(n===8)return Pt(t,e,r,o,i,a,s,l);{let u=re[E++];if((u&128)>0){E-=9;return}return Pt(t,e,r,o,i,a,s,l,u)}}else if(n<12){let u=re[E++],c=re[E++];if((u&128)>0||(c&128)>0){E-=10;return}if(n<11)return Pt(t,e,r,o,i,a,s,l,u,c);let d=re[E++];if((d&128)>0){E-=11;return}return Pt(t,e,r,o,i,a,s,l,u,c,d)}else{let u=re[E++],c=re[E++],d=re[E++],p=re[E++];if((u&128)>0||(c&128)>0||(d&128)>0||(p&128)>0){E-=12;return}if(n<14){if(n===12)return Pt(t,e,r,o,i,a,s,l,u,c,d,p);{let f=re[E++];if((f&128)>0){E-=13;return}return Pt(t,e,r,o,i,a,s,l,u,c,d,p,f)}}else{let f=re[E++],h=re[E++];if((f&128)>0||(h&128)>0){E-=14;return}if(n<15)return Pt(t,e,r,o,i,a,s,l,u,c,d,p,f,h);let m=re[E++];if((m&128)>0){E-=15;return}return Pt(t,e,r,o,i,a,s,l,u,c,d,p,f,h,m)}}}}}function vd(n){return Zt.copyBuffers?Uint8Array.prototype.slice.call(re,E,E+=n):re.subarray(E,E+=n)}function Gn(n){let t=re[E++];if(Ut[t])return Ut[t](re.subarray(E,E+=n));throw new Error("Unknown extension type "+t)}var Qy=new Array(4096);function tg(){let n=re[E++];if(n>=160&&n<192){if(n=n-160,Qr>=E)return rn.slice(E-yr,(E+=n)-yr);if(!(Qr==0&&on<180))return Ad(n)}else return E--,at();let t=(n<<5^(n>1?Ge.getUint16(E):n>0?re[E]:0))&4095,e=Qy[t],r=E,o=E+n-3,i,a=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ge.getUint32(r),i!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=re[r++],i!=e[a++]){r=1879048192;break}if(r===o)return E=r,e.string;o-=3,r=E}for(e=[],Qy[t]=e,e.bytes=n;r<o;)i=Ge.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=re[r++],e.push(i);let s=n<16?Cd(n):eg(n);return s!=null?e.string=s:e.string=Ad(n)}var Ky=(n,t)=>{var e=at();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=Ve[n];return o&&o.isShared&&((Ve.restoreStructures||(Ve.restoreStructures=[]))[n]=o),Ve[n]=e,e.read=Od(e,r),e.read()},rg=typeof self=="object"?self:global;Ut[0]=()=>{};Ut[0].noBuffer=!0;Ut[101]=()=>{let n=at();return(rg[n[0]]||Error)(n[1])};Ut[105]=n=>{let t=Ge.getUint32(E-4);Co||(Co=new Map);let e=re[E],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Co.set(t,o);let i=at();return o.used?Object.assign(r,i):(o.target=i,i)};Ut[112]=n=>{let t=Ge.getUint32(E-4),e=Co.get(t);return e.used=!0,e.target};Ut[115]=()=>new Set(at());var Td=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Ut[116]=n=>{let t=n[0],e=Td[t];if(!e)throw new Error("Could not find typed array for code "+t);return new rg[e](Uint8Array.prototype.slice.call(n,1).buffer)};Ut[120]=()=>{let n=at();return new RegExp(n[0],n[1])};Ut[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=E;E+=t-4,cr=[at(),at()],cr.position0=0,cr.position1=0;let r=E;E=e;try{return at()}finally{E=r}};Ut[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 og(n){let t=on,e=E,r=_d,o=yr,i=Qr,a=rn,s=wd,l=Co,u=cr,c=new Uint8Array(re.slice(0,on)),d=Ve,p=Ve.slice(0,Ve.length),f=Zt,h=qi,m=n();return on=t,E=e,_d=r,yr=o,Qr=i,rn=a,wd=s,Co=l,cr=u,re=c,qi=h,Ve=d,Ve.splice(0,Ve.length,...p),Zt=f,Ge=new DataView(re.buffer,re.byteOffset,re.byteLength),m}function ac(){re=null,Co=null,Ve=null}function ng(n){n.unpack?Ut[n.type]=n.unpack:Ut[n.type]=n}var lc=new Array(147);for(let n=0;n<256;n++)lc[n]=+("1e"+Math.floor(45.15-n*.30103));var cc=new Kr({useRecords:!1}),rO=cc.unpack,oO=cc.unpackMultiple,nO=cc.unpack,uc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},iO=new Float32Array(1),fj=new Uint8Array(iO.buffer,0,4);var dc;try{dc=new TextEncoder}catch{}var pc,Id,fc=typeof Buffer<"u",Md=fc?Buffer.allocUnsafeSlow:Uint8Array,lg=fc?Buffer:Uint8Array,ig=fc?4294967296:2144337920,U,ut,R=0,Zr,Jr=null,aO=/[\u0080-\uFFFF]/,Ps=Symbol("record-id"),Fn=class extends Kr{constructor(t){super(t),this.offset=0;let e,r,o,i,a,s,l=0,u=lg.prototype.utf8Write?function(x,T,C){return U.utf8Write(x,T,C)}:dc&&dc.encodeInto?function(x,T){return dc.encodeInto(x,U.subarray(T)).written}:!1,c=this;t||(t={});let d=t&&t.sequential,p=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=p?32:64),d&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,g=f+h+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],S=0,w=0;this.pack=this.encode=function(x,T){if(U||(U=new Md(8192),ut=new DataView(U.buffer,0,8192),R=0),Zr=U.length-10,Zr-R<2048?(U=new Md(U.length),ut=new DataView(U.buffer,0,U.length),Zr=U.length-10,R=0):R=R+7&2147483640,r=R,s=c.structuredClone?new Map:null,c.bundleStrings?(Jr=["",""],U[R++]=214,U[R++]=98,Jr.position=R-r,R+=4):Jr=null,o=c.structures,o){o.uninitialized&&(o=c._mergeStructures(c.getStructures()));let C=o.sharedLength||0;if(C>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let P=0;P<C;P++){let O=o[P];if(!O)continue;let M,I=o.transitions;for(let N=0,B=O.length;N<B;N++){let D=O[N];M=I[D],M||(M=I[D]=Object.create(null)),I=M}I[Ps]=P+64}l=C}d||(o.nextId=C+64)}i&&(i=!1),a=o||[];try{if(v(x),Jr){ut.setUint32(Jr.position+r,R-Jr.position-r);let C=Jr;Jr=null,v(C[0]),v(C[1])}if(c.offset=R,s&&s.idsToInsert){R+=s.idsToInsert.length*6,R>Zr&&A(R),c.offset=R;let C=lO(U.subarray(r,R),s.idsToInsert);return s=null,C}return T&ug?(U.start=r,U.end=R,U):U.subarray(r,R)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,b.length>0&&(b=[]);else if(b.length>0&&!d){for(let C=0,P=b.length;C<P;C++)b[C][Ps]=0;b=[]}if(i&&c.saveStructures){let C=o.sharedLength||f;o.length>C&&(o=o.slice(0,C));let P=U.subarray(r,R);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(x)):(l=C,P)}}T&mO&&(R=r)}};let v=x=>{R>Zr&&(U=A(R));var T=typeof x,C;if(T==="string"){let P=x.length;if(Jr&&P>=8&&P<4096){let I=aO.test(x);Jr[I?0:1]+=x,U[R++]=193,v(I?-P:P);return}let O;P<32?O=1:P<256?O=2:P<65536?O=3:O=5;let M=P*3;if(R+M>Zr&&(U=A(R+M)),P<64||!u){let I,N,B,D=R+O;for(I=0;I<P;I++)N=x.charCodeAt(I),N<128?U[D++]=N:N<2048?(U[D++]=N>>6|192,U[D++]=N&63|128):(N&64512)===55296&&((B=x.charCodeAt(I+1))&64512)===56320?(N=65536+((N&1023)<<10)+(B&1023),I++,U[D++]=N>>18|240,U[D++]=N>>12&63|128,U[D++]=N>>6&63|128,U[D++]=N&63|128):(U[D++]=N>>12|224,U[D++]=N>>6&63|128,U[D++]=N&63|128);C=D-R-O}else C=u(x,R+O,M);C<32?U[R++]=160|C:C<256?(O<2&&U.copyWithin(R+2,R+1,R+1+C),U[R++]=217,U[R++]=C):C<65536?(O<3&&U.copyWithin(R+3,R+2,R+2+C),U[R++]=218,U[R++]=C>>8,U[R++]=C&255):(O<5&&U.copyWithin(R+5,R+3,R+3+C),U[R++]=219,ut.setUint32(R,C),R+=4),R+=C}else if(T==="number")if(x>>>0===x)x<64?U[R++]=x:x<256?(U[R++]=204,U[R++]=x):x<65536?(U[R++]=205,U[R++]=x>>8,U[R++]=x&255):(U[R++]=206,ut.setUint32(R,x),R+=4);else if(x>>0===x)x>=-32?U[R++]=256+x:x>=-128?(U[R++]=208,U[R++]=x+256):x>=-32768?(U[R++]=209,ut.setInt16(R,x),R+=2):(U[R++]=210,ut.setInt32(R,x),R+=4);else{let P;if((P=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){U[R++]=202,ut.setFloat32(R,x);let O;if(P<4||(O=x*lc[(U[R]&127)<<1|U[R+1]>>7])>>0===O){R+=4;return}else R--}U[R++]=203,ut.setFloat64(R,x),R+=8}else if(T==="object")if(!x)U[R++]=192;else{if(s){let O=s.get(x);if(O){if(!O.id){let M=s.idsToInsert||(s.idsToInsert=[]);O.id=M.push(O)}U[R++]=214,U[R++]=112,ut.setUint32(R,O.id),R+=4;return}else s.set(x,{offset:R-r})}let P=x.constructor;if(P===Object)_(x,!0);else if(P===Array){C=x.length,C<16?U[R++]=144|C:C<65536?(U[R++]=220,U[R++]=C>>8,U[R++]=C&255):(U[R++]=221,ut.setUint32(R,C),R+=4);for(let O=0;O<C;O++)v(x[O])}else if(P===Map){C=x.size,C<16?U[R++]=128|C:C<65536?(U[R++]=222,U[R++]=C>>8,U[R++]=C&255):(U[R++]=223,ut.setUint32(R,C),R+=4);for(let[O,M]of x)v(O),v(M)}else{for(let O=0,M=pc.length;O<M;O++){let I=Id[O];if(x instanceof I){let N=pc[O];if(N.write){N.type&&(U[R++]=212,U[R++]=N.type,U[R++]=0),v(N.write.call(this,x));return}let B=U,D=ut,G=R;U=null;let L;try{L=N.pack.call(this,x,V=>(U=B,B=null,R+=V,R>Zr&&A(R),{target:U,targetView:ut,position:R-V}),v)}finally{B&&(U=B,ut=D,R=G,Zr=U.length-10)}L&&(L.length+R>Zr&&A(L.length+R),R=sO(L,U,R,N.type));return}}_(x,!x.hasOwnProperty)}}else if(T==="boolean")U[R++]=x?195:194;else if(T==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))U[R++]=211,ut.setBigInt64(R,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)U[R++]=207,ut.setBigUint64(R,x);else if(this.largeBigIntToFloat)U[R++]=203,ut.setFloat64(R,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");R+=8}else if(T==="undefined")this.encodeUndefinedAsNil?U[R++]=192:(U[R++]=212,U[R++]=0,U[R++]=0);else if(T==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+T)},_=this.useRecords===!1?this.variableMapSize?x=>{let T=Object.keys(x),C=T.length;C<16?U[R++]=128|C:C<65536?(U[R++]=222,U[R++]=C>>8,U[R++]=C&255):(U[R++]=223,ut.setUint32(R,C),R+=4);let P;for(let O=0;O<C;O++)v(P=T[O]),v(x[P])}:(x,T)=>{U[R++]=222;let C=R-r;R+=2;let P=0;for(let O in x)(T||x.hasOwnProperty(O))&&(v(O),v(x[O]),P++);U[C+++r]=P>>8,U[C+r]=P&255}:x=>{let T=Object.keys(x),C,P=a.transitions||(a.transitions=Object.create(null)),O=0;for(let I=0,N=T.length;I<N;I++){let B=T[I];C=P[B],C||(C=P[B]=Object.create(null),O++),P=C}let M=P[Ps];if(M)M>=96&&m?(U[R++]=((M-=96)&31)+96,U[R++]=M>>5):U[R++]=M;else{M=a.nextId,M||(M=64),M<y&&this.shouldShareStructure&&!this.shouldShareStructure(T)?(M=a.nextOwnId,M<g||(M=y),a.nextOwnId=M+1):(M>=g&&(M=y),a.nextId=M+1);let I=T.highByte=M>=96&&m?M-96>>5:-1;P[Ps]=M,a[M-64]=T,M<y?(T.isShared=!0,a.sharedLength=M-63,i=!0,I>=0?(U[R++]=(M&31)+96,U[R++]=I):U[R++]=M):(I>=0?(U[R++]=213,U[R++]=114,U[R++]=(M&31)+96,U[R++]=I):(U[R++]=212,U[R++]=114,U[R++]=M),O&&(S+=w*O),b.length>=h&&(b.shift()[Ps]=0),b.push(P),v(T))}for(let I=0,N=T.length;I<N;I++)v(x[T[I]])},A=x=>{let T;if(x>16777216){if(x-r>ig)throw new Error("Packed buffer would be larger than maximum buffer size");T=Math.min(ig,Math.round(Math.max((x-r)*(x>67108864?1.25:2),4194304)/4096)*4096)}else T=(Math.max(x-r<<2,U.length-1)>>12)+1<<12;let C=new Md(T);return ut=new DataView(C.buffer,0,T),U.copy?U.copy(C,0,r,x):C.set(U.slice(r,x)),R-=r,r=0,Zr=C.length-10,U=C}}useBuffer(t){U=t,ut=new DataView(U.buffer,U.byteOffset,U.byteLength),R=0}};Id=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,As];pc=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:a}=t(6);o[a++]=214,o[a++]=255,i.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:a}=t(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?ag(n,16,t):sg(fc?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==lg&&this.structuredClone?ag(n,Td.indexOf(e.name),t):sg(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function ag(n,t,e,r){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++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function sg(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function sO(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function lO(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,a)=>i.offset>a.offset?1:-1);e=t.pop();){let i=e.offset,a=e.id;n.copyWithin(i+r,i,o),r-=6;let s=i+r;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 nn(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)");Id.unshift(n.Class),pc.unshift(n)}ng(n)}var cg=new Fn({useRecords:!1}),cO=cg.pack,uO=cg.pack;var{NEVER:dO,ALWAYS:pO,DECIMAL_ROUND:fO,DECIMAL_FIT:hO}=uc,ug=512,mO=1024;var dg=new Fn({structuredClone:!0});nn({Class:ce.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,ce.prototype),n}});nn({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});nn({Class:He.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,He.prototype),n}});nn({Class:ws.prototype.constructor,type:4,write(n){return n.id},read(n){return new ws(n)}});nn({Class:_s.prototype.constructor,type:5,write(n){return n.data},read(n){return new _s(n)}});nn({Class:qe.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,qe.prototype),n}});function yO(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function Nd(n){if(Gi(n))return n;if(Array.isArray(n))return n.map(Nd);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=Nd(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var hc;(r=>{function n(o){return dg.pack(o)}r.serialize=n;function t(o){return dg.unpack(o)}r.deserialize=t;function e(o){return yO(n(Nd(o))).toString()}r.checksum=e})(hc||(hc={}));var ln="personal camera",cn="a218fcc3-276b-49b9-b485-49037fd14f5f",yg=2960946,dt=5526619;var Os;(d=>{function n(p,f){return p[0]===f[0]&&p[1]===f[1]}d.isEqual=n;function t(p,f,h){return[p[0]+(f[0]-p[0])*h,p[1]+(f[1]-p[1])*h]}d.lerp=t;function e(p,f){return[p[0]+f[0],p[1]+f[1]]}d.add=e;function r(p,f){return[p[0]-f[0],p[1]-f[1]]}d.sub=r;function o(p,f){return Math.pow(f[0]-p[0],2)+Math.pow(f[1]-p[1],2)}d.distanceSquared=o;function i(p,f){return Math.sqrt(o(p,f))}d.distance=i;function a(p,f){return p[0]*f[0]+p[1]*f[1]}d.dot=a;function s(p,f){return[p[0]*f,p[1]*f]}d.scalarMultiply=s;function l(p,f,h){let m=d.sub(f,p),y=d.sub(h,p),g=d.dot(m,y)/d.dot(m,m),b=d.scalarMultiply(m,g);return d.add(p,b)}d.projectionOnto=l;function u(p,f,h){return i(p,l(p,f,h))}d.projectionOntoDistance=u;function c(p,f){return[(p[0]+f[0])*.5,(p[1]+f[1])*.5]}d.center=c})(Os||(Os={}));var an;(s=>{function n(l,u){return l[0]===u[0]&&l[1]===u[1]&&l[2]===u[2]}s.isEqual=n;function t(l,u){return[l[0]+u[0],l[1]+u[1],l[2]+u[2]]}s.add=t;function e(l,u){return[l[0]-u[0],l[1]-u[1],l[2]-u[2]]}s.sub=e;function r(l,u){return[l[0]/u[0],l[1]/u[1],l[2]/u[2]]}s.div=r;function o(l,u){return[l[0]*u[0],l[1]*u[1],l[2]*u[2]]}s.mul=o;function i(l,u){return Math.hypot(l[0]-u[0],l[1]-u[1],l[2]-u[2])}s.dist=i;function a(l,u,c){return[l[0]+(u[0]-l[0])*c,l[1]+(u[1]-l[1])*c,l[2]+(u[2]-l[2])*c]}s.lerp=a})(an||(an={}));var pg;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(pg||(pg={}));var sn;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,a){let s=a.slice(0);for(var l=0,u=a.length;l<u;l+=3){let c=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])/c,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/c,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/c}return s}o.applyMatrix4=r})(sn||(sn={}));var Ot;(c=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}c.isRGB=n,c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.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}}c.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}c.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}c.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}c.toHex=s;function l(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}c.equals=l;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}c.lerp=u})(Ot||(Ot={}));var we;(l=>{l.white={...Ot.white,a:1},l.transparent={...Ot.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}l.from0to1=e;function r(u,c){return{...Ot.fromHex(u),a:c}}l.fromHexAndA=r;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}}l.toRgb255a1=o;function i(u,c){return Ot.equals(u,c)&&u.a===c.a}l.equals=i;function a(u,c,d){return{r:u.r+(c.r-u.r)*d,g:u.g+(c.g-u.g)*d,b:u.b+(c.b-u.b)*d,a:u.a+(c.a-u.a)*d}}l.lerp=a;function s({r:u,g:c,b:d,a:p}=l.white){return`rgba(${u*255}, ${c*255}, ${d*255}, ${p})`}l.toStyle=s})(we||(we={}));var mc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(mc||(mc={}));var fg;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(fg||(fg={}));var hg;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(hg||(hg={}));var mg;(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]))(mg||(mg={}));function Dd(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 t(r){return e.all.includes(r)}e.is=t})(Ir||(Ir={}));var un;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(un||(un={}));var eo;(e=>{function n(r,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(r[0],r[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:[r[0]+r[0]*o,0,0]},grid:{count:[2,2,2],size:r.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 t(r,o){let i={...r};if(gO.forEach(a=>{Object.assign(i,{[a]:o[a]??r[a]})}),i.radial={...r.radial},o.radial){let a=r.radial,s=o.radial;xO.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...r.linear},o.linear){let a=r.linear,s=o.linear;bO.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...r.grid},o.grid){let a=r.grid,s=o.grid;vO.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...r.toObject},o.toObject){let a=r.toObject,s=o.toObject;SO.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...r.randomnessObject},o.randomnessObject){let a=r.randomnessObject,s=o.randomnessObject;wO.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=t})(eo||(eo={}));var yc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["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 t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}r.toOps=e})(yc||(yc={}));var gO=["count"],xO=["radius","start","end","position","scale","rotation"],bO=["position","scale","rotation"],vO=["count","size"],SO=["count","position","scale","rotation"],wO=["strength","scale","rotation","position","movement","seed","freqScale"];var gc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(gc||(gc={}));var xc;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:we.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:we.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:we.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(xc||(xc={}));var Wi;(r=>(r.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},r.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},r.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:r.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeLoopDelayStart:"end",emitTimeDuration:1,...r.defaultCollisionData}))(Wi||(Wi={}));var dn;(t=>t.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(dn||(dn={}));var Ed;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Ed||(Ed={}));var Bd;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Bd||(Bd={}));var bc;(t=>t.defaultData={...Bd.defaultData,...Ed.defaultData})(bc||(bc={}));var gg;(t=>{function n(e,r){let o=[];if("material"in e){let i=typeof e.material=="string"?r.materials[e.material]??r.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"?r.materials[i]??r.lib.materials[i]?.asset:i;a&&o.push(a)}return o}t.getMaterialData=n})(gg||(gg={}));var $i;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))($i||($i={}));var xg;(t=>{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"}t.is=n})(xg||(xg={}));function vg(n){return n.type!=="displace"}var bg;(t=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=n})(bg||(bg={}));var Sg=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],wg=["wrapping","image","video","name","minFilter"],ht;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let u=i.texture;u&&Object.assign(u,s)}}o.patch=n;function t(i,a){return i==="light"&&a?e(a):r(i)}o.defaultData=t;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 r(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],minFilter:1008},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:$i.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],minFilter:1008},crop:!1};case"color":return{...a,type:"color",color:Ot.fromHex(dt)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Ot.fromHex(6710886),a:1},colorB:{...Ot.fromHex(6710886),a:1},colorC:{...Ot.fromHex(16777215),a:1},colorD:{...Ot.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:we.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:we.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:we.fromHexAndA(0,1),contourColor:we.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],minFilter:1008}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Ot.fromHex(0),a:1},colorB:{...Ot.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(ht||(ht={}));var Bt;(u=>{function n(c){return!c.layers.some(p=>p.data.type==="texture"&&p.data.projection!==0||p.data.type==="depth"&&!p.data.isWorldSpace||p.data.type==="noise"||p.data.type==="displace")}u.isMergable=n;function t(c){let d="";return c.layers.forEach(p=>{Object.entries(p.data).forEach(([f,h])=>{d+=`${f}${h}`,Array.isArray(h)?h.forEach(m=>d+=`${m}`):typeof h=="object"?Object.values(h).forEach(m=>{typeof m=="number"?d+=`${m.toFixed(4)}`:d+=`${m}`}):d+=`${h}`})}),d}u.getHash=t;function e(){return{layers:new he}}u.defaultEmptyData=e;function r(c="layer1",d="layer2"){return i("phong",c,d)}u.defaultData=r;function o(c,d){return{...c,name:d}}u.withName=o;function i(c,d="layer1",p="layer2"){let f=new he;return f.push({fi:0,data:ht.defaultData("light",c),id:d}),f.push({fi:1,data:ht.defaultData("color"),id:p}),{layers:f}}u.defaultTwoLayerData=i;function a(c){let d=ht.defaultData("texture");c&&Object.assign(d.texture,{image:c});let p=new he;return p.push({fi:0,data:d,id:"layer1"}),p.push({fi:1,data:{...ht.defaultData("transmission"),alpha:1},id:"layer2"}),p.push({fi:2,data:{...ht.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:p}}u.defaultUIObjectMaterial=a;function s(c,d="phong",p="layer1",f="layer2"){let h=ht.defaultData("texture");Object.assign(h.texture,{image:c});let m=new he;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:ht.defaultData("light",d),id:f}),{layers:m}}u.defaultTwoLayerTextureData=s;function l(c,d="phong",p="layer1",f="layer2"){let h=ht.defaultData("video");Object.assign(h.texture,{video:c});let m=new he;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:ht.defaultData("light",d),id:f}),{layers:m}}u.defaultTwoLayerVideoTextureData=l})(Bt||(Bt={}));var Yi;(t=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Yi||(Yi={}));var Xi;(t=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=n})(Xi||(Xi={}));var Ld={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var vc;(t=>{function n(e,r){let o={...e};return _O.forEach(i=>{Object.assign(o,{[i]:r[i]??e[i]})}),o}t.merge=n})(vc||(vc={}));var Sc={shape:Ld,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},_O=["depth","offset","angle","twist","startScale","endScale"];var Cs;(e=>{function n(r){return r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"||r==="UIGeometry"}e.is2DParametricMesh=n;function t(r){return r==="PolygonGeometry"||r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"||r==="PathGeometry"||r==="VectorGeometry"||r==="ConeGeometry"||r==="CubeGeometry"||r==="CylinderGeometry"||r==="DodecahedronGeometry"||r==="HelixGeometry"||r==="IcosahedronGeometry"||r==="LatheGeometry"||r==="PyramidGeometry"||r==="SphereGeometry"||r==="PlaneGeometry"||r==="BackdropGeometry"||r==="TorusGeometry"||r==="TorusKnotGeometry"||r==="BooleanGeometry"||r==="TextGeometry"}e.isParametricMesh=t})(Cs||(Cs={}));var wc;(t=>{function n(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,vc.merge(o.extrusion,r.extrusion))),o}t.merge=n})(wc||(wc={}));var pn;(t=>{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:Xi.defaultData(),extrusion:Sc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Yi.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}t.defaultData=n})(pn||(pn={}));var _c;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:Ot.white,near:.1,far:2e3})(_c||(_c={}));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,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(Ac||(Ac={}));var Rd;(t=>t.defaultData={softShadowQuality:"low"})(Rd||(Rd={}));var Vd;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Vd||(Vd={}));var zd;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(zd||(zd={}));var Ts;(t=>t.defaultData={usePhysics:!1,gravity:-10})(Ts||(Ts={}));var Gd;(t=>t.defaultData={playCamera:ln,gameControlObject:null})(Gd||(Gd={}));var Pc;(t=>t.defaultData={backgroundColor:we.fromHexAndA(yg,1),postprocessing:Ac.defaultData,fog:_c.defaultData,globalPhysics:Ts.defaultData,ambient:Vd.defaultData,ao:zd.defaultData,shadow:Rd.defaultData,publish:Gd.defaultData})(Pc||(Pc={}));var Oc;(t=>t.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Oc||(Oc={}));var _g;(e=>{function n(r){return r==="Component"||r==="Instance"}e.isComponentRelated=n;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(_g||(_g={}));var Qi;(o=>{o.identity={...mc.identity,hiddenMatrix:sn.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;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 r(i,a){return Pl({position:an.isEqual(i.position,a.position)?void 0:a.position,rotation:an.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:an.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:sn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(Qi||(Qi={}));var gt;(t=>t.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,physics:dn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Qi.identity,cloner:null})(gt||(gt={}));var Cc;(t=>t.defaultData={type:"Empty",...gt.defaultData})(Cc||(Cc={}));var Ag;(t=>t.defaultData={type:"ParticleCollider",...Oc.defaultData,...gt.defaultData})(Ag||(Ag={}));var Pg;(t=>t.defaultData={type:"Component",...gt.defaultData})(Pg||(Pg={}));var Og;(t=>t.defaultData={type:"Particle",...gt.defaultData,...Wi.defaultData})(Og||(Og={}));var kn;(t=>t.defaultData={type:"Mesh",...gt.defaultData,...bc.defaultData})(kn||(kn={}));var jn;(t=>t.defaultData={...gt.defaultData,...Qi.identity,position:[0,0,un.DefaultTargetOffset],...un.defaultData})(jn||(jn={}));var Tc;(e=>{function n(r){return{...gt.defaultData,...xc.defaultData(r)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Tc||(Tc={}));var Ki;(e=>{function n(r,o,i=0){for(;i<o.length;){let a=r?r[o[i]]:void 0;if(o.length===i+1)return a;if(a)r=a.descendants,i+=1;else return}}e.resolveWithDes=n;function t(r,o,i=0){let a=n(r,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(Ki||(Ki={}));var to;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...gt.defaultData,...s,component:a,overrides:new qe,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=r;function o(a){let s=Qi.fromObject(a.data);return r(a.id,s)}i.fromComponentData=o})(to||(to={}));var To;(e=>{e.defaultData={type:"Page",...gt.defaultData,physics:{...dn.defaultData,fusedBody:!1},...Pc.defaultData,camera:jn.defaultData};function t(r){return r.uiScene!==void 0}e.isUIPage=t})(To||(To={}));var Mc;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:sn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:dn.defaultData,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...un.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...gt.defaultData,...kn.defaultData,geometry:pn.defaultData("RectangleGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...gt.defaultData,...kn.defaultData,geometry:pn.defaultData("BooleanGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...gt.defaultData,...kn.defaultData,geometry:pn.defaultData("TextGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")}))(Mc||(Mc={}));var Un;(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 t(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=tn(s.material,l=>{if(typeof l!="string")for(let[u,c]of Object.entries(a.material.layers)){let d=l.layers.data(u);d&&ht.patch(d,c)}}).data),s.materials&&a.materials&&(s.materials=tn(s.materials,l=>{for(let u=0;u<s.materials.length;u++){let c=a.materials[u];if(typeof c!="string")for(let[d,p]of Object.entries(c.layers)){let f=l[u]?.layers?.data(d);f&&ht.patch(f,p)}}}).data),s}function e(i,a){let s,l=[],u={orthographic:0,perspective:0,geometry:0};function c(d,p){for(let[f,h]of Object.entries(p.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...d,"layers",f,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};l.push(g)}}}for(let[d,p]of Object.entries(a))if(d!=="name")if(d==="cloner")l.push(...yc.toOps(p,["cloner"]));else if(d==="pathSnapping")l.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")c(["material"],p);else if(d==="materials")for(let[f,h]of Object.entries(p))c(["materials",f],h);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};l.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[d]=p;return l}o.toOps=e;function r(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Qi.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:wc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:eo.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:eo.merge(s.cloner,a.cloner)});else if(gc.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=Ot.clone(l.color))}return s}o.patch=r})(Un||(Un={}));var Zi;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Zi||(Zi={}));var Nr;(t=>t.defaultData={orbitControls:Zi.defaultData,playPage:cn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,i=0;return r<5?i=-30:r<10&&(i=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(Nr||(Nr={}));var Fd;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Fd||(Fd={}));var kd;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(kd||(kd={}));var Mo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Fd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:kd.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Mo||(Mo={}));var Cg;(e=>{function n(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function t(r,o,i){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Ji.getComponentData(r,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=t})(Cg||(Cg={}));var Io;(l=>{l.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function t(u={withLight:!0,withSquare:!0}){let c=[],d=Mc.defaultMeshObject;u.withLight===!0&&c.push({fi:-1,data:Tc.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),u.withSquare===!0&&c.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:d,children:[]});let p=new He;return p.push({fi:1,id:cn,data:{...To.defaultData,name:"Scene 1"},children:c}),p}l.defaultData={objects:t(),publish:Nr.defaultData,styles:Mo.defaultData()},l.emptyDataWithoutPage=function(){return{objects:new He,publish:Nr.defaultData,styles:Mo.defaultData()}},l.emptyDataWithPage=function(u){return{objects:t(u),publish:Nr.defaultData,styles:Mo.defaultData()}},l.emptyData=function(){return{objects:new He,publish:{...Nr.defaultData},styles:Mo.defaultData()}};function a(u){return{...l.defaultData,objects:jt(u,He.prototype)}}l.withObjs=a;function s(u,c){return a([{id:u,data:c,children:[],fi:0}])}l.withObj=s})(Io||(Io={}));var ea;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ea||(ea={}));var ta;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ta||(ta={}));var Ic;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function t(a){return typeof a=="number"}i.isNumber=t;function e(a){return typeof a=="boolean"}i.isBoolean=e;function r(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=r;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})(Ic||(Ic={}));var jd;(t=>t.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(jd||(jd={}));var Tg;(t=>t.all=[...jd.all,"components"])(Tg||(Tg={}));var Mg;(t=>{function n(){return{images:new ce,videos:new ce,colors:new ce,audios:new ce,particles:new ce,fonts:new ce,materials:new ce,components:new ce,variables:new ce}}t.defaultData=n})(Mg||(Mg={}));var No;(t=>{function n(){return{images:new ce,videos:new ce,colors:new ce,audios:new ce,particles:new ce,fonts:new ce,materials:new ce,components:new ce,variables:new ce}}t.defaultData=n})(No||(No={}));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"},jt(a,ce.prototype)}i.defaultColors=n;function t(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...ta.emptyImage,name:"AI generated image"}),jt(s,ce.prototype)}i.defaultImages=t;function e(){return{catelogs:new ce,materials:new ce,images:new ce,videos:new ce,colors:new ce,audios:new ce,particles:new ce,fonts:new ce,variables:new he,lib:No.defaultData()}}i.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),u=Math.floor((a-l*3600)/60),c=Math.round(a-l*3600-u*60);return{textValue:[l,u,c]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),u=Math.round(a-l*60);return{textValue:[l,u]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(xr||(xr={}));import{MathUtils as Ec}from"three";var Nc;(t=>t.list=["idle","move","jump","run"])(Nc||(Nc={}));var Dc;(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 he,move:new he,jump:new he,run:new he},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:we.fromHexAndA(3728051,1)}}))(Dc||(Dc={}));function Ig(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Mr(et(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...et(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Do(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function Eo(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,i)=>{o===void 0&&(r.materials[i]=Bt.defaultData(),o=r.materials[i]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Bt.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Bt.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==qe.prototype&&t(o.material)})})}function AO(n){Object.assign(n.scene.publish,{orbitControls:{...Zi.defaultData,...et(n.scene.publish.orbitControls)}})}function PO(n){Object.assign(n.scene.publish.settings,{video:{...Nr.defaultData.settings.video,...et(n.scene.publish.settings.video)}})}function OO(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((Sg.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(i))(wg.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(a=>{t(a)})})})}function CO(n){n.scene.publish.withBackground=!0}function TO(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function MO(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function IO(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function NO(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.unproxy().parent(t);if(r){let o=et(n.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=et(e).booleanExclude!==!0)}})}function DO(n){n.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function EO(n){function t(r){Object.setPrototypeOf(r,qe.prototype),r.texture&&Object.setPrototypeOf(r.texture,qe.prototype)}function e(r){Object.setPrototypeOf(r,qe.prototype);for(let o in r)t(r[o])}n.scene.objects.traverse((r,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=et(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],u=et(l).layers;e(u),l.layers=u}})})}function Ng(n){n.layers===void 0&&Object.assign(n,Bt.defaultTwoLayerData("lambert"))}function Ud(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...et(t),colors:e,steps:r};Object.assign(t,o)}})}function BO(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Dg(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Ud(r)}):"material"in e&&typeof e.material!="string"&&Ud(e.material)}),Object.values(n.shared.materials).forEach(t=>Ud(t))}function LO(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,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 RO(n){n.shared.audios=jt({},ce.prototype)}function VO(n){n.shared.videos=jt({},ce.prototype)}function zO(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function GO(n){Object.entries(et(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(et(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function FO(n){n.scene.publish.settings.web.preload=!1}function Eg(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function Bg(n){n.layers&&n.layers.forEach(t=>{vg(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function kO(n){n.shared.fonts=jt({},ce.prototype)}function jO(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 UO(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=Bt.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=jO(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...gt.defaultData,...kn.defaultData,flatShading:!1,wireframe:!1,geometry:{...pn.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:et(o.states),events:et(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=et(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function HO(n){let t={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,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new he,move:new he,jump:new he}});else{let i=new he;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:Ec.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},c={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(c,Mr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(c,{control1:{...a.control1},control2:{...a.control2}});let d={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},p={state:a.state,...d,...c},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:Ec.generateUUID(),data:u},{fi:1,id:Ec.generateUUID(),data:p})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function qO(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let a=new he,s=[];if(e.events.forEach((l,u,c)=>{if(l.type==="Audio"&&l.trigger===i){let d;s.push(u),l.interaction==="play"?d={...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")&&(d={...Mr(l,"interaction","delay","object","playAudio"),type:"Audio"}),d&&a.push({fi:c,id:u,data:d})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(u=>u.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Ec.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Lg(n){let t=n.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=ht.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function Rg(n){Do(n,Lg),Eo(n,Lg)}function WO(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function $O(n){n.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function YO(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Bt.defaultTwoLayerData("phong"))})}function XO(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((t,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function QO(n){n.scene.objects.traverse((t,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function KO(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 ZO(n){let{video:t}=n.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function JO(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function eC(n){let t=n.scene.environment.usePhysics;n.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function tC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=Dc.defaultDataThirdPerson.navmesh)})})}function rC(n){n.scene.styles||(n.scene.styles=Mo.defaultData())}function Vg(n){n.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function oC(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}),Eo(n,Vg),Do(n,Vg)}function nC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new he})})})}function iC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function zg(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function Gg(n,t){if(t<1&&(Eo(n,Ig),Do(n,Ig),n.schema=1),t<2&&(AO(n),n.schema=2),t<3&&(OO(n),n.schema=3),t<4&&(CO(n),n.schema=4),t<5&&(TO(n),n.schema=5),t<6&&(MO(n),n.schema=6),t<7&&(IO(n),n.schema=7),t<8&&(n.schema=8),t<9&&(Dg(n),n.schema=9),t<10&&(BO(n),n.schema=10),t<11&&(LO(n),n.schema=11),t<12&&(Dg(n),n.schema=12),t<13&&(RO(n),n.schema=13),t<14&&(zO(n),n.schema=14),t<15&&(GO(n),n.schema=15),t<16&&(FO(n),n.schema=16),t<17&&(Eo(n,Eg),Do(n,Eg),n.schema=17),t<18&&(Eo(n,Ng),Do(n,Ng),n.schema=18),t<19&&(PO(n),n.schema=19),t<20&&(kO(n),UO(n),n.schema=20),t<21&&(HO(n),qO(n),n.schema=21),t<22&&(Rg(n),n.schema=22),t<23&&(WO(n),n.schema=23),t<24&&($O(n),n.schema=24),(t<25||n.shared.videos===void 0)&&(VO(n),t<25&&(n.schema=25)),t<26&&(NO(n),n.schema=26),t<27&&(DO(n),n.schema=27),t<28&&(Rg(n),n.schema=28),t<29&&(EO(n),n.schema=29),t<30&&(YO(n),n.schema=30),t<31&&(XO(n),n.schema=31),t<33&&(QO(n),n.schema=33),t<34&&(KO(n),n.schema=34),t<35&&(ZO(n),n.schema=35),t<36&&(JO(n),n.schema=36),t<37&&(eC(n),n.schema=37),t<38&&(Eo(n,Bg),Do(n,Bg),n.schema=38),t<39&&(tC(n),n.schema=39),t<40&&(rC(n),n.schema=40),t<41&&(oC(n),n.schema=41),t<42&&(nC(n),n.schema=42),t<43&&(iC(n),n.schema=43),t<99){Eo(n,zg),Do(n,zg),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=ln);let e=et(n.scene.objects),r=n.scene.objects;n.scene.publish.playPage=cn,r.insertBefore(null,null,[{id:cn,data:{...To.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:{...Ts.defaultData,...Mr(n.scene.environment,"usePhysics","gravity")},camera:et(n.scene.ownerCamera)??To.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Io.TRASH_CAN_ID&&r.move(cn,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,dn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function Fg(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function aC(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}function sC(n){Array.isArray(et(n.events))&&n.events?.forEach(t=>{"disabled"in t||(t.disabled=!1),(t.type==="MouseDown"||t.type==="MouseUp"||t.type==="MousePress")&&(t.mode=t.mode||"Object")})}var ra=180/Math.PI;function kg(n){n.rotation=n.rotation.slice(0,3).map(t=>t*ra)}function jg(n){kg(n),n.type==="Page"&&kg(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*ra))});let t=n.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*ra),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*ra),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=ra,t.extrusion.twist*=ra),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(et(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 lC(n){n.shared.variables=jt({},ce.prototype)}function cC(n){let t=et(n.shared.variables);n.shared.variables=jt(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),he.prototype)}var ro=111;function Ug(n,t){t(n.data);for(let e of n.children)Ug(e,t)}function uC(n){let t=n.schema??104;t!==ro&&t<105&&(Ug(n.asset,jg),n.schema=105)}function dC(n){n.shared.particles=jt({},ce.prototype),n.shared.lib&&(n.shared.lib.particles=No.defaultData().particles)}function pC(n){n.scene.objects.traverse((t,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function Bc(n){let t=n.schema??0;if(t!==ro){console.warn("updating from ",t,"to ",ro),Gg(n,t),t<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Nr.defaultData.joystickSizeAndXYOffset),n.schema=100),t<101&&(Eo(n,Fg),Do(n,Fg),n.schema=101),t<102&&(aC(n),n.schema=102),t<104&&(n.shared.catelogs=new ce,n.shared.lib=No.defaultData(),n.schema=104),t<105&&(lC(n),n.scene.objects.traverse((e,r)=>{jg(r)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))uC(e);t<106&&(cC(n),n.schema=106),t<107&&(n.shared.lib.variables=No.defaultData().variables,n.schema=107),t<109&&(dC(n),n.schema=109),t<110&&(pC(n),n.schema=110),t<111&&(n.scene.objects.traverse((e,r)=>{sC(r)}),n.schema=111)}}var Ji;(l=>{l.defaultData={schema:ro,scene:Io.defaultData,frames:new ce().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors()}},l.emptyDataForImports=function(u){let c=Io.emptyDataWithPage(u);return{schema:ro,scene:c,frames:new ce().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors(),images:xr.defaultImages(u)}}},l.emptyData=function(){return{schema:ro,scene:Io.emptyDataWithPage(),frames:new ce().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:xr.emptyData()}},l.clipboard2dData=function(){return{schema:ro,scene:Io.emptyData(),frames:new ce,shared:xr.emptyData()}},l.collabHelper={...Ss,updateSchema(u){return(u.schema??0)<ro?tn(u,Bc):(u.schema??0)-ro}};function i(u){let c=l.collabHelper.updateSchema(u);return typeof c=="number"?c===0?u:null:c.data}l.updateSchemaDirectly=i;function a(u){return{...u,shared:{...u.shared,lib:No.defaultData()}}}l.withoutLib=a;function s(u,c){let d=u.scene.objects.get(c);if(d&&d.data.type==="Component")return d;{let p=u.shared.lib.components[c];if(p)return p.asset}}l.getComponentData=s})(Ji||(Ji={}));var Hg;(t=>{function n(e){return!0}t.is=n})(Hg||(Hg={}));var Lc;(r=>{r.defaultData={position:[0,0],scale:[1,1],rotation:0};function t(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale}}r.merge=t;function e(o,i){return Pl({position:Os.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:Os.isEqual(o.scale,i.scale)?void 0:i.scale})}r.diff=e})(Lc||(Lc={}));var Hd;(t=>t.defaultData={horizontalConstraint:0,verticalConstraint:0})(Hd||(Hd={}));var Rc;(t=>t.defaultData={opacity:1,fill:{color:we.white,enabled:!0},stroke:{color:we.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:we.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:we.from0to1([0,0,0,1]),enabled:!1,spread:0}})(Rc||(Rc={}));var Hn;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function t(a,s){if(s===void 0)return a;let l={...a},u=["width","height","cornerRadius"];for(let c of u)c in l&&c in s&&s[c]!==void 0&&Object.assign(l,{[c]:s[c]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function r(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,Lc.merge(l,s)),l=t(l,s),l=e(l,s),l}i.patch=r;function o(a,s){let l,u=[];for(let[c,d]of Object.entries(s))c!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},u.push(l)),l.props[c]=d);return u}i.toOps=o})(Hn||(Hn={}));var Ms;(t=>t.defaultData={...Lc.defaultData,...Hd.defaultData,states:new he,events:new he,visible:!0,raycastLock:!1})(Ms||(Ms={}));var Is;(t=>t.defaultData={...Ms.defaultData,...Rc.defaultData})(Is||(Is={}));var Vc;(t=>t.defaultData={cornerRadius:[0,0,0,0]})(Vc||(Vc={}));var qd;(t=>t.defaultData={...Is.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(qd||(qd={}));var oa;(t=>t.defaultData={...Is.defaultData,...Vc.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(oa||(oa={}));var Wd;(t=>t.defaultData={...Is.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"})(Wd||(Wd={}));var qg;(t=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"}t.is=n})(qg||(qg={}));var Ns;(t=>t.defaultData={...Ms.defaultData,name:"Group",type:"group2d"})(Ns||(Ns={}));var $d;(t=>t.defaultData={...Ms.defaultData,...Vc.defaultData,...Rc.defaultData,name:"Frame",type:"frame2d",width:200,height:200,fill:{color:we.fromHexAndA(dt,1),enabled:!0},stroke:{color:we.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}})($d||($d={}));var Bo;(o=>{function n(i){switch(i){case"rectangle2d":return{...oa.defaultData};case"ellipse2d":return{...qd.defaultData};case"text2d":return{...Wd.defaultData};case"vector2d":return{...oa.defaultData};case"frame2d":return{...$d.defaultData};case"group2d":return{...Ns.defaultData}}}o.defaultData=n;function t(i){return"width"in i&&"height"in i?[typeof i.width=="number"?i.width*.5:0,typeof i.height=="number"?i.height*.5:0]:[0,0]}o.getPivot=t;function e(i){return i.type==="rectangle2d"||i.type==="ellipse2d"||i.type==="text2d"||i.type==="frame2d"}o.isResizeable=e;function r(i){return i.type==="rectangle2d"||i.type==="frame2d"}o.hasCorners=r})(Bo||(Bo={}));var zc;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new He},e.emptyData=function(){return{type:"scene2d",objects:new He}}))(zc||(zc={}));var Ja=kt($g());import{Object3D as lN,Vector3 as fr,Euler as If,MathUtils as Cb,Matrix4 as li}from"three";var fC=.5*(Math.sqrt(3)-1),Ds=(3-Math.sqrt(3))/6,hC=1/3,oo=1/6,aH=(Math.sqrt(5)-1)/4,sH=(5-Math.sqrt(5))/20,Es=n=>Math.floor(n)|0,Yg=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]),Xd=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 Gc(n=Math.random){let t=Qg(n),e=new Float64Array(t).map(o=>Yg[o%12*2]),r=new Float64Array(t).map(o=>Yg[o%12*2+1]);return function(i,a){let s=0,l=0,u=0,c=(i+a)*fC,d=Es(i+c),p=Es(a+c),f=(d+p)*Ds,h=d-f,m=p-f,y=i-h,g=a-m,b,S;y>g?(b=1,S=0):(b=0,S=1);let w=y-b+Ds,v=g-S+Ds,_=y-1+2*Ds,A=g-1+2*Ds,x=d&255,T=p&255,C=.5-y*y-g*g;if(C>=0){let M=x+t[T],I=e[M],N=r[M];C*=C,s=C*C*(I*y+N*g)}let P=.5-w*w-v*v;if(P>=0){let M=x+b+t[T+S],I=e[M],N=r[M];P*=P,l=P*P*(I*w+N*v)}let O=.5-_*_-A*A;if(O>=0){let M=x+1+t[T+1],I=e[M],N=r[M];O*=O,u=O*O*(I*_+N*A)}return 70*(s+l+u)}}function Xg(n=Math.random){let t=Qg(n),e=new Float64Array(t).map(i=>Xd[i%12*3]),r=new Float64Array(t).map(i=>Xd[i%12*3+1]),o=new Float64Array(t).map(i=>Xd[i%12*3+2]);return function(a,s,l){let u,c,d,p,f=(a+s+l)*hC,h=Es(a+f),m=Es(s+f),y=Es(l+f),g=(h+m+y)*oo,b=h-g,S=m-g,w=y-g,v=a-b,_=s-S,A=l-w,x,T,C,P,O,M;v>=_?_>=A?(x=1,T=0,C=0,P=1,O=1,M=0):v>=A?(x=1,T=0,C=0,P=1,O=0,M=1):(x=0,T=0,C=1,P=1,O=0,M=1):_<A?(x=0,T=0,C=1,P=0,O=1,M=1):v<A?(x=0,T=1,C=0,P=0,O=1,M=1):(x=0,T=1,C=0,P=1,O=1,M=0);let I=v-x+oo,N=_-T+oo,B=A-C+oo,D=v-P+2*oo,G=_-O+2*oo,L=A-M+2*oo,V=v-1+3*oo,z=_-1+3*oo,k=A-1+3*oo,$=h&255,q=m&255,H=y&255,X=.6-v*v-_*_-A*A;if(X<0)u=0;else{let F=$+t[q+t[H]];X*=X,u=X*X*(e[F]*v+r[F]*_+o[F]*A)}let j=.6-I*I-N*N-B*B;if(j<0)c=0;else{let F=$+x+t[q+T+t[H+C]];j*=j,c=j*j*(e[F]*I+r[F]*N+o[F]*B)}let Y=.6-D*D-G*G-L*L;if(Y<0)d=0;else{let F=$+P+t[q+O+t[H+M]];Y*=Y,d=Y*Y*(e[F]*D+r[F]*G+o[F]*L)}let W=.6-V*V-z*z-k*k;if(W<0)p=0;else{let F=$+1+t[q+1+t[H+1]];W*=W,p=W*W*(e[F]*V+r[F]*z+o[F]*k)}return 32*(u+c+d+p)}}function Qg(n){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(n()*(256-r)),i=e[r];e[r]=e[o],e[o]=i}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as mC}from"three";var Dr=new mC,Fc=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let i=1;Dr.a.fromBufferAttribute(t,o),Dr.b.fromBufferAttribute(t,o+1),Dr.c.fromBufferAttribute(t,o+2),i*=Dr.getArea(),e[o/3]=i}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,i=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){i=a;break}else t<e[a]?o=a-1:r=a+1}return i}sampleFace(t,e,r){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Dr.a.fromBufferAttribute(this.positionAttribute,t*3),Dr.b.fromBufferAttribute(this.positionAttribute,t*3+1),Dr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Dr.a,o).addScaledVector(Dr.b,i).addScaledVector(Dr.c,1-(o+i)),Dr.getNormal(r),this}};import{Object3D as vC}from"three";var Jg=kt(Zg());import{Object3D as yC,Matrix4 as no}from"three";var gC=new no,xC=new no,bC=new no,na;(t=>{function n(e){return e&&e.__isSPEObject}t.is=n})(na||(na={}));var ia=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new no;this.copyPreviousMatrix=!0;this.hiddenMatrix=new no;this.matrixWorldRigid=new no;this.shearScale=new no;this.shearScaleInv=new no}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof yC&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&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(r,o=0){for(let i of this.children)na.is(i)&&i.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)na.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:i,v:a,q:s}=(0,Jg.SVD)(o),l=gC.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),u=xC.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),c=bC.copy(u).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,c).copyPosition(this.matrixWorld),s.every(d=>Math.abs(s[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let i=new no().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),i.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof no?r.hiddenMatrix.premultiply(i):r.applyMatrix4(i),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Qd=class extends ia(vC){},SC=n=>n.type==="Mesh",Lo=class extends Qd{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new Lo(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return SC(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 DM,BufferGeometry as EM,MeshBasicMaterial as BM}from"three";import{Matrix4 as IM,Mesh as NM}from"three";import{Matrix4 as Uc,Vector3 as r0,Euler as CC,MathUtils as Ls}from"three";import{Box3 as wC,Line3 as _C,Matrix4 as Kd,Vector3 as ur}from"three";var qn=new ur,Wn=new ur,aa=new Kd,t0=[new ur(-1,1,1),new ur(-1,-1,1),new ur(1,-1,1),new ur(1,1,1),new ur(-1,1,-1),new ur(-1,-1,-1),new ur(1,-1,-1),new ur(1,1,-1)],AC=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],PC=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],e0=(n,t,e)=>{n.updateEntityBoxSize(qn,Wn),aa.copy(t).multiply(n.matrixWorld),Wn.x===0&&Wn.y===0&&Wn.z===0?e.push(new ur(qn.x,qn.y,qn.z).applyMatrix4(aa)):t0.forEach(r=>{e.push(r.clone().multiply(Wn).add(qn).applyMatrix4(aa))})},Bs=class extends wC{constructor(){super(...arguments);this.matrix=new Kd;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Kd().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,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 ur);return}e0(a,r,i)}}):e0(e,r,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(aa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Wn).multiplyScalar(.5),this.getCenter(qn),aa.copy(this.matrix).setPosition(qn),this.vertices=t0.map(e=>e.clone().multiply(Wn).applyMatrix4(aa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=AC.map(([e,r])=>new _C(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new ur))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=PC.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Er={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as OC,CubicBezierCurve3 as Zd,Vector3 as Br}from"three";var ep=class extends OC{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let u=l[s],c=s===0?o[s]:o[s]-o[s-1],d=Math.ceil(t*c/a),p=u.getPoints(d);for(let f=0;f<p.length;f++){let h=p[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var tp=.001;function rp(n,t,e){return t.clone().sub(n).cross(t.clone().sub(e)).length()<=tp}function Jd(n,t){let e=new Br(...n.position),r=new Br(...n.controlNext.position),o=new Br(...t.controlPrevious.position),i=new Br(...t.position);return rp(e,r,i)&&rp(e,o,i)}function jc(n){let t=n.points.map(c=>new Br(...c.data.position)),e=[n.points[0]],r=new Br(...e[0].data.position);for(let c=0;c<n.points.length-1;c++)rp(r,t[c],t[c+1])||(e.push(n.points[c]),r=t[c]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let c=0;c<a;c++){let d=e[c].data,p=new Br(...d.position),f=new Br(...d.controlPrevious.position),h=new Br(...d.controlNext.position),m={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:h};if(d.roundness===0||!n.isClosed&&(c===0||c===a-1)){s[c]={...m,removedLength:0};continue}let y=o&&c==0?a-1:c-1,g=o&&c==a-1?0:c+1,b=e[y].data,S=e[g].data,w=new Br(...b.position),v=new Br(...S.position),_=w.clone().sub(p).normalize(),A=v.clone().sub(p).normalize();Object.assign(m,{prevDir:_,nextDir:A});let x=Jd(b,d),T=Jd(d,S);if(!x||!T)s[c]={...m,removedLength:0};else{let C=_.clone().add(A).normalize(),P=C.clone().cross(_).length()/_.dot(C);s[c]={...m,tan:P,removedLength:d.roundness/P}}}for(let c=0;c<i;c++){let d=c,p=o&&c===a-1?0:c+1,f=s[d],h=s[p];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let c=0;c<i;c++){let d=c,p=o&&c===a-1?0:c+1,f=s[d],h=s[p],m=null;if(!Jd(e[d].data,e[p].data))f.position.distanceTo(h.position)>tp&&(m=new Zd(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),g=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&g.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(g)>tp&&(m=new Zd(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}l[2*c+1]=m}for(let c=0;c<a;c++){let d=s[c];if(d.removedLength===0){l[2*c]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),h=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),m=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(h,.5),b=f.distanceTo(h)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(b,2))).add(g),w=y.clone().multiplyScalar(-m).add(S),v=p.distanceTo(w)/p.distanceTo(g),_=d.prevDir.clone().multiplyScalar(v*p.distanceTo(f)).add(p),A=_.clone().lerp(w,2),x=f.clone().lerp(_,4/3),T=h.clone().lerp(A,4/3);l[2*c]=new Zd(f,x,T,h)}let u=new ep;return l.forEach(c=>{c&&u.add(c)}),u}var Ce;(t=>{function n(e){return e&&e.__isEntity}t.is=n})(Ce||(Ce={}));var sa=n=>Ce.is(n),TC={type:"completeState",isfromEntity:!0},MC=["x","y","z"],op=new r0,IC=new r0().set(0,1,0),la=n=>class extends ia(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 Bs;this._recursiveBBox=new Bs;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(Ce.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(Ce.is(this.children[r]))return r+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(Ce.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)Un.toOps(this.data,a.data).forEach(l=>{let u=ji.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=Un.patch(this.data,a),Un.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{sa(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(i=>{i.uuid===r&&(o=i)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,i=o.indexOf(this)+1;if(Ce.is(o[i]))return o[i];if(Ce.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&Ce.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,i=this;for(;i!==r;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)sa(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{Ce.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)sa(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)sa(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)sa(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>sa(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Ls.RAD2DEG,this.rotation.y*Ls.RAD2DEG,this.rotation.z*Ls.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Vi(o,r)}getTransformValues(r,o,i){return o[r].map((a,s)=>i?.shared.getVariable(a,[this.uuid,r,MC[s]])??a)}updateTransformState(r,o){let i=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),i=!0),r.rotation&&(op.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(Ls.DEG2RAD),this.rotation.setFromVector3(op),i=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),i=!0),r.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??sn.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)Ce.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{Ce.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Vi(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,i,a){let s=this.data;this.data=o;let l=r,u=Oe(r.path,["states","*"]);if(u!==null){if(r.type===0){let[c]=u;if(this?.stateSelection===c){let d={...r.props};if(delete d.name,Object.values(r.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=Ze.zoom(p,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(d[h]=f[h])}}l={...r,props:d,path:r.path.slice(2)}}}}else if(r.type===0){let c=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(c!==void 0){if(r.props.name!==void 0&&c.name){let{name:p,...f}=c;c=f}if(r.props.material!==void 0&&"material"in c){let{material:p,...f}=c;c=f}let d=Ze.removeOverridden(r.path,r.props,c);l={...r,props:d}}}if(this.updateByPatchedOpBase(l,Un.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Oe(r.path,["overrides"])){let c=[],d=[...r.path];for(c.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)c.push(d[1]),d.splice(0,2);if(c[c.length-1]===void 0){if(r.type===0)for(let p of Object.keys(r.props)){c[c.length-1]=p;let f=i.scene.findInstance([this.uuid,...c]);f&&(f.overrideData=r.props[p],f.updateState(Xr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...c]);if(p){let f=Ze.zoom(p.component.data,d);if(r={...r,path:d},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}p.overrideData=Ki.resolve(o.overrides,c),p.updateByOp(r,Je.applySimple(p.data,r),i,!1)}}}else if(this.instances.length>0){let c;if(r.path.length===0&&r.type===0){let d;for(let p of to.rootOverrideProps)p in r.props&&(d===void 0&&(d={}),d[p]=r.props[p]);d&&(c={...r,props:d})}else for(let d of to.rootOverrideProps)if(Oe(r.path,[d])){c=r;break}c!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Xr.filterOp(d.overrideData,c);p&&d.updateByOp(p,Je.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Xr.filterOp(d.overrideData,r);if(p){let f;s===d.data&&r===p?f=o:f=Je.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(r,o,i){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!Ir.is(r.props.type)&&Er.changeEntityProptotype(this,o,i);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){Er.changeEntityProptotype(this,o,i);for(let a of this.children)Ce.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(r,o,i)}updateByPatchedOp(r,o,i){if(r.path.length===0&&r.type===0&&this.updateState(r.props,i),Oe(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Oe(r.path,["cloner"])!==null){let a=Je.drop(r,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(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,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=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=l.data;if(u.geometry.path.points.length<=1)return;let c=jc(u.geometry.path),d=(i+a)%1;i+a===1&&d===0&&(d=1);let p=c.getPointAt(d);if(p===null)return;let f=this.parent?this.parent?.matrixWorld:new Uc;l.updateMatrixWorld();let h=new Uc().multiplyMatrices(f.clone().invert(),l.matrixWorld);p.applyMatrix4(h);let m={position:p.toArray(),rotation:u.rotation};if(s==="tangential"){let y=new Uc().extractRotation(l.matrixWorld),g=c.getTangentAt(d).applyMatrix4(y).add(p),b=new Uc().lookAt(p,g,IC),S=op.setFromEuler(new CC().setFromRotationMatrix(b)).multiplyScalar(Ls.RAD2DEG);m={...m,rotation:S.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(TC)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof Er.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Er.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as EC,ConeGeometry as BC,Float32BufferAttribute as LC,MathUtils as RC}from"three";import{BufferGeometry as n0,CylinderGeometry as NC,Float32BufferAttribute as qc,MathUtils as DC,Vector2 as Lr,Vector3 as Hc}from"three";var i0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=DC.clamp(e.thetaLength,0,360);let r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{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:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:u,radiusBottom:c,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,h;return l===0?(h=new n0,h.setAttribute("position",new qc([],3))):d||f?h=new Rs(u,c,r,o,i,a,s,l*Math.PI/180,d,d,p,f):h=new NC(u,c,r,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function fn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function o0(n){return new Lr(n.y,-n.x)}var Rs=class extends n0{constructor(t,e,r,o,i,a,s,l,u,c,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,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&&(u=0,c=0);let h=[],m=[],y=[],g=[],b=0,S=r/2,w=new Hc,v=new Hc;f&&t==0&&(t=u),f&&e==0&&(e=c);let _=new Lr(t,S),A=new Lr(e,-S),x=null,T=null,C=null,P=null,O=_.clone().sub(A),M=0,I=0,N=0;p>0&&(M=Math.min(t,e)*(1-p),I=t-M,N=e-M);let B=_.clone();B.x-=M;let D=Math.PI-O.angle(),G=O.angle(),L=Math.tan(G/2),V=Math.tan(D/2),z=L+V,k=p?z:V,$=p?z:L;if(u=Math.min(u,(t-I)/k,O.length()/z),c=Math.min(c,(e-N)/$,O.length()/z),u>0){let W=u/L;x=_.clone().sub(new Lr(W,u)),p&&(C=x.clone(),C.x-=M-z*u),_.sub(O.clone().setLength(W))}if(c>0){let W=c/V;T=A.clone().sub(new Lr(W,-c)),A.add(O.clone().setLength(W)),p&&(P=T.clone(),P.x-=M-z*c,B.sub(O.clone().setLength(W)))}O=_.clone().sub(A);let q=O.length()<.5,H=[];for(let W=0;W<=o;W++){let F=[],oe=W/o,ee=oe*l+s,K=new Lr(Math.sin(ee),Math.cos(ee));P&&T?(X(F,oe,K,D,c,P,-1,!0),X(F,oe,K,G,c,T,-1,!1)):T?(j(F,K,T.x,0,-1),X(F,oe,K,G,c,T,-1,!1)):a||j(F,K,e,N,-1);let te=o0(O).normalize();if(fn(te,K,w),!q)for(let Z=0;Z<=i;Z++){let se=Z/i,ne=O.clone().multiplyScalar(se).add(A);fn(ne,K,v),m.push(v.x,v.y,v.z),y.push(w.x,w.y,w.z),g.push(oe,.5+v.y/r),F.push(b++)}if(C&&x?(X(F,oe,K,D,u,x,1,!1),X(F,oe,K,G,u,C,1,!0)):x?(X(F,oe,K,D,u,x,1,!1),j(F,K,x.x,0,1)):a||j(F,K,t,I,1),p&&!q){let Z=o0(O).multiplyScalar(-1).normalize();fn(Z,K,w);for(let se=0;se<=i;se++){let ne=se/i,ie=O.clone().multiplyScalar(-ne).add(B);fn(ie,K,v),m.push(v.x,v.y,v.z),y.push(w.x,w.y,w.z),g.push(oe,.5+v.y/r),F.push(b++)}}p&&!a&&F.push(F[0]),H.push(F)}for(let W=0;W<H.length-1;W++)for(let F=0;F<H[0].length-1;F++){if(a&&p&&F==i)continue;let oe=H[W][F],ee=H[W+1][F],K=H[W+1][F+1],te=H[W][F+1],Z=m[K*3+0],se=m[K*3+2];h.push(oe,ee,te),(Z!=0||se!=0)&&h.push(ee,K,te)}l<Math.PI*2&&(Y(-1,H[0],s),Y(1,H[H.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new qc(m,3)),this.setAttribute("normal",new qc(y,3)),this.setAttribute("uv",new qc(g,2));function X(W,F,oe,ee,K,te,Z,se){for(let ne=0;ne<d+1;ne++){let ie=ne/d,de=Z<0?ie:1-ie;se&&(de-=1),de*=ee;let le=new Lr(Math.sin(de),Math.cos(de)*Z),pe=le.clone().multiplyScalar(K).add(te);fn(pe,oe,v),m.push(v.x,v.y,v.z),fn(le,oe,w),y.push(w.x,w.y,w.z),g.push(F,.5+v.y/r),W.push(b++)}}function j(W,F,oe,ee,K){let te=new Hc,Z=new Lr,se=[oe,ee];K<0&&se.reverse();for(let ne of se)Z.set(ne,S*K),fn(Z,F,te),m.push(te.x,te.y,te.z),y.push(0,K,0),g.push(.5,.5),W.push(b++)}function Y(W,F,oe){let ee=new Lr(Math.sin(oe),Math.cos(oe)),K=new Lr(-Math.cos(oe),Math.sin(oe)),te=new Hc,Z=W<0?(ie,de,le)=>h.push(ie,de,le):(ie,de,le)=>h.push(ie,le,de),se=new Lr((t+e+I+N)/4,0);fn(se,ee,te),m.push(te.x,te.y,te.z),y.push(K.x,0,K.y),g.push(.5,.5);let ne=b++;for(let ie of F){let de=m.slice(ie*3,ie*3+3);m.push(...de),y.push(K.x,0,K.y);let le=g.slice(ie*2,ie*2+2);g.push(...le),b++}for(let ie=ne+1;ie<b-1;ie++)Z(ne,ie,ie+1);Z(ne,b-1,ne+1)}}};var a0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=RC.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:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:u,cornerRadiusBottom:c,cornerSegments:d}=n.parameters,p;return l===0?(p=new EC,p.setAttribute("position",new LC([],3))):u>0||c>0||l<360?p=new Rs(0,t/2,r,o,i,a,s,l*Math.PI/180,u,c,d,0,!0):p=new BC(t/2,r,o,i,a),p.scale(1,1,e/t),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as VC,BufferGeometry as zC,Float32BufferAttribute as np,Vector3 as Vs}from"three";var s0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,u;return s==0?u=new VC(t,e,r,o,i,a):u=new ap(t,e,r,o,i,a,s,l),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},ip=Math.PI/2,ap=class extends zC{constructor(t=1,e=1,r=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],d=[],p=[],f=[],h=0,m=0;y("z","y","x",-1,-1,r,e,t,a,i,0),y("z","y","x",1,-1,r,e,-t,a,i,1),y("x","z","y",1,1,t,r,e,o,a,2),y("x","z","y",1,-1,t,r,-e,o,a,3),y("x","y","z",1,-1,t,e,r,o,i,4),y("x","y","z",-1,-1,t,e,-r,o,i,5),s>0&&(g("z","y","x",-1,-1,1,r,e,t,a,0),g("z","y","x",1,-1,-1,r,e,t,a,1),g("z","y","x",-1,1,-1,r,e,t,a,1),g("z","y","x",1,1,1,r,e,t,a,0),g("x","y","z",-1,-1,-1,t,e,r,o,0),g("x","y","z",1,-1,1,t,e,r,o,1),g("x","y","z",-1,1,1,t,e,r,o,0),g("x","y","z",1,1,-1,t,e,r,o,1),g("y","x","z",-1,-1,1,e,t,r,i,0),g("y","x","z",1,-1,-1,e,t,r,i,1),g("y","x","z",1,1,1,e,t,r,i,1),g("y","x","z",-1,1,-1,e,t,r,i,0),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new np(d,3)),this.setAttribute("normal",new np(p,3)),this.setAttribute("uv",new np(f,2));function y(S,w,v,_,A,x,T,C,P,O,M){let I=(x-2*s)/P,N=(T-2*s)/O,B=x/2-s,D=T/2-s,G=C/2,L=P+1,V=O+1,z=0,k=0,$=new Vs;for(let q=0;q<V;q++){let H=q*N-D;for(let X=0;X<L;X++){let j=X*I-B;$[S]=j*_,$[w]=H*A,$[v]=G,d.push($.x,$.y,$.z),$[S]=0,$[w]=0,$[v]=C>0?1:-1,p.push($.x,$.y,$.z),f.push(X/P),f.push(1-q/O),z+=1}}for(let q=0;q<O;q++)for(let H=0;H<P;H++){let X=h+H+L*q,j=h+H+L*(q+1),Y=h+(H+1)+L*(q+1),W=h+(H+1)+L*q;c.push(X,j,W),c.push(j,Y,W),k+=6}u.addGroup(m,k,M),m+=k,h+=z}function g(S,w,v,_,A,x,T,C,P,O,M){let I=(T-2*s)/O,N=T/2-s,B=C/2-s,D=P/2,G=O+1,L=0,V=0,z=new Vs,k=new Vs;for(let $=0;$<l+1;$++){let q=$/l*ip,H=Math.sin(q)*s,X=(1-Math.cos(q))*s,j=Math.sin(q),Y=Math.cos(q);z[w]=(B+H)*A,z[v]=(D-X)*x,k[S]=0,k[w]=j*Math.sign(z[w]),k[v]=Y*Math.sign(z[v]);for(let W=0;W<G;W++){let F=W*I-N;z[S]=F*_,d.push(z.x,z.y,z.z),p.push(k.x,k.y,k.z),f.push(W/O),f.push(0),L+=1}}for(let $=0;$<l;$++)for(let q=0;q<O;q++){let H=h+q+G*$,X=h+q+G*($+1),j=h+(q+1)+G*($+1),Y=h+(q+1)+G*$;c.push(H,X,Y),c.push(X,j,Y),V+=6}u.addGroup(m,V,M),m+=V,h+=L}function b(S,w,v){let _=new Vs,A=new Vs(t/2,e/2,r/2);A.subScalar(s);let x=[],T=S*w*v>0?(P,O,M)=>c.push(P,O,M):(P,O,M)=>c.push(P,M,O);for(let P=0;P<=l;P++){let O=[],M=ip*(1-P/l),I=Math.cos(M),N=Math.sin(M),B=0;for(let D=0;D<=P;D++){let G=Math.cos(B),L=Math.sin(B);_.x=I*G,_.y=N,_.z=I*L;let V=A.clone().addScaledVector(_,s);d.push(S*V.x,w*V.y,v*V.z),p.push(S*_.x,w*_.y,v*_.z),f.push(0,0),O.push(h++),B+=ip/P}x.push(O)}let C=x.length-1;for(let P=0;P<C;P++){let O=x[P],M=x[P+1],I=O.length-1;T(O[0],M[1],M[0]);for(let N=1;N<=I;N++)T(O[N-1],O[N],M[N]),T(O[N],M[N+1],M[N])}}}};import{BufferGeometry as GC,Float32BufferAttribute as sp,Triangle as FC,Vector3 as Ro,Vector2 as lp}from"three";var hn=class extends GC{constructor(t=[],e=[],r="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],u=[];c(),d(),this.setAttribute("position",new sp(s,3)),this.setAttribute("normal",new sp(u,3)),this.setAttribute("uv",new sp(l,2));return;function c(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new Ro,m=h.clone(),y=new FC,g=i*o,b=o-g,S=a+1,w=new Ro,v=(L,V)=>w.subVectors(L,V).normalize(),_=(L,V)=>Array(L).fill(void 0).map(V),A=_(t.length/3,(L,V)=>new Ro().fromArray(t,V*3).setLength(o)),x=[],T=1e6;for(let L=0;L<A.length;L++){let V=A[L],z=[],k,$,q,H=1e10,X=-1;for(;(X=e.indexOf(L,X+1))!=-1;){let F=X-X%3;k=e[F+(X+1)%3],$=e[F+(X+2)%3],q=V.distanceToSquared(A[k]),H=Math.min(H,q),z.push([k,$,q])}H+=1e-6;let j=[],Y=0,W=z.length;for(let F=0;F<W;F++){[k,$,q]=z[Y];let oe=x[k]?.includes(L)==!0;q<=H&&j.push(k+ +oe*T),Y=z.findIndex(ee=>ee[0]==$)}x.push(j)}let C=[];{let L=0,V=0,z,k,$=f==3;for(let q=0;q<=a;q++){z=q*(q+1)/2,k=(q+1)*(q+2)/2;for(let H=0;H<a-q;H++)[L,V]=[z+H+q+2,k+H+q+3],C.push(z,k,...$?[V,z]:[L,k],V,L),[z,k]=[L,V];C.push(z,k,z+a+2)}}let P=h.clone(),O=h.clone(),M=h.clone(),I=h.clone(),N=h.clone(),B=[],D=_(A.length,()=>_(f,()=>h.clone()));for(let L=0;L<A.length;L++){h.copy(A[L]).normalize(),P.copy(h).multiplyScalar(b);let V=x[L];for(let j=0;j<V.length;j++){let Y=V[j],W=V[(j+1)%f];y.setFromPointsAndIndices(A,L,Y%T,W%T),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(P,D[L][j])}let z=[],k=[],$=[],q=new Ro;a==0&&[...D[L]].reduce((j,Y)=>j.add(Y),q).multiplyScalar(1/f);for(let j=0;j<f;j++){let Y=[],W=(j-1+f)%f,F=D[L][W],oe=D[L][j];h.copy(F).sub(P),m.copy(oe).sub(P);let ee=P.angleTo(h),K=h.angleTo(m),te=Math.cos(ee)*g;a==0?O.copy(q):O.copy(P).setLength(b+te),k.push(te);let Z=[O,F,oe];for(let se=0;se<2;se++){let ne=Z[se],ie=Z[se+1];I.subVectors(ne,P),N.subVectors(ie,P),M.crossVectors(I,N).normalize();for(let de=0;de<S;de++){let le=[ee,K][se]*de/S;h.copy(I).applyAxisAngle(M,le).add(P),z.push(h.clone()),se&&(v(h,P),Y.push([de==0?ne:h.clone(),w.clone()]))}se&&(v(ie,P),Y.push([ie,w.clone()]))}$.push(Y)}B.push($);let H=2*S,X=2;for(let j=0;j<f;j++){let Y=H*j,W=H*((j+1)%f),F=[z[Y]];for(let ee=1;ee<S;ee++){I=z[Y+ee],N=z[W+ee],F.push(I);for(let K=1,te=ee-X+1;K<=te;K++)h.lerpVectors(I,N,K/(te+1)),h.sub(P).setLength(k[j]).add(P),F.push(h.clone());F.push(N)}for(let ee=0;ee<S;ee++)F.push(z[ee+S+Y]);F.push(z[W+S]);let oe=C.map(ee=>F[ee]);s.push(...oe.map(ee=>[ee.x,ee.y,ee.z]).flat()),u.push(...oe.map(ee=>(v(ee,P),[w.x,w.y,w.z])).flat())}}let G=[];for(let L=0;L<x.length;L++)for(let V=0;V<f;V++){let z=x[L][V];if(z<T){let k=x[z].findIndex(H=>H%T==L),$=B[L][V],q=B[z][k];for(let H=0;H<S;H++){let X=$[H],j=q[S-H],Y=$[H+1],W=q[S-(H+1)];[X,j,Y,Y,j,W].forEach(F=>{s.push(F[0].x,F[0].y,F[0].z),u.push(F[1].x,F[1].y,F[1].z)})}G.push($[0][0],q[S][0],$[S][0],q[0][0])}}for(;G.length;){let L,V,z,k;[L,V]=G.splice(0,2);let $=[L];for(;L!=V;)$.push(V),z=G.indexOf(V),k=z%2,V=G.splice(z-k,2)[1-k];w.subVectors($[0],$[1]).cross(h.subVectors($[0],$[2])).normalize();let q=w.dot($[0])<0;q&&w.negate();for(let H=1;H<=$.length-2;H++)[$[H+ +q],$[H+1-+q],$[0]].forEach(X=>{s.push(X.x,X.y,X.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new Ro;for(let A=0;A<s.length;A+=3){p.x=s[A+0],p.y=s[A+1],p.z=s[A+2];let x=v(p)/2/Math.PI+.5,T=_(p)/Math.PI+.5;l.push(x,1-T)}let f=new Ro,h=new Ro,m=new Ro,y=new Ro,g=new lp,b=new lp,S=new lp,w=(A,x,T,C)=>{C<0&&A.x===1&&(l[x]=A.x-1),T.x===0&&T.z===0&&(l[x]=C/2/Math.PI+.5)};for(let A=0,x=0;A<s.length;A+=9,x+=6){f.set(s[A+0],s[A+1],s[A+2]),h.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]),b.set(l[x+2],l[x+3]),S.set(l[x+4],l[x+5]),y.copy(f).add(h).add(m).divideScalar(3);let T=v(y);w(g,x+0,f,T),w(b,x+2,h,T),w(S,x+4,m,T)}for(let A=0;A<l.length;A+=6){let x=l[A+0],T=l[A+2],C=l[A+4],P=Math.max(x,T,C),O=Math.min(x,T,C);P>.9&&O<.1&&(x<.2&&(l[A+0]+=1),T<.2&&(l[A+2]+=1),C<.2&&(l[A+4]+=1))}function v(A){return Math.atan2(A.z,-A.x)}function _(A){return Math.atan2(-A.y,Math.sqrt(A.x*A.x+A.z*A.z))}}}static fromJSON(t){return new hn(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as kC}from"three";var l0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new zs(t*.5,i,a):new kC(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},zs=class extends hn{constructor(t=1,e=.2,r=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,t,e,r),this.type=l}static fromJSON(t){return new zs(t.radius,t.corner,t.cornerSides)}};import{Plane as ZC,Shape as _0,Vector2 as Vo,Vector3 as JC,MathUtils as mp,LineCurve as yp,QuadraticBezierCurve as A0,CubicBezierCurve as Xc}from"three";import{CubicBezierCurve as Wc,EllipseCurve as jC,LineCurve as $c,LineCurve3 as UC,MathUtils as HC,QuadraticBezierCurve as up,SplineCurve as qC,Vector2 as Gt,Vector3 as d0}from"three";var Gs=1e-12,ca=class{constructor(t){this.position=new Gt;this.startPosition=new Gt;this.uuid=HC.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new ca(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ua=class extends ca{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ua(this.parent).copy(this)}},Rr=class extends ca{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ua(this),new ua(this))}static create(e,r){let o=new Rr(e,new Gt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new 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),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new Gt,r=new Gt){let[o,i]=this.computeTangents();return o&&i&&(c0(o,e),c0(i,r)),[e,r]}computeTangent(e=new Gt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new Gt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function c0(n,t=new Gt){let e=n.length();return t.set(-n.y/e,n.x/e)}var dp=n=>n,da=new Gt,Yc=new Gt,WC=new Gt,$C=new Gt,YC=new Gt,XC=new Gt,p0=new d0,f0=new d0;function h0(n){let t=new Gt;t.addVectors(n.v0,da.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Gt;return e.addVectors(n.v2,Yc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Wc(n.v0,t,e,n.v2)}function Fs(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function QC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function KC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function pp(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.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+r*r-i*i)/(2*o*r))}function m0(n,t,e){return u0(n,t)&&u0(t,e)&&cp(n.position,t.position,e.position)}function cp(n,t,e){return da.copy(t).sub(n).cross(Yc.copy(e).sub(n))===0}function y0(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),a=(n.y+t.y)/2,s=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(s+l,a+u),o.set(s-l,a-u),[r,o]}function g0(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function x0(n,t,e,r,o,i){let a=t.x-n.x,s=t.y-n.y,l=e.x-n.x,u=e.y-n.y,c=Math.sqrt((a+l)*(a+l)+(s+u)*(s+u)),d;return pp(t,n,e)>Math.PI&&(c*=-1),Fs(u,s)?d=(s+u)*(r/c-.5)*8/3/(a-l):d=(a+l)*(r/c-.5)*8/3/(u-s),o.set(t.x-d*s,t.y+d*a),i.set(e.x+d*u,e.y-d*l),[o,i]}function fp(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function u0(n,t){return cp(n.position,n.controls[1].position,t.position)&&cp(n.position,t.controls[0].position,t.position)}function b0(n,t,e,r,o=.5){let i=da.subVectors(t,n).multiplyScalar(o).add(n),a=Yc.subVectors(e,t).multiplyScalar(o).add(t),s=WC.subVectors(r,e).multiplyScalar(o).add(e),l=i,u=$C.subVectors(a,i).multiplyScalar(o).add(i),c=YC.subVectors(s,a).multiplyScalar(o).add(a),d=s,p=XC.subVectors(c,u).multiplyScalar(o).add(u);return[n.x,n.y,l.x,l.y,u.x,u.y,p.x,p.y,c.x,c.y,d.x,d.y,r.x,r.y]}function v0(n,t,e=12,r=!0){let o=f0.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let u=dp(t[l]),c=da,d=mn(u,e);s.push(d);for(let p=0;p<=d;p++)if(u instanceof Wc||u instanceof up||u instanceof $c){if(u.getPoint(p/d,c),o.set(c.x,c.y,0),i!==void 0&&KC(i,o))continue;i===void 0&&(i=p0),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return r&&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 S0(n,t,e,r=12,o=!0){let i=f0.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let u,c=dp(t[l]),d=da,p=mn(c,r);s.push(p);for(let f=0;f<=p;f++)if(c instanceof Wc||c instanceof up||c instanceof $c){if(c.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=p0:(n.setXYZ(a,u.x,u.y,u.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),u.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 hp(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=mn(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=mn(a.curveAfter,t)),r.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=mn(n[0].roundedCurveCorner,t)*.5),r}function mn(n,t=12){return n&&n instanceof jC?t*2:n&&(n instanceof $c||n instanceof UC)?1:n&&n instanceof qC?t*n.points.length:t}function w0(n,t,e=12,r=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=dp(t[a]),l=mn(s,e),u=da;for(let c=0;c<=l;c++)if(s instanceof Wc||s instanceof up||s instanceof $c){if(s.getPoint(c/l,u),o!==void 0&&QC(o,u,Gs))continue;o===void 0&&(o=Yc),o.copy(u),n.push(u.x,u.y),i++}}return Fs(n[0],n[n.length-2],Gs)&&Fs(n[1],n[n.length-1],Gs)&&(n.pop(),n.pop()),r&&i>1&&!(Fs(n[i-1],n[1],Gs)&&Fs(n[i-2],n[0],Gs))&&(n.push(n[0],n[1]),i++),n}var gp=new Vo,eT=new Vo,tT=new Vo,rT=new Vo,oT=new Vo,nT=new Vo,Le=class extends _0{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new ZC(new JC(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=mp.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Le;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=>Le.createFromState(a)),r!==void 0&&o!==void 0&&i.applySize(r,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 r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],u=l.points.length,c=l.getPointIndexById(e);if(c<0)i+=u;else return c+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 r=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=gp.set(e,r);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,r);this._update()}createPoint(e,r=0,o=mp.generateUUID()){let i;e instanceof Vo?i=e:i=new Vo(e,r);let a=new Rr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return v0(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=hp(this.points,e,!1),this.roundedCurveDivisions=hp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return S0(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),w0(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=mn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,u)=>l+u,0));for(let l=0,u=i.length;l<u;l++){let c=i[l];if(s<o+c)return[l,(s-o+1)/c];o+=c}return[0,1]}getCurveT(e,r,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(fp(i,a)){let d=i.position.distanceTo(a.position);return i.position.distanceTo(gp.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=s[d];return(r-u)/l}dispose(){}_applyCurveForPoint(e,r){fp(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(r===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,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],u=a.roundness,c=s&&l&&m0(s,a,l);if(!a.controlsMoved()&&u>0&&!c){let d=a.curveBefore,p=a.curveAfter;if(d===void 0||p===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=d.getLength(),y=p.getLength(),g=Math.min(u,m*.499),b=Math.min(u,y*.499),S=Math.min(g,b),w=1-S/m,v=S/y,_=d.getPointAt(w,gp),A=p.getPointAt(v,eT);this._subSplitCurve(d,f,w,_,void 0),this._subSplitCurve(p,h,v,void 0,A);let x;if(this.useCubicForRoundedCorners){let T=pp(_,a.position,A)/2,C=Math.tan(T)*_.distanceTo(a.position),[P,O]=y0(_,A,C,tT,rT),M=g0(P,O,a.position),[I,N]=x0(M,_,A,C,oT,nT);x=new Xc(_.clone(),I.clone(),N.clone(),A.clone())}else x=new A0(_.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+r,0,x),r++}}}}_subSplitCurve(e,r,o,i,a){if(e instanceof yp)i!==void 0&&r.v2.copy(i),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,u=s.getUtoTmapping(o,0),c=b0(s.v0,s.v1,s.v2,s.v3,u);return i!==void 0&&(l.v0.set(c[0],c[1]),l.v1.set(c[2],c[3]),l.v2.set(c[4],c[5]),l.v3.set(c[6],c[7])),a!==void 0&&(l.v0.set(c[6],c[7]),l.v1.set(c[8],c[9]),l.v2.set(c[10],c[11]),l.v3.set(c[12],c[13])),l}return r}clone(){let e=new Le(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],u=e.points[i+3],c=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Rr(mp.generateUUID(),new Vo(a,s));f.controls[0].position.set(l,u),f.controls[1].position.set(c,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Le;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof Xc&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,u;for(l=0,u=a.length;l<u;l++)a[l]instanceof A0&&(a[l]=h0(a[l]));for(l=0,u=a.length;l<u;l++){let p=a[l],f=l>0?a[l-1]:null,h;p instanceof Xc?(h=this.createPoint(p.v0),h.controls[1].position.copy(p.v1)):p instanceof yp&&(h=this.createPoint(p.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let c=a[a.length-1],d=!1;return c instanceof Xc?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),d=!0):c instanceof yp&&c.v2.equals(s[0].position)&&(d=!0),this.isClosed=d,s};return this.points=i(e.curves),e instanceof _0&&(this.shapeHoles=e.holes.map(a=>{let s=new Le;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let i=this.getPointByUuid(e)?.controls[0];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let i=this.getPointByUuid(e)?.controls[1];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}};var bp=Math.PI*2;function xp({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function iT(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),a=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function P0(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function aT(n,t,e,r,o,i,a,s,l,u){let c=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),h=c*d-c*f-d*p;h<0&&(h=0),h/=c*f+d*p,h=Math.sqrt(h)*(l===u?-1:1);let m=h*o/i*s,y=h*-i/o*a,g=m+(n+e)/2,b=y+(t+r)/2,S=(a-m)/o,w=(s-y)/i,v=(-a-m)/o,_=(-s-y)/i,A=P0(1,0,S,w),x=P0(S,w,v,_);return!u&&x>0&&(x-=bp),u&&x<0&&(x+=bp),{centerx:g,centery:b,ang1:A,ang2:x}}function O0({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let u=(n-e)/2,c=(t-r)/2;if(u===0&&c===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(c,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=aT(n,t,e,r,o,i,u,c,a,s),{ang1:f,ang2:h}=p,{centerx:m,centery:y}=p,g=Math.abs(h)/(bp/4);Math.abs(1-g)<1e-7&&(g=1);let b=Math.max(Math.ceil(g),1);h/=b;for(let S=0;S<b;S++)l.push(iT(f,h)),f+=h;return l.map(S=>{let{x:w,y:v}=xp(S[0],o,i,m,y),{x:_,y:A}=xp(S[1],o,i,m,y),{x,y:T}=xp(S[2],o,i,m,y);return{x1:w,y1:v,x2:_,y2:A,x,y:T}})}import{BufferAttribute as eu,BufferGeometry as xT}from"three";var Ie;(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"})(Ie||(Ie={}));var tt;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(tt||(tt={}));function ye(n,t){if(!n)throw t||"Assertion Failed!"}var fe=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ye(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){ye(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){ye(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){ye(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var a,s,l;n.vertLeq(t,e)||(l=t,t=e,e=l),n.vertLeq(r,o)||(l=r,r=o,o=l),n.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.vertLeq(r,e)?n.vertLeq(e,o)?(a=n.edgeEval(t,r,e),s=n.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,e.s)):(a=n.edgeSign(t,r,e),s=-n.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(l=t,t=e,e=l),n.transLeq(r,o)||(l=r,r=o,o=l),n.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.transLeq(r,e)?n.transLeq(e,o)?(a=n.transEval(t,r,e),s=n.transEval(r,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,e.t)):(a=n.transSign(t,r,e),s=-n.transSign(t,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,o.t)):i.t=(r.t+e.t)/2},n}(),ks=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}(),Qc=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),pa=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}(),C0=function(){function n(){var t=new pa,e=new ks,r=new Qc(0),o=new Qc(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new Qc(0),r=new Qc(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;ye(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ye(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var t=new pa,e=new pa,r=new ks,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new pa;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var a=new ks;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new ks;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new pa;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var a=new ks;this.makeFace_(a,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=t&&fe.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&fe.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,a,s,l,u;for(i=t,i=t;(o=i.next)!==t;i=o){ye(o.prev===i),l=o.anEdge;do ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l),ye(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(ye(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){ye(a.prev===s),l=a.anEdge;do ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l),ye(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(ye(a.prev===s&&a.anEdge===null),u=r,u=r;(l=u.next)!==r;u=l)ye(l.Sym.next===u.Sym),ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Org!==null),ye(l.Dst!==null),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l);ye(l.Sym.next===u.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),T0=function(){function n(){this.handle=null}return n}(),M0=function(){function n(){this.key=null,this.node=0}return n}(),sT=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new T0,this.handles[r]=new M0;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,ye(a<=this.max),i=e[a].handle,a>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t>>1,i=e[a].handle,a===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;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 T0;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new M0}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;ye(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),vp=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}(),I0=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),lT=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new I0,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(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new I0;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),cT=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,a=r.eUp;if(i.Dst===o)return a.Dst===o?fe.vertLeq(i.Org,a.Org)?fe.edgeSign(a.Dst,i.Org,a.Org)<=0:fe.edgeSign(i.Dst,a.Org,i.Org)>=0:fe.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return fe.edgeSign(i.Dst,o,i.Org)>=0;var s=fe.edgeEval(i.Dst,o,i.Org),l=fe.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&ye(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ye(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new vp;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Ie.ODD:return(e&1)!==0;case Ie.NONZERO:return e!==0;case Ie.POSITIVE:return e>0;case Ie.NEGATIVE:return e<0;case Ie.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),n.finishRegion(t,a),s=i.eUp,a=i}return s},n.addRightEdges=function(t,e,r,o,i,a){var s,l,u,c,d=!0;u=r;do ye(fe.vertLeq(u.Org,u.Dst)),n.addRegionBelow(t,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,c=i;s=n.regionBelow(l),u=s.eUp.Sym,u.Org===c.Org;)u.Onext!==c&&(t.mesh.splice(u.Oprev,u),t.mesh.splice(c.Oprev,u)),s.windingNumber=l.windingNumber-u.winding,s.inside=n.isWindingInside(t,s.windingNumber),l.dirty=!0,!d&&n.checkForRightSplice(t,l)&&(n.addWinding(u,c),n.deleteRegion(t,l),t.mesh.delete(c)),d=!1,l=s,c=u;l.dirty=!0,ye(l.windingNumber-u.winding===s.windingNumber),a&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=fe.vertL1dist(e,t),i=fe.vertL1dist(r,t),a=.5*i/(o+i),s=.5*o/(o+i);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(fe.vertLeq(o.Org,i.Org)){if(fe.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;fe.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(fe.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a;if(ye(!fe.vertEq(o.Dst,i.Dst)),fe.vertLeq(o.Dst,i.Dst)){if(fe.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(fe.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,a=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a=o.Org,s=i.Org,l=o.Dst,u=i.Dst,c,d,p=new pa,f,h;if(ye(!fe.vertEq(u,l)),ye(fe.edgeSign(l,t.event,a)<=0),ye(fe.edgeSign(u,t.event,s)>=0),ye(a!==t.event&&s!==t.event),ye(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(c=Math.min(a.t,l.t),d=Math.max(s.t,u.t),c>d))return!1;if(fe.vertLeq(a,s)){if(fe.edgeSign(u,a,s)>0)return!1}else if(fe.edgeSign(l,s,a)<0)return!1;return n.debugEvent(t),fe.intersect(l,a,u,s,p),ye(Math.min(a.t,l.t)<=p.t),ye(p.t<=Math.max(s.t,u.t)),ye(Math.min(u.s,l.s)<=p.s),ye(p.s<=Math.max(s.s,a.s)),fe.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.event.t),f=fe.vertLeq(a,s)?a:s,fe.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),fe.vertEq(p,a)||fe.vertEq(p,s)?(n.checkForRightSplice(t,e),!1):!fe.vertEq(l,t.event)&&fe.edgeSign(l,t.event,p)>=0||!fe.vertEq(u,t.event)&&fe.edgeSign(u,t.event,p)<=0?u===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),h=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,h,!0),!0):(fe.edgeSign(l,t.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),fe.edgeSign(u,t.event,p)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,a,l,s,u),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,u=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(t,e),fe.vertEq(s.Org,t.event)&&(t.mesh.splice(i.Oprev,s),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),a),u=!0),fe.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,a,null),u=!0),u){n.addRightEdges(t,e,r.Onext,i,i,!0);return}fe.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,a,s,l;if(o=e.eUp,fe.vertEq(o.Org,r)){ye(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!fe.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}ye(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(ye(i!==a),n.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(r.anEdge,a),fe.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,a,s,l,u=new vp;if(u.eUp=e.anEdge.Sym,r=t.dict.search(u).key,o=n.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,fe.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=fe.vertLeq(s.Dst,a.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var c=t.mesh.connect(s.Dnext,e.anEdge);l=c.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,l):n.computeWinding(t,n.addRegionBelow(t,r,l)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);ye(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(t,i,null);s.Onext===a?n.connectRightVertex(t,o,s):n.addRightEdges(t,o,s.Onext,a,a,!0)},n.addSentinel=function(t,e,r,o){var i=new vp,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new lT(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,a=t.bmin[1]-r,s=t.bmax[1]+r;n.addSentinel(t,o,i,a),n.addSentinel(t,o,i,s)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ye(e.fixUpperEdge),ye(++r===1)),ye(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,fe.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new sT(i,fe.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,ye(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!fe.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),uT=function(){function n(){this.mesh=new C0,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=Ie.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(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,a,s,l=[0,0,0],u=[0,0,0],c=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,h[y]=e,l[y]=i,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,h[g]=e),i>l[g]&&(l[g]=i,f[g]=e);var b=0;if(l[1]-u[1]>l[0]-u[0]&&(b=1),l[2]-u[2]>l[b]-u[b]&&(b=2),u[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[b],o=f[b],c[0]=r.coords[0]-o.coords[0],c[1]=r.coords[1]-o.coords[1],c[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=c[1]*d[2]-c[2]*d[1],p[1]=c[2]*d[0]-c[0]*d[2],p[2]=c[0]*d[1]-c[1]*d[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,t[0]=p[0],t[1]=p[1],t[2]=p[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(c)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,a=t.next;a!==t;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=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,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),r=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,u=t.next;u!==t;u=u.next)l?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,l=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;fe.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;fe.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(fe.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(fe.edgeGoesLeft(o.Lnext)||fe.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(fe.edgeGoesRight(r.Lprev)||fe.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var u=t.vHead.next;u!==t.vHead;u=u.next)u.n=-1;for(var c=t.fHead.next;c!==t.fHead;c=c.next)if(c.n=-1,!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;u.n===-1&&(u.n=s,s++),l++,i=i.Lnext}while(i!==c.anEdge);if(l>r)throw"Face vertex greater that support polygon";c.n=a,++a}this.elementCount=a,e===tt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var u=t.vHead.next;u!==t.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,c=t.fHead.next;c!==t.fHead;c=c.next)if(!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;this.elements[p++]=u.n,l++,i=i.Lnext}while(i!==c.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-1;if(e===tt.CONNECTED_POLYGONS){i=c.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==c.anEdge);for(var h=l;h<r;++h)this.elements[p++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,u=0,c=0;i=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[c++]=i,this.elements[c++]=a,i+=a}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new C0),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,a){if(t===void 0&&(t=Ie.ODD),e===void 0&&(e=tt.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=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),cT.computeInterior(this,a);var s=this.mesh;return e===tt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===tt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},n}();function Vr(n){var t=n.windingRule,e=t===void 0?Ie.ODD:t,r=n.elementType,o=r===void 0?tt.POLYGONS:r,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,u=n.normal,c=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,h=f===void 0?!0:f,m=n.debug,y=m===void 0?!1:m;if(!p&&h)throw new Error("Contours can't be empty");if(!!p){var g=new uT;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var b=0;b<p.length;b++)g.addContour(l||2,p[b]);return g.tesselate(e,o,a,l,c,h),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var Lq=Ie.ODD,Rq=Ie.NONZERO,Vq=Ie.POSITIVE,zq=Ie.NEGATIVE,Gq=Ie.ABS_GEQ_TWO,Fq=tt.POLYGONS,kq=tt.CONNECTED_POLYGONS,jq=tt.BOUNDARY_CONTOURS;import{Box2 as mT,BufferAttribute as Jc,BufferGeometry as yT,Vector2 as gT}from"three";var Kc=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*Kc.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*Kc.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*t);a+=3*t;let l=new Float32Array(o,a*i,3*t);a+=3*t;let u=new Float32Array(o,a*i,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),u.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),u.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=u,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},js=Kc;js.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var B0=kt(E0()),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},Pp={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Op={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},Ap=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),gn=class extends yT{constructor(e,r,o=0,i=12,a=3,s=Ie.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=i,this._bevelSegmentsInput=a;let u=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(P=>{let O=P.extractShapePointsToFlatArray([],i),M=[];for(let I=O.length-1;I>=1;I-=2){let N=O[I-1],B=O[I-0];M.push(N,B)}return M}),d=[],p=[];for(let P=0;P<u.length;P+=2)p.push([u[P],u[P+1]]);d.push(p);for(let P=0;P<c.length;P++){let O=c[P],M=[];for(let I=0;I<O.length;I+=2)M.push([O[I],O[I+1]]);d.push(M)}let f;e.isText?f=new mT().setFromPoints(e.points.map(O=>O.position)).getSize(new gT).length()*.1:d[0].length===0?f=o:f=(0,B0.default)(d).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=Vr({windingRule:s,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[u]})}catch{h=Us}let m;try{m=Vr({windingRule:Ie.ODD,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]})}catch{m=Pp}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let P=0;P<m.elements.length;P++){let O=m.elements[P],M=P%2===0?h.vertexCount:0;h.elements.push(O+M)}for(let P=0;P<m.vertexIndices.length;P++){let O=m.vertexIndices[P],M=h.vertexCount;h.vertexIndices.push(O+M)}for(let P=0;P<m.vertices.length;P++){let O=m.vertices[P];h.vertices.push(O)}}let g=1/0,b=-1/0,S=1/0,w=-1/0;for(let P=0,O=h.vertexCount;P<O;P++){let M=P*2,I=h.vertices[M+0],N=h.vertices[M+1];I<g&&(g=I),I>b&&(b=I),N<S&&(S=N),N>w&&(w=N)}this._minX=g,this._minY=S,this._width=b-g,this._height=w-S,this._buffer=new js(this._computeBufferEstimatedSize(h));let v=[],_=[];for(let P=h.elementCount-1;P>=0;P--){let O=P>=y,M=P*2,I=h.elements[M+0],N=h.elements[M+1],B=I+N,D={start:I,count:N,normals:[],continuous:[],concave:[]},G=I,L=B-1,V=I+1,z=this._shape.roundedCurves.length;do{let X=G-I,j=h.vertices[L*2+0],Y=h.vertices[L*2+1],W=h.vertices[G*2+0],F=h.vertices[G*2+1],oe=h.vertices[V*2+0],ee=h.vertices[V*2+1],K=W-j,te=F-Y,Z=Math.sqrt(K*K+te*te);K/=Z,te/=Z;let se=W-oe,ne=F-ee,ie=Math.sqrt(se*se+ne*ne);se/=ie,ne/=ie,D.normals[X*2+0]=-ne,D.normals[X*2+1]=se,D.concave[X]=K*ne-te*se>0;let de=h.vertexIndices[G];if(Array.isArray(de))D.continuous[X]=!1;else{let[le,pe]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(pe>0&&pe<1)D.continuous[X]=!0;else{let ge=pe===1?le+1:le-1;ge=(ge+z)%z;let De=pe===1?0:1,Xe=this._shape.roundedCurves[le].getTangent(pe),Ee=this._shape.roundedCurves[ge].getTangent(De);D.continuous[X]=Xe.dot(Ee)>.95}}O&&(D.normals[X*2+0]*=-1,D.normals[X*2+1]*=-1),[L,G,V]=[G,V,V+1],V>=B&&(V-=N)}while(V!==I+1);let k=[];k.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(I*2,B*2),vertexCount:N,vertexIndices:new Array(N).fill(!0).map((X,j)=>[j,j]),elements:[0,N],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(I*2,B*2)});let $=0;for(let X=1;X<=this._bevelSegments;X++){let j=X/this._bevelSegments*Math.PI/2,Y=(1-Math.cos(j))*this._bevel,W=[],F=[],oe=[],ee=[],K=0;for(let Z=0;Z<N;Z++){let se=Z*2,ne=(Z-1+N)%N*2,ie=h.vertices[D.start*2+se+0],de=h.vertices[D.start*2+se+1],le=-D.normals[ne+0]*Y,pe=-D.normals[ne+1]*Y,ge=-D.normals[se+0]*Y,De=-D.normals[se+1]*Y;if(D.concave[Z]||!D.concave[Z]&&O){let Xe=Math.atan2(pe,le),Ee=Math.atan2(De,ge);Ee>Xe&&(Ee-=Math.PI*2);let je=Ee-Xe;if(D.continuous[Z]||O){let Yt=Xe+je/2,_e=Math.cos(Yt)*Y,yt=Math.sin(Yt)*Y;W[2*K+0]=ie+_e*(O?-1:1),W[2*K+1]=de+yt*(O?-1:1),ee[K]=Z,K++}else{let Yt=Math.max(1,Math.floor(i/4*Math.abs(je)/Math.PI));for(let _e=0;_e<=Yt;_e++){let yt=Xe+je*(_e/Yt),wt=Math.cos(yt)*Y,mi=Math.sin(yt)*Y;W[2*K+0]=ie+wt,W[2*K+1]=de+mi,ee[K]=Z,K++}}}else W[2*K+0]=ie+le,W[2*K+1]=de+pe,ee[K]=Z,F[Z]=K,K++,W[2*K+0]=ie,W[2*K+1]=de,ee[K]=Z,K++,W[2*K+0]=ie+ge,W[2*K+1]=de+De,ee[K]=Z,oe[Z]=K,K++}let te=Vr({windingRule:Ie.POSITIVE,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[W],edgeCreateCallback:Z=>{let ne=Z.Org.idx,ie=ee[ne],de=ee[(ne+1)%ee.length];Z.idx=[ie,de],Z.Sym.idx=[de,ie]},vertexIdCallback:Z=>{let se=Z.Lprev.idx;return[se?se[1]:0,Z.idx?Z.idx[0]:0]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${X}'th loop`);if(!te.vertexCount){let Z=(X-1)/this._bevelSegments*Math.PI/2;$=(1-Math.sin(Z))*this._bevel;break}for(let Z=0;Z<te.vertexIndices.length;Z++){let[se,ne]=te.vertexIndices[Z];if(se===ne)continue;let ie=ne;ne<se&&(ie+=N);for(let de=se;de<ie;de++){let le=de%N,pe=(de+1)%N;if(!D.continuous[le]||!D.continuous[pe]){te.vertexIndices[Z]=[se,le],te.vertexIndices.splice(Z+1,0,[pe,ne]),te.vertices.splice((Z+1)*2,0,te.vertices[Z*2],te.vertices[Z*2+1]);break}}}k.push({bevelI:X,angle:j,size:Y,boundary:te,reverseMap:ee,insetPoints:W})}let q=(X,j,Y)=>{let W=0,F=X.boundary.vertexIndices.length;for(;W<F&&Y(X.boundary.vertexIndices[j]);)j=(j+1)%F,W++;return W},H=v.length;for(let X=1;X<k.length;X++){let j=k[X-1],Y=k[X],W=j.boundary.vertexIndices.length,F=Y.boundary.vertexIndices.length;if(!W||!F)break;let oe=D.concave.length,ee=0,K=Ap(ee,N);for(;!j.boundary.vertexIndices.filter(K).length||!Y.boundary.vertexIndices.filter(K).length;)ee++,K=Ap(ee,N);let te=j.boundary.vertexIndices.findIndex(K),Z=Y.boundary.vertexIndices.findIndex(K);do te=(te+1)%W;while(K(j.boundary.vertexIndices[te]));do Z=(Z+1)%F;while(K(Y.boundary.vertexIndices[Z]));ee=(ee+1)%N;let se=ee,ne=0,ie=this._buildBevelVert(D,j,(te-1+W)%W,void 0,ne),de=this._buildBevelVert(D,Y,(Z-1+F)%F,void 0,ne),le=ie,pe=de,ge,De,Xe=!1;do{ne=(ee||oe)/oe,K=Ap(ee,N);let Ee=q(j,te,K),je=q(Y,Z,K),Yt=Xe;if(Xe=!1,Ee&&!je){for(let _e=0;_e<Ee;_e++)ge=this._buildBevelVert(D,j,(te+_e)%W,_e/(Ee-1),ne),v.push(le.topN,ge.topP,pe.topN),l===!1&&v.push(ge.bottomP,le.bottomN,pe.bottomN),le=ge;Xe=!0}else if(!Ee&&je)for(let _e=0;_e<je;_e++)De=this._buildBevelVert(D,Y,(Z+_e)%F,_e/(je-1),ne),v.push(pe.topN,le.topP,De.topP),l===!1&&v.push(le.bottomP,pe.bottomN,De.bottomP),pe=De;else if(Ee&&je)if(ge=this._buildBevelVert(D,j,te,0,ne),De=this._buildBevelVert(D,Y,Z,0,ne),Yt?(v.push(le.topN,De.topP,pe.topN),v.push(le.topN,ge.topP,De.topP),l===!1&&(v.push(De.bottomP,le.bottomN,pe.bottomN),v.push(De.bottomP,ge.bottomP,le.bottomN))):(v.push(pe.topN,le.topN,ge.topP),v.push(pe.topN,ge.topP,De.topP),l===!1&&(v.push(ge.bottomP,le.bottomN,pe.bottomN),v.push(ge.bottomP,pe.bottomN,De.bottomP))),le=ge,pe=De,Ee===je)for(let _e=1;_e<Ee;_e++)ge=this._buildBevelVert(D,j,(te+_e)%W,_e/(Ee-1),ne),De=this._buildBevelVert(D,Y,(Z+_e)%F,_e/(je-1),ne),v.push(le.topN,ge.topP,pe.topN),v.push(pe.topN,ge.topP,De.topP),l===!1&&(v.push(ge.bottomP,le.bottomN,pe.bottomN),v.push(ge.bottomP,pe.bottomN,De.bottomP)),le=ge,pe=De;else if(Ee>je){let _e=Ee/je,yt=0;for(let wt=1;wt<Ee;wt++)ge=this._buildBevelVert(D,j,(te+wt)%W,wt/(Ee-1),ne),v.push(le.topN,ge.topP,pe.topN),l===!1&&v.push(ge.bottomP,le.bottomN,pe.bottomN),le=ge,wt>(yt+1)*_e&&(yt++,De=this._buildBevelVert(D,Y,(Z+yt)%F,yt/(je-1),ne),v.push(pe.topN,ge.topP,De.topP),l===!1&&v.push(ge.bottomP,pe.bottomN,De.bottomP),pe=De)}else{let _e=je/Ee,yt=0;for(let wt=1;wt<je;wt++)De=this._buildBevelVert(D,Y,(Z+wt)%F,wt/(je-1),ne),v.push(pe.topN,ge.topP,De.topP),l===!1&&v.push(ge.bottomP,pe.bottomN,De.bottomP),pe=De,wt>(yt+1)*_e&&(yt++,ge=this._buildBevelVert(D,j,(te+yt)%W,yt/(Ee-1),ne),v.push(le.topN,ge.topP,pe.topN),l===!1&&v.push(ge.bottomP,le.bottomN,pe.bottomN),le=ge)}te=(te+Ee)%W,Z=(Z+je)%F,ee=(ee+1)%oe}while(ee!==se)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(k,D,v),O){let X=[];for(let j=v.length-1;j>=H+2;j-=3){let Y=v[j-2],W=v[j-1],F=v[j-0];X.push(F,W,Y)}v.splice(H,v.length-H,...X)}if(O){let X=[];for(let j=k[k.length-1].boundary.vertices.length-1;j>=1;j-=2){let Y=k[k.length-1].boundary.vertices[j-1],W=k[k.length-1].boundary.vertices[j-0];X.push(Y,W)}_.push(X)}if(!O){let X=k[k.length-1],j;try{j=Vr({windingRule:k.length>1?Ie.POSITIVE:Ie.ODD,elementType:tt.POLYGONS,vertexSize:2,strict:!0,contours:[X.insetPoints,..._]})}catch{j=Op}if(!j)throw new Error("Error generating geometry for surface");c.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Y=0;Y<j.elementCount*3;Y+=3){let W=this._buildSurfaceVert(j,j.elements[Y+0],$),F=this._buildSurfaceVert(j,j.elements[Y+1],$),oe=this._buildSurfaceVert(j,j.elements[Y+2],$);v.push(W.top,F.top,oe.top),l===!1&&v.push(oe.bottom,F.bottom,W.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new Jc(Uint32Array.from(v),1),x=new Jc(this._buffer.positions,3),T=new Jc(this._buffer.normals,3),C=new Jc(this._buffer.uvs,2);x.needsUpdate=!0,T.needsUpdate=!0,C.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",T),this.setAttribute("uv",C),this.setIndex(A)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),u=this._buildBevelVert(r,i,(a+1)%s);o.push(u.topP,l.topN,l.bottomN),o.push(u.topP,l.bottomN,u.bottomP)}}_buildSurfaceVert(e,r,o){let i=r.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,u=(s-this._minY)/this._height;this.forPathBevel&&(u=1);let c=this._buffer.get(this.forPathBevel?1:2),d=c*3,p=c*2,f={top:c+0,bottom:c+1};return this._buffer.positions[d+0]=a,this._buffer.positions[d+1]=s,this._buffer.positions[d+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[d+0]=0,this._buffer.normals[d+1]=0,this._buffer.normals[d+2]=1,this._buffer.uvs[p+0]=l,this._buffer.uvs[p+1]=u,this.forPathBevel===!1&&(this._buffer.positions[d+3]=a,this._buffer.positions[d+4]=s,this._buffer.positions[d+5]=o,this._buffer.normals[d+3]=0,this._buffer.normals[d+4]=0,this._buffer.normals[d+5]=-1,this._buffer.uvs[p+2]=l,this._buffer.uvs[p+3]=u),this.vertexCache[i]=f,f}_buildBevelVert(e,r,o,i=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,u]=r.boundary.vertexIndices[o],c,d,p,f;l!==u?(d=l,c=u,f=!1,p=e.continuous[d]&&e.continuous[c]):(c=l,d=(c-1+e.count)%e.count,f=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,g=c*2,b=d*2,S=r.boundary.vertices[y+0],w=r.boundary.vertices[y+1],v=(1-m)*this._bevel,_=(S-this._minX)/this._width,A=(w-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(_=a),A=1);let x=e.normals[g+0],T=e.normals[g+1],C=e.normals[b+0],P=e.normals[b+1];if(f){let B=C-x,D=P-T;x=x+B*(1-i),T=T+D*(1-i);let G=Math.sqrt(x*x+T*T);x/=G,T/=G}let O=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),M=O*3,I=O*2,N={i:o,fi:c,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1,pathBevelUCoord:a};return this._buffer.positions[M+0]=S,this._buffer.positions[M+1]=w,this._buffer.positions[M+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[M+0]=x*h,this._buffer.normals[M+1]=T*h,this._buffer.normals[M+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[M+3]=S,this._buffer.positions[M+4]=w,this._buffer.positions[M+5]=v,this._buffer.normals[M+3]=x*h,this._buffer.normals[M+4]=T*h,this._buffer.normals[M+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_),p||(this.forPathBevel?(O+=1,M+=3,I+=2):(O+=2,M+=6,I+=4),N.topP=O+0,N.bottomP=O+1,this._buffer.positions[M+0]=S,this._buffer.positions[M+1]=w,this._buffer.positions[M+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[M+0]=C*h,this._buffer.normals[M+1]=P*h,this._buffer.normals[M+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[M+3]=S,this._buffer.positions[M+4]=w,this._buffer.positions[M+5]=v,this._buffer.normals[M+3]=C*h,this._buffer.normals[M+4]=P*h,this._buffer.normals[M+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_)),this.vertexCache[s]=N,N}clone(){let e=new gn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Oo(this.userData),e}};var fa=class extends xT{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ie.ODD;this.elementType=tt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ie.ODD,elementType:tt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,u=!0,c,d;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,g=i[y+0],b=i[y+1];if(c!==void 0&&g!==c&&(l=!1),d!==void 0&&b!==d&&(u=!1),c=g,d=b,!l&&!u)break}if(!l&&!u)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 p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new eu(new Float32Array(p*3),3),this._normalAttribute=new eu(new Float32Array(p*3),3),this._uvAttribute=new eu(new Float32Array(p*2),2),this._indexAttribute=new eu(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,g=-1/0;for(let w=0,v=p;w<v;w++){let _=w*2,A=s.vertices[_+0],x=s.vertices[_+1];A<h&&(h=A),A>m&&(m=A),x<y&&(y=x),x>g&&(g=x)}let b=m-h,S=g-y;for(let w=0,v=p;w<v;w++){let _=w*2,A=s.vertices[_+0],x=s.vertices[_+1],T=(A-h)/b,C=(x-y)/S;this._positionAttribute.setXYZ(w,A,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,T,C)}for(let w=0,v=f;w<v;w++){let _=w*3,A=s.elements[_+0],x=s.elements[_+1],T=s.elements[_+2];this._indexAttribute.setX(_+0,A),this._indexAttribute.setX(_+1,x),this._indexAttribute.setX(_+2,T)}}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 fa(this._shape,this._curveSegments);return e.userData=Oo(this.userData),e}};var ha=class extends gn{constructor(e,r,o=0,i=12,a=3,s=Ie.ODD){super(e,r,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),u=this._buildBevelVert(r,i,(a+1)%s);o.push(u.topP,l.topN,l.bottomN),o.push(u.topP,l.bottomN,u.bottomP)}}clone(){let e=new ha(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Oo(this.userData),e}};var Jt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Ie.ODD},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Le?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new Le(r,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Le(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new fa(n.shape,o,{windingRule:a}):s=new ha(n.shape,t,e,o,r,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as bT,Float32BufferAttribute as vT,MathUtils as Cp,Vector2 as R0}from"three";var V0=Math.PI*2,ya=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=Cp.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,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:t,height:e,spikes:r,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,u=n.shape,c=t*.5,d=e*.5,p=ST(u,c,d,o*Math.PI/180,r,i);u.isClosed=!0,u.update();let f;return o===0?(f=new bT,f.setAttribute("position",new vT([],3))):f=Jt.create({shape:u,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function ST(n,t,e,r,o,i){if(r>=V0)return o>30||o%4===0?(_T(n,t,e,i),Math.round(o/4)):L0(n,r,o,t,e,i);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},u=O0({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?wT(n,a.x,a.y,u,o,t,e,i):L0(n,r,o,t,e,i)}function wT(n,t,e,r,o,i,a,s){let l=Math.round(o/r.length);n.addPoint(ma(t,e));for(let u=0,c=r.length;u<c;u++){let d=r[u],p=n.points[u],f=ma(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return s>0?z0(n,i,a,s):n.addPoint(ma(0,0)),l}function L0(n,t,e,r,o,i){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,u=Math.sin(l)*r,c=Math.cos(l)*o;n.addPoint(ma(u,c))}return t<V0?i>0?z0(n,r,o,i):n.addPoint(ma(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&G0(n,r,o,i)),1}function _T(n,t,e,r=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;n.addPoint(tu(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(tu(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(tu(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(tu(o,i-e,o+s,i-e,o-s,i-e)),r>0&&G0(n,t,e,r)}function ma(n,t){return new Rr(Cp.generateUUID(),new R0(n,t))}function tu(n,t,e,r,o,i){let a=ma(n,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,i),a}function z0(n,t,e,r){F0(n,t,e,r).forEach(i=>n.addPoint(i))}function G0(n,t,e,r){let o=F0(n,t,e,r),i=new Le;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function F0(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new R0(o/t,i/e),s=n.points.map(l=>{let u=l.clone();return u.uuid=Cp.generateUUID(),u}).reverse();return s.forEach(l=>{l.position.multiply(a);let u=l.controls[0].position.clone().multiply(a),c=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(c),l.controls[1].position.copy(u)}),s}import{BufferGeometry as AT,Float32BufferAttribute as Tp,Uint32BufferAttribute as PT,Vector3 as k0}from"three";var j0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),a=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,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:t,height:e,depth:r,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:u,cornerRadius:c,cornerSegments:d}=n.parameters,p=new Hs(!1,t,e,r,o,i,a,s,l,u,c,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Mp=new PT([0,0,0],1),Hs=class extends AT{constructor(t=!0,e=1,r=1,o=1,i=1,a=1,s=1,l=1,u=1,c=1,d=1,p=1){if(super(),a===0)return;let f=t&&a===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let h=()=>new k0,m=new k0,y=h(),g=h(),b=h(),S,w,v,_,A,x,T,C,P=h(),O=h(),M=h(),I=h(),N=h(),B=h(),D=h(),G=h(),L=r-2*l+.001,V=L/a,z=Math.ceil(s*a),k=z+1,$=L/z,q=-L/2,H=c+1,X=2*Math.PI/c,j=Math.PI/2/p,Y=.01,W=Math.min((1-d/100)*l,l-Y),F=l-W,oe=0,ee=2,K=p*ee+ee,te=H*K/ee,Z=te+H*k,se=Math.max(0,H*(k+K)),[ne,ie,de]=[3,3,2].map(ct=>Array(se*ct).fill(0)),le=[],pe=i-l;function ge(ct,ar){let Wr=Math.PI/2;x=ar*$,C=2*Math.PI*(x%V)/V+Wr,x+=q,T=Math.sin(C)*pe,A=Math.cos(C)*pe,t?ct.set(A,T,x):ct.set(A,x,T)}ge(m,-1e-10),ge(y,0),P.copy(m),ge(m,1);let De=m.distanceTo(y),Xe=f?0:F+W,Ee=De*z+2*Xe,je=W,Yt=Ee-Xe;for(let ct=0;ct<=z;ct++){ge(g,ct),G.subVectors(g,P).normalize(),P.copy(g),B.copy(g).setComponent(+t+1,0).normalize(),D.crossVectors(G,B).normalize();let ar=ct===0,Wr=ct===z,LS=ar?3*Math.PI/2:j,RS=ar?je:Yt,VS=ar?H:Z,zS=ar?0:se-H,GS=G.clone().multiplyScalar(ar?-F:F).add(g),FS=G.clone().multiplyScalar(ar?-1:1).normalize();for(let So=0;So<H;So++){let ph=So*X;if(O.addVectors(m.copy(B).multiplyScalar(l*Math.cos(ph)),y.copy(D).multiplyScalar(l*Math.sin(ph))),M.copy(O).normalize(),ar||Wr){f||(oe=zS+So,[0,1,2].forEach(Xt=>{ne[oe*3+Xt]=GS.getComponent(Xt),ie[oe*3+Xt]=FS.getComponent(Xt)}),de[oe*2]=+Wr,de[oe*2+1]=So/c),y.copy(M).multiplyScalar(W),b.addVectors(g,y);for(let Xt=0;Xt<p;Xt++){let sd=Xt*j+LS;I.addVectors(m.copy(G).multiplyScalar(F*Math.sin(sd)),y.copy(M).multiplyScalar(F*Math.cos(sd))),N.copy(I).normalize(),y.addVectors(b,I),I.normalize(),oe=VS+Xt*H+So,[0,1,2].forEach(_l=>{ne[oe*3+_l]=y.getComponent(_l),ie[oe*3+_l]=N.getComponent(_l)});let kS=+ar+Math.sin(sd);de[oe*2]=(RS+F*kS)/Ee,de[oe*2+1]=So/c}}y.addVectors(g,O),oe=te+ct*H+So,[0,1,2].forEach(Xt=>{ne[oe*3+Xt]=y.getComponent(Xt),ie[oe*3+Xt]=M.getComponent(Xt)}),de[oe*2]=(Xe+ct*De)/Ee,de[oe*2+1]=So/c}}let _e=k+2*p+ee,yt=1,[wt,mi]=[+f,_e-1];for(let ct=wt;ct<=mi-1;ct++){let ar=f&&ct===mi-1;for(let Wr=0;Wr<H-1;Wr++)S=ct*H+Wr,w=S+1,v=(ar?Wr:S)+H,_=(ar?Wr+1:w)+H,ct===0?le.push(w,_,v):ct===_e-2?le.push(S,w,v):le.push(S,w,v,w,_,v)}this.setIndex(le),this.setAttribute("position",new Tp(ne,3)),this.setAttribute("normal",new Tp(ie,3)),this.setAttribute("uv",new Tp(de,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,u=6*(e-1)*t.radialSegments,c=e,d=c===e;for(let p=0;p<t.radialSegments;p++)i=c*r+p,a=i+1,s=(d?p:i)+r,l=(d?p+1:a)+r,o[u++]=i,o[u++]=a,o[u++]=s,o[u++]=a,o[u++]=l,o[u++]=s;return o.length=u,Mp.array=o,Mp.count=o.length,Mp}};import{IcosahedronGeometry as OT}from"three";var U0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new qs(t*.5,i,a):new OT(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},qs=class extends hn{constructor(t=1,e=.2,r=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,t,e,r),this.type=s}static fromJSON(t){return new qs(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as CT,Shape as TT}from"three";var H0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},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:t,segments:e,verticalSegments:r}=n.parameters,o=new TT;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new CT(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Z0,BufferGeometryLoader as FT,Vector3 as kT,BoxGeometry as J0}from"three";import{BufferGeometry as RT,Vector2 as Ep,Vector3 as K0}from"three";import{Box3 as MT,BufferAttribute as Ws,BufferGeometry as q0,Color as Dp,EventDispatcher as IT,Float32BufferAttribute as ga,Matrix3 as W0,Matrix4 as Q0,MathUtils as NT,Object3D as DT,Sphere as ET,Vector2 as dr,Vector3 as Lt,Vector4 as BT}from"three";var io=new Q0,Ip=new DT,ru=new Lt,xn=class extends IT{constructor(){super(),this.uuid=NT.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new W0().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];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(t){return io.makeRotationX(t),this.applyMatrix4(io),this}rotateY(t){return io.makeRotationY(t),this.applyMatrix4(io),this}rotateZ(t){return io.makeRotationZ(t),this.applyMatrix4(io),this}translate(t,e,r){return io.makeTranslation(t,e,r),this.applyMatrix4(io),this}scale(t,e,r){return io.makeScale(t,e,r),this.applyMatrix4(io),this}lookAt(t){return Ip.lookAt(t),Ip.updateMatrix(),this.applyMatrix4(Ip.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new Lt().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new Dp().fromBufferAttribute(s,p));function c(p,f,h,m){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[h].clone()],g=a===void 0?[]:[new Lt().fromBufferAttribute(a,p),new Lt().fromBufferAttribute(a,f),new Lt().fromBufferAttribute(a,h)],b=new xa(p,f,h,g,y,m);e.faces.push(b),l!==void 0&&e.faceVertexUvs[0].push([new dr().fromBufferAttribute(l,p),new dr().fromBufferAttribute(l,f),new dr().fromBufferAttribute(l,h)]),u!==void 0&&e.faceVertexUvs[1].push([new dr().fromBufferAttribute(u,p),new dr().fromBufferAttribute(u,f),new dr().fromBufferAttribute(u,h)])}let d=t.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],h=f.start,m=f.count;for(let y=h,g=h+m;y<g;y+=3)r!==void 0?c(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):c(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let p=0;p<r.count;p+=3)c(r.getX(p),r.getX(p+1),r.getX(p+2));else for(let p=0;p<i.count;p+=3)c(p,p+1,p+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(ru).negate(),this.translate(ru.x,ru.y,ru.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Q0;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new Lt,e=new Lt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new Lt;if(t){let r=new Lt,o=new Lt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],u=this.vertices[s.b],c=this.vertices[s.c];r.subVectors(c,u),o.subVectors(l,u),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],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 t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let 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 t=new xn;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let u=new Lt,c={a:new Lt,b:new Lt,c:new Lt};i.push(u),a.push(c)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],u=o.vertexNormals[i];l.copy(s.normal),u.a.copy(s.vertexNormals[0]),u.b.copy(s.vertexNormals[1]),u.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new MT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ET),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,u=t.faces,c=this.colors,d=t.colors;e!==void 0&&(o=new W0().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let m=s[p].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let p=0,f=d.length;p<f;p++)c.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let h=u[p],m,y,g=h.vertexNormals,b=h.vertexColors,S=new xa(h.a+i,h.b+i,h.c+i);S.normal.copy(h.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,v=g.length;w<v;w++)m=g[w].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),S.vertexNormals.push(m);S.color.copy(h.color);for(let w=0,v=b.length;w<v;w++)y=b[w],S.vertexColors.push(y.clone());S.materialIndex=h.materialIndex+r,l.push(S)}for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],b=[];for(let S=0,w=g.length;S<w;S++)b.push(g[S].clone());this.faceVertexUvs[p].push(b)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let l=0,u=this.vertices.length;l<u;l++){let c=this.vertices[l],d=Math.round(c.x*i)+"_"+Math.round(c.y*i)+"_"+Math.round(c.z*i);e[d]===void 0?(e[d]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[d]]}let a=[];for(let l=0,u=this.faces.length;l<u;l++){let c=this.faces[l];c.a=o[c.a],c.b=o[c.b],c.c=o[c.c];let d=[c.a,c.b,c.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let u=a[l];this.faces.splice(u,1);for(let c=0,d=this.faceVertexUvs.length;c<d;c++)this.faceVertexUvs[c].splice(u,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new Lt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,u){return l.materialIndex-u.materialIndex}t.sort(r);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 u=t[l]._id;a&&a.push(o[u]),s&&s.push(i[u])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],i={},a=[],s={},l=[],u={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,g=!1,b=this.faceVertexUvs[0][h]!==void 0,S=m.normal.length()>0,w=m.vertexNormals.length>0,v=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.vertexColors.length>0,A=0;if(A=c(A,0,0),A=c(A,1,y),A=c(A,2,g),A=c(A,3,b),A=c(A,4,S),A=c(A,5,w),A=c(A,6,v),A=c(A,7,_),r.push(A),r.push(m.a,m.b,m.c),r.push(m.materialIndex),b){let x=this.faceVertexUvs[0][h];r.push(f(x[0]),f(x[1]),f(x[2]))}if(S&&r.push(d(m.normal)),w){let x=m.vertexNormals;r.push(d(x[0]),d(x[1]),d(x[2]))}if(v&&r.push(p(m.color)),_){let x=m.vertexColors;r.push(p(x[0]),p(x[1]),p(x[2]))}}function c(h,m,y){return y?h|1<<m:h&~(1<<m)}function d(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[m]}function p(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return u[m]!==void 0||(u[m]=l.length/2,l.push(h.x,h.y)),u[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new xn().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let r=t.colors;for(let p=0,f=r.length;p<f;p++)this.colors.push(r[p].clone());let o=t.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],b=[];for(let S=0,w=g.length;S<w;S++){let v=g[S];b.push(v.clone())}this.faceVertexUvs[p].push(b)}}let i=t.morphTargets;for(let p=0,f=i.length;p<f;p++){let h={};if(h.name=i[p].name,i[p].vertices!==void 0){h.vertices=[];for(let m=0,y=i[p].vertices.length;m<y;m++)h.vertices.push(i[p].vertices[m].clone())}if(i[p].normals!==void 0){h.normals=[];for(let m=0,y=i[p].normals.length;m<y;m++)h.normals.push(i[p].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let p=0,f=a.length;p<f;p++){let h={};if(a[p].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[p].vertexNormals.length;m<y;m++){let g=a[p].vertexNormals[m],b={};b.a=g.a.clone(),b.b=g.b.clone(),b.c=g.c.clone(),h.vertexNormals.push(b)}}if(a[p].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[p].faceNormals.length;m<y;m++)h.faceNormals.push(a[p].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[p].clone());let l=t.skinIndices;for(let p=0,f=l.length;p<f;p++)this.skinIndices.push(l[p].clone());let u=t.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let c=t.boundingBox;c!==null&&(this.boundingBox=c.clone());let d=t.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Np().fromGeometry(this),e=new q0,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",ou.call(new Ws(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",ou.call(new Ws(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",$0.call(new Ws(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",Y0.call(new Ws(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",Y0.call(new Ws(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let u=a[s],c=new ga(u.data.length*3,3);c.name=u.name,i.push(ou.call(c,u.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new ga(t.skinIndices.length*4,4);e.setAttribute("skinIndex",X0.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new ga(t.skinWeights.length*4,4);e.setAttribute("skinWeight",X0.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new q0,r=t.geometry;if(t.isPoints||t.isLine){let o=new ga(r.vertices.length*3,3),i=new ga(r.colors.length*3,3);if(e.setAttribute("position",ou.call(o,r.vertices)),e.setAttribute("color",$0.call(i,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new ga(r.lineDistances.length,1);e.setAttribute("lineDistance",LT.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};xn.prototype.isGeometry=!0;var Np=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,u;if(l>0){u=[];for(let g=0;g<l;g++)u[g]={name:s[g].name,data:[]};this.morphTargets.position=u}let c=t.morphNormals,d=c.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:c[g].name,data:[]};this.morphTargets.normal=p}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let b=e[g];this.vertices.push(r[b.a],r[b.b],r[b.c]);let S=b.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let v=b.normal;this.normals.push(v,v,v)}let w=b.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let v=b.color;this.colors.push(v,v,v)}if(i===!0){let v=o[0][g];v!==void 0?this.uvs.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new dr,new dr,new dr))}if(a===!0){let v=o[1][g];v!==void 0?this.uvs2.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new dr,new dr,new dr))}for(let v=0;v<l;v++){let _=s[v].vertices;u[v].data.push(_[b.a],_[b.b],_[b.c])}for(let v=0;v<d;v++){let _=c[v].vertexNormals[g];p[v].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[b.a],f[b.b],f[b.c]),y&&this.skinWeights.push(h[b.a],h[b.b],h[b.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},xa=class{constructor(t,e,r,o,i,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new Lt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Dp,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function LT(n){return this.array.set(n),this}function $0(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),i=new Dp),t[e++]=i.r,t[e++]=i.g,t[e++]=i.b}return this}function Y0(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),i=new dr),t[e++]=i.x,t[e++]=i.y}return this}function ou(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),i=new Lt),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z}return this}function X0(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),i=new BT),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z,t[e++]=i.w}return this}var VT=["a","b","c"];function zT(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Bp(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Lp(n,t,e,r,o,i){let a=Math.min(n,t),s=Math.max(n,t),l=a+"_"+s,u;if(r.has(l))u=r.get(l);else{let c=e[a],d=e[s];u={a:c,b:d,newEdge:null,faces:[]},r.set(l,u)}u.faces.push(o),i[n].edges.push(u),i[t].edges.push(u)}function GT(n,t,e,r){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)a=t[o],Lp(a.a,a.b,n,r,a,e),Lp(a.b,a.c,n,r,a,e),Lp(a.c,a.a,n,r,a,e)}function nu(n,t,e,r,o){n.push(new xa(t,e,r,void 0,void 0,o))}function ba(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function iu(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var au=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof RT?t=new xn().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new K0,r,o,i,a,s,l=t.vertices,u=t.faces,c=t.faceVertexUvs[0],d=c!==void 0&&c.length>0,p=[],f=new Map;GT(l,u,p,f);let h=[],m,y,g,b,S,w,v;for(let Y of Array.from(f.keys())){for(y=f.get(Y),g=new K0,S=3/8,w=1/8,v=y.faces.length,v!=2&&(S=.5,w=0,v!=1),g.addVectors(y.a,y.b).multiplyScalar(S),e.set(0,0,0),a=0;a<v;a++){for(b=y.faces[a],s=0;s<3&&(m=l[zT(b,VT[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(w),g.add(e),y.newEdge=h.length,h.push(g)}let _,A,x,T,C,P,O,M=[];for(o=0,i=l.length;o<i;o++){for(P=l[o],C=p[o].edges,r=C.length,r==3?_=3/16:r>3&&(_=3/(8*r)),A=1-r*Number(_),x=_,r<=2&&(r==2?(A=3/4,x=1/8):r==1||r==0),O=P.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<r;a++)T=C[a],m=T.a!==P?T.a:T.b,e.add(m);e.multiplyScalar(Number(x)),O.add(e),M.push(O)}let I=M.concat(h),N=M.length,B,D,G,L=[],V=[],z,k,$,q,H=new Ep,X=new Ep,j=new Ep;for(o=0,i=u.length;o<i;o++)b=u[o],B=Number(Bp(b.a,b.b,f).newEdge)+N,D=Number(Bp(b.b,b.c,f).newEdge)+N,G=Number(Bp(b.c,b.a,f).newEdge)+N,nu(L,B,D,G,b.materialIndex),nu(L,b.a,B,G,b.materialIndex),nu(L,b.b,D,B,b.materialIndex),nu(L,b.c,G,D,b.materialIndex),d&&(z=c[o],k=z[0],$=z[1],q=z[2],H.set(ba(k.x,$.x),ba(k.y,$.y)),X.set(ba($.x,q.x),ba($.y,q.y)),j.set(ba(k.x,q.x),ba(k.y,q.y)),iu(V,H,X,j),iu(V,k,H,j),iu(V,$,X,H),iu(V,q,j,X));t.vertices=I,t.faces=L,d&&(t.faceVertexUvs[0]=V)}};var xt=new kT,ex=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new Z0().copy(new J0(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(xt),r={width:xt.x,height:xt.y,depth:xt.z,subdivisions:0}):r=t.parameters;let o={...r,...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:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new Z0().copy(new J0(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(xt)):xt.set(a.width,a.height,a.depth),(t!==xt.x||e!==xt.y||r!==xt.z)&&i.scale(xt.x===0?1:t/xt.x,xt.y===0?1:e/xt.y,xt.z===0?1:r/xt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new au(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,t,e){new FT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(xt);let a=100/xt.x;Object.assign(i.parameters,{width:100,height:xt.y*a,depth:xt.z*a}),t(this.build(i))})}};var su=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,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:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,u=t*.5,c=e*.5,d=0,p=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,g=d+Math.sin(y)*u,b=p+Math.cos(y)*c;l.addPoint(l.createPoint(g,b))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=Jt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as jT,Float32BufferAttribute as Rp,Vector2 as ao,Vector3 as Ct}from"three";var tx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,u=new zp(t*.5,e,o,i,a,s,l);return u.scale(1,1,r/t),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function $s(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Vp(n,t,e,r,o,i){let a=t.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let u=a.add(s).normalize();i.copy(n).addScaledVector(u,r/Math.sin(l/2))}else{let u=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(u)),i.addScaledVector(s,r/Math.sin(u))}}function UT(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var zp=class extends jT{constructor(t=.5,e=1,r=4,o=1,i=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],u=[],c=[],d=[],p=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,g=(r-2)*Math.PI/r,b=Math.PI-g,S=new Ct(0,-f,0),w=new Ct(0,f,0),v=new ao(t,-f),_=new ao(m,-f),A=new ao(0,w.y).sub(_),x=new ao(0,w.y).sub(v),T=new ao(A.y,-A.x).normalize(),C=new ao(x.y,-x.x).normalize(),O=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,O);let M;{let V=new Ct(T.x,T.y,0),z=new Ct(Math.cos(y)*V.x,V.y,Math.sin(y)*V.x);M=V.angleTo(z)}let I=a/Math.tan((Math.PI-A.angle())/2),N=a/Math.tan((Math.PI-M)/2),B=new Ct;if(!i){u.push(S.x,S.y,S.z),c.push(0,-1,0),d.push(0,0);let V=p++,z=[],k=v.clone(),$=I/Math.cos(Math.PI/r);k.x-=$;for(let q=0;q<r;q++){let H=q/r*Math.PI*2+h,X=new ao(Math.sin(H),Math.cos(H));$s(k,X,B),u.push(B.x,B.y,B.z),c.push(0,-1,0),d.push(0,0),z.push(p++)}for(let q=0;q<z.length;q++)l.push(z[q],V,z[(q+1)%z.length])}let D=[];{let V=new Ct,z=new Ct,k=new Ct,$=new Ct,q=new Ct,H=new Ct;for(let X=0;X<r;X++){let j=X/r*Math.PI*2+h,Y=(X+.5)/r*Math.PI*2+h,W=(X+1)/r*Math.PI*2+h,F=new ao(Math.sin(j),Math.cos(j)),oe=new ao(Math.sin(Y),Math.cos(Y)),ee=new ao(Math.sin(W),Math.cos(W));$s(v,F,z),$s(v,ee,k),$s(T,oe,V),Vp(w,z,k,N,N,$),u.push($.x,$.y,$.z),Vp(z,w,k,N,I,q),u.push(q.x,q.y,q.z),Vp(k,z,w,I,N,H),u.push(H.x,H.y,H.z),c.push(V.x,V.y,V.z),c.push(V.x,V.y,V.z),c.push(V.x,V.y,V.z),d.push(0,0),d.push(0,0),d.push(0,0);let K=p++,te=p++,Z=p++;if(l.push(K,te,Z),a>0){{let ie=z.clone().add(k).multiplyScalar(.5),de=w.clone().sub(ie).normalize(),pe=S.clone().sub(ie).normalize().add(de).normalize().multiplyScalar(-1),ge=H.clone().sub(q);G(ie,ge,pe,A.angle())}let se,ne;{let ie=new Ct;$s(C,ee,ie);let de=H.clone().add($).multiplyScalar(.5);de=UT(de,k,w);let le=H.clone().sub($);[se,ne]=G(de,le,ie,M,$.y)}{let ie=se,de=ie.clone().setY(0).normalize(),le=new Ct(0,-1,0),pe=de.clone().cross(le);L(ie,de,le,pe)}D.concat(ne);{let ie=A.angle(),de=Math.PI-ie,le=w.clone();le.y-=a/Math.sin(ie-Math.PI/2);let pe=new Ct,ge=[];for(let Xe=0;Xe<s;Xe++){let Ee=[],je=Math.PI/2-de*Xe/s,Yt=Math.cos(je),_e=Math.sin(je),yt=Y;for(let wt=0;wt<=Xe;wt++){let mi=Math.cos(yt),ct=Math.sin(yt);V.x=Yt*ct,V.y=_e,V.z=Yt*mi,pe.copy(le).addScaledVector(V,a),u.push(pe.x,pe.y,pe.z),c.push(V.x,V.y,V.z),d.push(0,0),Ee.push(p++),yt+=Math.PI*2/Xe/r}ge.push(Ee)}ne.reverse(),ge.push(ne);let De=ge.length-1;for(let Xe=0;Xe<De;Xe++){let Ee=ge[Xe],je=ge[Xe+1],Yt=Ee.length-1;l.push(je[1],Ee[0],je[0]);for(let _e=1;_e<=Yt;_e++)l.push(Ee[_e],Ee[_e-1],je[_e]),l.push(je[_e+1],Ee[_e],je[_e])}}}}}this.setIndex(l),this.setAttribute("position",new Rp(u,3)),this.setAttribute("normal",new Rp(c,3)),this.setAttribute("uv",new Rp(d,2));function G(V,z,k,$,q){let H=-$/2,X=(Math.PI-$)/2,j=z.clone().normalize().cross(k);V.addScaledVector(k,-a/Math.sin(X));let Y=new Ct,W=new Ct,F=1,oe=p,ee=[];for(let K=0;K<=s;K++){let te=H+K/s*$;W.set(0,0,0),W.addScaledVector(j,Math.sin(te)),W.addScaledVector(k,Math.cos(te));for(let Z=0;Z<=F;Z++){let se=Z/F-.5;if(Y.copy(V),Y.addScaledVector(z,se),Y.addScaledVector(W,a),q!=null){let ne=Math.max(0,Y.y-q);Y.addScaledVector(z,-ne/z.y)}u.push(Y.x,Y.y,Y.z),c.push(W.x,W.y,W.z),d.push(0,0),Z===0&&ee.push(p),p++}}for(let K=0;K<s;K++)for(let te=0;te<F;te++){let Z=oe+te+(F+1)*K,se=Z+(F+1),ne=se+1,ie=Z+1;l.push(Z,se,ie),l.push(se,ne,ie)}return[V.clone().addScaledVector(z,.5),ee]}function L(V,z,k,$){let q=Math.PI/2,H=x.angle()-q,X=[],j=new Ct,Y=new Ct;for(let F=0;F<=s;F++){let oe=[],ee=F/s;for(let K=0;K<=F;K++){let Z=((F?K/F:0)-.5)*b,se=Math.cos(Z),ne=Math.sin(Z),ie=Math.atan(Math.tan(H)*se),de=(q+ie)*ee,le=Math.cos(de),pe=Math.sin(de);j.set(0,0,0),j.addScaledVector(z,pe*se),j.addScaledVector(k,le),j.addScaledVector($,pe*ne),Y.copy(V).addScaledVector(j,a),u.push(Y.x,Y.y,Y.z),c.push(j.x,j.y,j.z),d.push(0,0),oe.push(p++)}X.push(oe)}let W=X.length-1;for(let F=0;F<W;F++){let oe=X[F],ee=X[F+1],K=oe.length-1;l.push(oe[0],ee[1],ee[0]);for(let te=1;te<=K;te++)l.push(oe[te-1],oe[te],ee[te]),l.push(oe[te],ee[te+1],ee[te])}}}};var va=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,u={x:e*.5,y:r*.5},c={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,v,_){return v>e&&_>r?Math.min(w*e/v,w*r/_):v>e?w*e/v:_>r?w*r/_:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let h=c.x,m=d.x,y=d.y,g=c.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.isClosed=!0;let b=!0;for(let w=0,v=t.points.length;w<v;w++)t.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(b=!1);b&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let S=Jt.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as HT,Float32BufferAttribute as qT,MathUtils as rx,SphereGeometry as WT}from"three";var ox=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=rx.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:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:u}=n.parameters,c;return u===0?(c=new HT,c.setAttribute("position",new qT([],3))):c=new WT(.5*t,o,i,a,s,l,u*rx.DEG2RAD),c.scale(1,e/t,r/t),Object.assign(c,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as $T}from"three";var nx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new $T(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as YT,Float32BufferAttribute as Gp,Vector3 as XT}from"three";var ix=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new Fp(t,e,r,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},Fp=class extends YT{constructor(t=1,e=1,r=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],u=[],c=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-c,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(Y=0,W=0,F=0)=>new XT(Y,W,F),h=f(),m=f(),[y,g,b]=[e/2,t/2,r/2],S=-g,w=+g,[v,_,A]=[f(S,-y,+b),f(S,-y,-b),f(S,+y,-b)],x=(Y,W=!1)=>Math.sin(Y-Math.PI/(1+ +W)),T=(Y,W=!1)=>Math.cos(Y-Math.PI/(1+ +W));A.y=Math.sin(o)*e-y;let C=Math.cos(o)*e-b,P=v.z-c;o<=p?(A.z=Math.min(C,P),A.z==P&&(A.y-=(C-P)/Math.tan(p-o))):_.z=Math.min(_.z-C-b,v.z-c),h.subVectors(v,_),m.subVectors(A,_);let O=Math.min(h.length(),m.length())*i/100,M=O*Math.tan(o/2),I=O/Math.cos(o/2),N=h.clone().normalize().add(m.normalize()).setLength(I).add(_);h.set(0,x(o,!0),T(o,!0)),d.push([A,h.clone()]);let B=(Math.PI-o)/a;for(let Y=0;Y<=a;Y++){let W=p+o+Y*B;h.set(0,Math.sin(W)*M,Math.cos(W)*M),h.add(N),m.set(0,x(W),T(W)),d.push([h.clone(),m.clone()])}d.push([v,f(0,1,0)]);let D=Math.sin(B/2)*M*2,G=d.length-1,L=d[0][0].distanceTo(d[1][0]),V=d[G-1][0].distanceTo(d[G][0]),z=L+D*a+V;d[0].push(1);for(let Y=0;Y<=a;Y++)d[Y+1].push(1-(L+Y*D)/z);d[G].push(0);let[k,$,q]=d[0],H,X,j;for(let Y=1;Y<d.length;Y++)[H,X,j]=d[Y],s.push(S,k.y,k.z,S,H.y,H.z,w,k.y,k.z,w,k.y,k.z,S,H.y,H.z,w,H.y,H.z),l.push(0,$.y,$.z,0,X.y,X.z,0,$.y,$.z,0,$.y,$.z,0,X.y,X.z,0,X.y,X.z),u.push(0,q,0,j,1,q,1,q,0,j,1,j),[k,$,q]=[H,X,j];this.setAttribute("position",new Gp(s,3)),this.setAttribute("normal",new Gp(l,3)),this.setAttribute("uv",new Gp(u,2))}};var lu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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 Le?n.shape:new Le,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:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}=n.parameters,c=n.shape,d=t*.5,p=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*r/100,b=p*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let w=0;w<o;w++){let v=m*w,_=f+Math.sin(v)*d,A=h+Math.cos(v)*p;c.addPoint(c.createPoint(_,A))}}else for(let w=0;w<o;w++){let v=f+Math.cos(y)*d,_=h+Math.sin(y)*p;c.addPoint(c.createPoint(v,_)),y+=m,v=f+Math.cos(y)*g,_=h+Math.sin(y)*b,w<=o,c.addPoint(c.createPoint(v,_)),y+=m}c.isClosed=!0;for(let w=0,v=c.points.length;w<v;w++)c.points[w].roundness=i;c.roundness=i,c.update();let S=Jt.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as QT}from"three";var ax=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e}=n.parameters,r=new QT(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as KT,Float32BufferAttribute as ZT,MathUtils as JT}from"three";var sx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),r=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:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,u=eM(t,e,r,t*.5,a,i,0,0,o,s,l);return u.scale(1,e/t,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function eM(n,t,e,r,o,i,a,s,l,u,c){[t,e]=[e,t],a=t/2;let d=JT.clamp(o/360,0,1);if(d===0){let p=new KT;return p.setAttribute("position",new ZT([],3)),p}return d===1&&(u=0),new Hs(!0,n,t,e,r,d,i,a,s,l,u,c)}import{TorusKnotGeometry as tM}from"three";var lx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:a}=n.parameters,s=t*.5;s!==e&&(s-=e);let l=new tM(s,e,r,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var cx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,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:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,u=t*.5,c=e*.5;s?(l.addPoint(l.createPoint(-u,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))),l.isClosed=!0;for(let p=0,f=l.points.length;p<f;p++)l.points[p].roundness=r;l.roundness=r,l.update();let d=Jt.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as dx,Vector3 as Tt,Matrix3 as rM,Matrix4 as $n,BufferGeometry as px,BufferAttribute as Sa,MathUtils as cu}from"three";function ux(n,t){let e=2*Math.PI;return(n%e+e)%e===(t%e+e)%e}var oM=new $n,nM=new $n;function iM(n,t,e){let r=[new Tt,new Tt,new Tt],o=[new Tt,new Tt,new Tt];return n.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((i,a)=>{let s=o[a],l=cu.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new $n().makeBasis(r[0],r[1],r[2])}var fx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=t?.shapeData??ya.create({parameters:Ld}).userData.shape;return{path:n.path??Xi.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:i,extrusion:{...Sc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new kp(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new px,{userData:{...n,type:"PathGeometry"}})}},kp=class extends px{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)||!ux(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset: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),u=Math.min(Math.max(2,l-s+1),a+2),c=[],d=[];for(let L=0;L<u;L++){let V=this.inputs.path.isClosed?(L+s)%e.length:Math.min(L+s,e.length-1);c.push(e[V].clone()),d.push(r[V].clone())}let p=(L,V,z)=>{c[L]=c[L].clone().lerp(c[V],z),d[L]=iM(d[L],d[V],z)},f=0,h=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||i===0)&&(f=h,p(0,1,f));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,p(c.length-1,c.length-2,1-m)),o===0){let L=c.length-1;c[L].copy(c[0]),d[L].copy(d[0])}this._applyPathModifiers(d,f,m);let{bevel:g,bevelSides:b}=this.inputs.parameters.extrusion,S=g>0?this.inputs.parameters.extrusion.capType:"flat",w=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(w=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:v,infos:_,vertices:A}=this._computeShapePoints(w),x=0,T;S==="round"&&(T=new gn(this.inputs.shapeData,2*g,g,w,b,void 0,!0),x=T.getAttribute("position").count);let C=0,P=0;_.sort((L,V)=>L.start-V.start),_.forEach(L=>{L.verticesStart=C,L.verticesCount=L.continuous.reduce((V,z,k)=>V+(k===0||!z?2:1),0),P+=L.verticesCount,C=P});let O=P*u,M,I=0;if(this._isOpenEnded()&&S==="flat"){try{M=Vr({windingRule:Ie.ODD,elementType:tt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:v})}catch{M=Op}I=M.vertexCount}let N=O+2*I+x*2,B=O+2*I,D={positions:new Float32Array(N*3),normals:new Float32Array(N*3),uvs:new Float32Array(N*2)},G=[];if(_.forEach(L=>{this._extrudeRegion(L,A,d,c,D,G,this._isGeometryClosed()&&!this._isOpenEnded())}),M&&(this._closeEnd(M,O,G,D,d[0],c[0],!1),this._closeEnd(M,O+I,G,D,d[d.length-1],c[c.length-1],!0)),T){D.positions.set(T.getAttribute("position").array,B*3),D.normals.set(T.getAttribute("normal").array,B*3),D.uvs.set(T.getAttribute("uv").array,B*2);let L=G.length;G.push(...T.getIndex().array.map(k=>k+B)),B+=x,D.positions.set(T.getAttribute("position").array,B*3),D.normals.set(T.getAttribute("normal").array,B*3),D.uvs.set(T.getAttribute("uv").array,B*2);let V=G.length;G.push(...T.getIndex().array.map(k=>k+B)),this.setAttribute("position",new Sa(D.positions,3)),this.setAttribute("normal",new Sa(D.normals,3)),this.setAttribute("uv",new Sa(D.uvs,2)),this.setIndex(G);let z=oM;z.copy(d[d.length-1]).setPosition(c[c.length-1]),this.applyMatrix4OnRange(z,B,N),z.copy(d[0]).setPosition(c[0]).multiply(nM.makeScale(1,1,-1)),this.applyMatrix4OnRange(z,B-x,B),this.reverseIndicesOnRange(L,V)}else this.setAttribute("position",new Sa(D.positions,3)),this.setAttribute("normal",new Sa(D.normals,3)),this.setAttribute("uv",new Sa(D.uvs,2)),this.setIndex(G)}_extractPathPoints(){let r=jc(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,i=this.inputs.path.isClosed,a=new Tt,s=new Tt,l=new Tt,u=new Tt,c=new Tt(0,1,0);for(let y=0;y<o;y++){let g=e[y],b;y===0?b=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):b=e[y-1];let S;y===o-1?S=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):S=e[y+1];let w=g.clone().sub(b).normalize(),v=S.clone().sub(g).normalize(),_=w.clone().add(v).normalize();l.copy(_),y===0&&(_.equals(c)||_.clone().negate().equals(c))&&c.set(0,0,1);let A=c.clone().cross(_).normalize(),x=_.clone().cross(A).normalize();c.copy(x),u.copy(A),y===0&&(a.copy(x),s.copy(_));let T=new $n().makeBasis(A,x,_);r.push(T)}let d=i?s:l,p=i?a:new Tt(0,1,0),f=d.clone().cross(u).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);d.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let g=new $n().makeRotationZ(h*y/r.length);r[y].multiply(g)}return r}_applyPathModifiers(e,r,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:u}=this.inputs.parameters.extrusion,c=new $n,d=new $n;return e.forEach((p,f)=>{let h=f===0?0:f===i-1?1:(f-r)/(i-(o===0?0:1)-(r+(1-o)));c.makeRotationZ(cu.lerp(a,a+s,h)*cu.DEG2RAD);let m=cu.lerp(l,u,h);d.makeScale(m,m,m),p.multiply(c).multiply(d)}),e}_computeShapePoints(e=12,r=Ie.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let b=y.length-1;b>=1;b-=2){let S=y[b-1],w=y[b-0];g.push(S,w)}return g}),s;try{s=Vr({windingRule:r,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=Us}let l;try{l=Vr({windingRule:Ie.ODD,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Pp}if(!s)throw new Error("error generating geometry");let u=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 c=1/0,d=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,b=s.vertices[g+0],S=s.vertices[g+1];b<c&&(c=b),b>d&&(d=b),S<p&&(p=S),S>f&&(f=S)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=u,g=m*2,b=s.elements[g+0],S=s.elements[g+1],w=b+S,v={start:b,count:S,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(v);let _=b,A=w-1,x=b+1,T=o.roundedCurves.length;do{let C=_-b,P=s.vertices[A*2+0],O=s.vertices[A*2+1],M=s.vertices[_*2+0],I=s.vertices[_*2+1],N=s.vertices[x*2+0],B=s.vertices[x*2+1],D=M-P,G=I-O,L=Math.sqrt(D*D+G*G);D/=L,G/=L;let V=M-N,z=I-B,k=Math.sqrt(V*V+z*z);V/=k,z/=k,v.normals[C*2+0]=-z,v.normals[C*2+1]=V;let $=s.vertexIndices[_];if(Array.isArray($))v.continuous[C]=!1;else{let[q,H]=o.getCurveIndexFromVertexId($-1,!0);if(H>0&&H<1)v.continuous[C]=!0;else{let X=H===1?q+1:q-1;X=(X+T)%T;let j=H===1?0:1,Y=o.roundedCurves[q].getTangent(H),W=o.roundedCurves[X].getTangent(j);v.continuous[C]=Y.dot(W)>.95}}y&&(v.normals[C*2+0]*=-1,v.normals[C*2+1]*=-1),[A,_,x]=[_,x,x+1],x>=w&&(x-=S)}while(x!==b+1)}return{regions:[i,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,i,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=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,r,o,i,a,s,l){let u=new Tt,c=new Tt,d=new Tt,p=new Tt,f=new dx;o.forEach((m,y)=>{let g=i[y],b=e.verticesStart*o.length+e.verticesCount*y;for(let S=0;S<e.count;S++){let w=(e.start+S)*2;if(u.set(r[w+0],r[w+1],0),d.copy(u).applyMatrix4(m).add(g),e.continuous[S])p.set(e.normals[S*2+0],e.normals[S*2+1],0);else{let v=S===0?(e.start+e.count-1)*2:w-2;c.set(r[v+0],r[v+1],0),p.copy(u).sub(c),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(m).normalize(),f.set(S===0?1:S/e.count,y/(o.length-1)),this._insertVertex(a,b,d,p,f),b++,!e.continuous[S]||S===0){if(S===0)p.set(e.normals[S*2+0],e.normals[S*2+1],0),f.set(0,y/(o.length-1));else{let v=S===e.count-1?e.start*2:w+2;c.set(r[v+0],r[v+1],0),p.copy(c).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,b,d,p,f),b++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),b=0;for(let S=0;S<e.count;S++){(!e.continuous[S]||S===0)&&b++;let w=S===e.count-1?0:b+1,v=y+b,_=y+w,A=g+w,x=g+b;e.isHole?s.push(v,A,_,v,x,A):s.push(v,_,A,v,A,x),b++}}}_closeEnd(e,r,o,i,a,s,l){let u=e.vertexCount,c=new Tt(0,0,l?-1:1).applyMatrix4(a),d=new Tt,p=new dx;for(let h=0;h<u;h++){let m=2*h;d.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,r+h,d,c,p)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,g=f[m+(l?1:2)]+r,b=f[m+(l?2:1)]+r;o.push(y,g,b)}}applyMatrix4OnRange(e,r,o){let i=e.elements,a=new rM().getNormalMatrix(e).elements,s,l,u,c,d=this.attributes.position,p=this.attributes.normal;if(!d||!p)return;let f=d.array,h=p.array,m=d.itemSize;for(let y=r*m,g=o*m;y<g;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],u=f[y+2],c=1/(i[3]*s+i[7]*l+i[11]*u+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*u+i[12])*c,f[y+1]=(i[1]*s+i[5]*l+i[9]*u+i[13])*c,f[y+2]=(i[2]*s+i[6]*l+i[10]*u+i[14])*c,s=h[y+0],l=h[y+1],u=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*u,h[y+1]=a[1]*s+a[4]*l+a[7]*u,h[y+2]=a[2]*s+a[5]*l+a[8]*u}d.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let i=e;i<r;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 hx,BufferGeometry as jp}from"three";import{mergeBufferGeometries as sM}from"three/examples/jsm/utils/BufferGeometryUtils.js";function mx(){let n=new jp;return n.setAttribute("position",new hx(new Float32Array([]),3)),n.setIndex(new hx(new Uint16Array([]),1)),n}var lM=mx().attributes,cM=12,uM=1,wa=class extends jp{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,lM),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,r).then(()=>{this.update(e),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let r=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!r?.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:u,textTransform:c}=e,d=Ic.getDisplayedValue(u),p=c===2?d.toUpperCase():c===3?d.toLowerCase():d,f=dM(e,r,p),{shapes:h,charWidths:m,charCoords:y}=r.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,b=(typeof i=="number"?i:1)*.5,S=h.map(_=>new Le().fromShape(_,!0));this.vectorShapes=S;let w=S.map(_=>Jt.create({shape:_,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Ie.NONZERO:Ie.ODD,subdivisions:this.isLowResolution&&a>0?uM:cM}})),v=w.length?sM(w):mx();v.translate(-g,b,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(v.attributes).forEach(([_,A])=>{this.setAttribute(_,A)}),this.setIndex(v.index),this.computeBoundingSphere()}clone(){let e=jt(new jp,wa.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function dM(n,t,e){let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
16
|
+
`));return d(pE.bind(void 0,n))}US.exports=fE});var WS=Kt((vde,qS)=>{"use strict";var hE=HS();function mE(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}function yE(n){var t=new mE;t.pre=n.pre,t.body=n.body,t.post=n.post;var e=n.args.slice(0);t.argTypes=e;for(var r=0;r<e.length;++r){var o=e[r];if(o==="array"||typeof o=="object"&&o.blockIndices){if(t.argTypes[r]="array",t.arrayArgs.push(r),t.arrayBlockIndices.push(o.blockIndices?o.blockIndices:0),t.shimArgs.push("array"+r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array args");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array args")}else if(o==="scalar")t.scalarArgs.push(r),t.shimArgs.push("scalar"+r);else if(o==="index"){if(t.indexArgs.push(r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array index");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array index");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array index")}else if(o==="shape"){if(t.shapeArgs.push(r),r<t.pre.args.length&&t.pre.args[r].lvalue)throw new Error("cwise: pre() block may not write to array shape");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array shape");if(r<t.post.args.length&&t.post.args[r].lvalue)throw new Error("cwise: post() block may not write to array shape")}else if(typeof o=="object"&&o.offset)t.argTypes[r]="offset",t.offsetArgs.push({array:o.array,offset:o.offset}),t.offsetArgIndex.push(r);else throw new Error("cwise: Unknown argument type "+e[r])}if(t.arrayArgs.length<=0)throw new Error("cwise: No array arguments specified");if(t.pre.args.length>e.length)throw new Error("cwise: Too many arguments in pre() block");if(t.body.args.length>e.length)throw new Error("cwise: Too many arguments in body() block");if(t.post.args.length>e.length)throw new Error("cwise: Too many arguments in post() block");return t.debug=!!n.printCode||!!n.debug,t.funcName=n.funcName||"cwise",t.blockSize=n.blockSize||64,hE(t)}qS.exports=yE});var Es=Kt(Ve=>{"use strict";var gr=WS(),Cd={body:"",args:[],thisVars:[],localVars:[]};function Gh(n){if(!n)return Cd;for(var t=0;t<n.args.length;++t){var e=n.args[t];t===0?n.args[t]={name:e,lvalue:!0,rvalue:!!n.rvalue,count:n.count||1}:n.args[t]={name:e,lvalue:!1,rvalue:!0,count:1}}return n.thisVars||(n.thisVars=[]),n.localVars||(n.localVars=[]),n}function gE(n){return gr({args:n.args,pre:Gh(n.pre),body:Gh(n.body),post:Gh(n.proc),funcName:n.funcName})}function ht(n){for(var t=[],e=0;e<n.args.length;++e)t.push("a"+e);var r=new Function("P",["return function ",n.funcName,"_ndarrayops(",t.join(","),") {P(",t.join(","),");return a0}"].join(""));return r(gE(n))}var $S={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var n in $S){var t=$S[n];Ve[n]=ht({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Ve[n+"eq"]=ht({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:n+"eq"}),Ve[n+"s"]=ht({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Ve[n+"seq"]=ht({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:n+"seq"})}})();var YS={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var n in YS){var t=YS[n];Ve[n]=ht({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:n}),Ve[n+"eq"]=ht({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:n+"eq"})}})();var XS={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};(function(){for(var n in XS){var t=XS[n];Ve[n]=ht({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Ve[n+"s"]=ht({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Ve[n+"eq"]=ht({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:n+"eq"}),Ve[n+"seq"]=ht({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:n+"seq"})}})();var QS=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];(function(){for(var n=0;n<QS.length;++n){var t=QS[n];Ve[t]=ht({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:t}),Ve[t+"eq"]=ht({args:["array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"})}})();var KS=["max","min","atan2","pow"];(function(){for(var n=0;n<KS.length;++n){var t=KS[n];Ve[t]=ht({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t}),Ve[t+"s"]=ht({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t+"s"}),Ve[t+"eq"]=ht({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"}),Ve[t+"seq"]=ht({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"seq"})}})();var ZS=["atan2","pow"];(function(){for(var n=0;n<ZS.length;++n){var t=ZS[n];Ve[t+"op"]=ht({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"op"}),Ve[t+"ops"]=ht({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"ops"}),Ve[t+"opeq"]=ht({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opeq"}),Ve[t+"opseq"]=ht({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opseq"})}})();Ve.any=gr({args:["array"],pre:Cd,body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"if(a){return true}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return false"},funcName:"any"});Ve.all=gr({args:["array"],pre:Cd,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1}],body:"if(!x){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"all"});Ve.sum=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s+=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"sum"});Ve.prod=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=1"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s*=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"prod"});Ve.norm2squared=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm2squared"});Ve.norm2=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return Math.sqrt(this_s)"},funcName:"norm2"});Ve.norminf=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:4}],body:"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"});Ve.norm1=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"});Ve.sup=gr({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Ve.inf=gr({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Ve.argmin=gr({args:["index","array","shape"],pre:{body:"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Ve.argmax=gr({args:["index","array","shape"],pre:{body:"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Ve.random=ht({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"});Ve.assign=ht({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"});Ve.assigns=ht({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"});Ve.equals=gr({args:["array","array"],pre:Cd,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})});var _1=Kt((she,A1)=>{A1.exports=function(t,e){for(var r=t.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(r[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 tB,Loader as rB}from"three";function Xl(n){for(let t of Object.keys(n))n[t]===void 0&&delete n[t];return n}function rr(n,t){return Object.setPrototypeOf(n,t),n}function Ql(n){return Array.isArray(n)?n:[n]}function Kl(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var Z1=typeof global=="object"&&global&&global.Object===Object&&global,Zl=Z1;var J1=typeof self=="object"&&self&&self.Object===Object&&self,ew=Zl||J1||Function("return this")(),_t=ew;var tw=_t.Symbol,Lt=tw;var rm=Object.prototype,rw=rm.hasOwnProperty,ow=rm.toString,Rs=Lt?Lt.toStringTag:void 0;function nw(n){var t=rw.call(n,Rs),e=n[Rs];try{n[Rs]=void 0;var r=!0}catch{}var o=ow.call(n);return r&&(t?n[Rs]=e:delete n[Rs]),o}var om=nw;var iw=Object.prototype,aw=iw.toString;function sw(n){return aw.call(n)}var nm=sw;var lw="[object Null]",cw="[object Undefined]",im=Lt?Lt.toStringTag:void 0;function uw(n){return n==null?n===void 0?cw:lw:im&&im in Object(n)?om(n):nm(n)}var xr=uw;function dw(n){return n!=null&&typeof n=="object"}var Ht=dw;var pw="[object Symbol]";function fw(n){return typeof n=="symbol"||Ht(n)&&xr(n)==pw}var Bi=fw;function hw(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Jl=hw;var mw=Array.isArray,yt=mw;var yw=1/0,am=Lt?Lt.prototype:void 0,sm=am?am.toString:void 0;function lm(n){if(typeof n=="string")return n;if(yt(n))return Jl(n,lm)+"";if(Bi(n))return sm?sm.call(n):"";var t=n+"";return t=="0"&&1/n==-yw?"-0":t}var cm=lm;function gw(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var br=gw;function xw(n){return n}var um=xw;var bw="[object AsyncFunction]",vw="[object Function]",Sw="[object GeneratorFunction]",ww="[object Proxy]";function Aw(n){if(!br(n))return!1;var t=xr(n);return t==vw||t==Sw||t==bw||t==ww}var ec=Aw;var _w=_t["__core-js_shared__"],tc=_w;var dm=function(){var n=/[^.]+$/.exec(tc&&tc.keys&&tc.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Pw(n){return!!dm&&dm in n}var pm=Pw;var Ow=Function.prototype,Cw=Ow.toString;function Tw(n){if(n!=null){try{return Cw.call(n)}catch{}try{return n+""}catch{}}return""}var Do=Tw;var Mw=/[\\^$.*+?()[\]{}|]/g,Iw=/^\[object .+?Constructor\]$/,Nw=Function.prototype,Dw=Object.prototype,Ew=Nw.toString,Bw=Dw.hasOwnProperty,Lw=RegExp("^"+Ew.call(Bw).replace(Mw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Rw(n){if(!br(n)||pm(n))return!1;var t=ec(n)?Lw:Iw;return t.test(Do(n))}var fm=Rw;function Vw(n,t){return n?.[t]}var hm=Vw;function zw(n,t){var e=hm(n,t);return fm(e)?e:void 0}var lr=zw;var Gw=lr(_t,"WeakMap"),rc=Gw;var mm=Object.create,kw=function(){function n(){}return function(t){if(!br(t))return{};if(mm)return mm(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),ym=kw;function Fw(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var gm=Fw;function jw(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var xm=jw;var Uw=800,Hw=16,qw=Date.now;function Ww(n){var t=0,e=0;return function(){var r=qw(),o=Hw-(r-e);if(e=r,o>0){if(++t>=Uw)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var bm=Ww;function $w(n){return function(){return n}}var vm=$w;var Yw=function(){try{var n=lr(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Li=Yw;var Xw=Li?function(n,t){return Li(n,"toString",{configurable:!0,enumerable:!1,value:vm(t),writable:!0})}:um,Sm=Xw;var Qw=bm(Sm),wm=Qw;function Kw(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Am=Kw;var Zw=9007199254740991,Jw=/^(?:0|[1-9]\d*)$/;function e2(n,t){var e=typeof n;return t=t??Zw,!!t&&(e=="number"||e!="symbol"&&Jw.test(n))&&n>-1&&n%1==0&&n<t}var Ri=e2;function t2(n,t,e){t=="__proto__"&&Li?Li(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var oc=t2;function r2(n,t){return n===t||n!==n&&t!==t}var Vi=r2;var o2=Object.prototype,n2=o2.hasOwnProperty;function i2(n,t,e){var r=n[t];(!(n2.call(n,t)&&Vi(r,e))||e===void 0&&!(t in n))&&oc(n,t,e)}var zi=i2;function a2(n,t,e,r){var o=!e;e||(e={});for(var i=-1,a=t.length;++i<a;){var s=t[i],l=r?r(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?oc(e,s,l):zi(e,s,l)}return e}var no=a2;var _m=Math.max;function s2(n,t,e){return t=_m(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=_m(r.length-t,0),a=Array(i);++o<i;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),gm(n,this,s)}}var Pm=s2;var l2=9007199254740991;function c2(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=l2}var Gi=c2;function u2(n){return n!=null&&Gi(n.length)&&!ec(n)}var nc=u2;var d2=Object.prototype;function p2(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||d2;return n===e}var ki=p2;function f2(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Om=f2;var h2="[object Arguments]";function m2(n){return Ht(n)&&xr(n)==h2}var Ud=m2;var Cm=Object.prototype,y2=Cm.hasOwnProperty,g2=Cm.propertyIsEnumerable,x2=Ud(function(){return arguments}())?Ud:function(n){return Ht(n)&&y2.call(n,"callee")&&!g2.call(n,"callee")},Fi=x2;function b2(){return!1}var Tm=b2;var Nm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Mm=Nm&&typeof module=="object"&&module&&!module.nodeType&&module,v2=Mm&&Mm.exports===Nm,Im=v2?_t.Buffer:void 0,S2=Im?Im.isBuffer:void 0,w2=S2||Tm,Xn=w2;var A2="[object Arguments]",_2="[object Array]",P2="[object Boolean]",O2="[object Date]",C2="[object Error]",T2="[object Function]",M2="[object Map]",I2="[object Number]",N2="[object Object]",D2="[object RegExp]",E2="[object Set]",B2="[object String]",L2="[object WeakMap]",R2="[object ArrayBuffer]",V2="[object DataView]",z2="[object Float32Array]",G2="[object Float64Array]",k2="[object Int8Array]",F2="[object Int16Array]",j2="[object Int32Array]",U2="[object Uint8Array]",H2="[object Uint8ClampedArray]",q2="[object Uint16Array]",W2="[object Uint32Array]",it={};it[z2]=it[G2]=it[k2]=it[F2]=it[j2]=it[U2]=it[H2]=it[q2]=it[W2]=!0;it[A2]=it[_2]=it[R2]=it[P2]=it[V2]=it[O2]=it[C2]=it[T2]=it[M2]=it[I2]=it[N2]=it[D2]=it[E2]=it[B2]=it[L2]=!1;function $2(n){return Ht(n)&&Gi(n.length)&&!!it[xr(n)]}var Dm=$2;function Y2(n){return function(t){return n(t)}}var ji=Y2;var Em=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vs=Em&&typeof module=="object"&&module&&!module.nodeType&&module,X2=Vs&&Vs.exports===Em,Hd=X2&&Zl.process,Q2=function(){try{var n=Vs&&Vs.require&&Vs.require("util").types;return n||Hd&&Hd.binding&&Hd.binding("util")}catch{}}(),Eo=Q2;var Bm=Eo&&Eo.isTypedArray,K2=Bm?ji(Bm):Dm,ic=K2;var Z2=Object.prototype,J2=Z2.hasOwnProperty;function eA(n,t){var e=yt(n),r=!e&&Fi(n),o=!e&&!r&&Xn(n),i=!e&&!r&&!o&&ic(n),a=e||r||o||i,s=a?Om(n.length,String):[],l=s.length;for(var u in n)(t||J2.call(n,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Ri(u,l)))&&s.push(u);return s}var ac=eA;function tA(n,t){return function(e){return n(t(e))}}var sc=tA;var rA=sc(Object.keys,Object),Lm=rA;var oA=Object.prototype,nA=oA.hasOwnProperty;function iA(n){if(!ki(n))return Lm(n);var t=[];for(var e in Object(n))nA.call(n,e)&&e!="constructor"&&t.push(e);return t}var Rm=iA;function aA(n){return nc(n)?ac(n):Rm(n)}var Ui=aA;function sA(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Vm=sA;var lA=Object.prototype,cA=lA.hasOwnProperty;function uA(n){if(!br(n))return Vm(n);var t=ki(n),e=[];for(var r in n)r=="constructor"&&(t||!cA.call(n,r))||e.push(r);return e}var zm=uA;function dA(n){return nc(n)?ac(n,!0):zm(n)}var Hi=dA;var pA=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,fA=/^\w*$/;function hA(n,t){if(yt(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Bi(n)?!0:fA.test(n)||!pA.test(n)||t!=null&&n in Object(t)}var Gm=hA;var mA=lr(Object,"create"),Bo=mA;function yA(){this.__data__=Bo?Bo(null):{},this.size=0}var km=yA;function gA(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Fm=gA;var xA="__lodash_hash_undefined__",bA=Object.prototype,vA=bA.hasOwnProperty;function SA(n){var t=this.__data__;if(Bo){var e=t[n];return e===xA?void 0:e}return vA.call(t,n)?t[n]:void 0}var jm=SA;var wA=Object.prototype,AA=wA.hasOwnProperty;function _A(n){var t=this.__data__;return Bo?t[n]!==void 0:AA.call(t,n)}var Um=_A;var PA="__lodash_hash_undefined__";function OA(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Bo&&t===void 0?PA:t,this}var Hm=OA;function qi(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}qi.prototype.clear=km;qi.prototype.delete=Fm;qi.prototype.get=jm;qi.prototype.has=Um;qi.prototype.set=Hm;var qd=qi;function CA(){this.__data__=[],this.size=0}var qm=CA;function TA(n,t){for(var e=n.length;e--;)if(Vi(n[e][0],t))return e;return-1}var sn=TA;var MA=Array.prototype,IA=MA.splice;function NA(n){var t=this.__data__,e=sn(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():IA.call(t,e,1),--this.size,!0}var Wm=NA;function DA(n){var t=this.__data__,e=sn(t,n);return e<0?void 0:t[e][1]}var $m=DA;function EA(n){return sn(this.__data__,n)>-1}var Ym=EA;function BA(n,t){var e=this.__data__,r=sn(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var Xm=BA;function Wi(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Wi.prototype.clear=qm;Wi.prototype.delete=Wm;Wi.prototype.get=$m;Wi.prototype.has=Ym;Wi.prototype.set=Xm;var ln=Wi;var LA=lr(_t,"Map"),cn=LA;function RA(){this.size=0,this.__data__={hash:new qd,map:new(cn||ln),string:new qd}}var Qm=RA;function VA(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var Km=VA;function zA(n,t){var e=n.__data__;return Km(t)?e[typeof t=="string"?"string":"hash"]:e.map}var un=zA;function GA(n){var t=un(this,n).delete(n);return this.size-=t?1:0,t}var Zm=GA;function kA(n){return un(this,n).get(n)}var Jm=kA;function FA(n){return un(this,n).has(n)}var ey=FA;function jA(n,t){var e=un(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var ty=jA;function $i(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}$i.prototype.clear=Qm;$i.prototype.delete=Zm;$i.prototype.get=Jm;$i.prototype.has=ey;$i.prototype.set=ty;var Qn=$i;var UA="Expected a function";function Wd(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(UA);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,r);return e.cache=i.set(o,a)||i,a};return e.cache=new(Wd.Cache||Qn),e}Wd.Cache=Qn;var ry=Wd;var HA=500;function qA(n){var t=ry(n,function(r){return e.size===HA&&e.clear(),r}),e=t.cache;return t}var oy=qA;var WA=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$A=/\\(\\)?/g,YA=oy(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(WA,function(e,r,o,i){t.push(o?i.replace($A,"$1"):r||e)}),t}),ny=YA;function XA(n){return n==null?"":cm(n)}var iy=XA;function QA(n,t){return yt(n)?n:Gm(n,t)?[n]:ny(iy(n))}var Cr=QA;var KA=1/0;function ZA(n){if(typeof n=="string"||Bi(n))return n;var t=n+"";return t=="0"&&1/n==-KA?"-0":t}var dn=ZA;function JA(n,t){t=Cr(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[dn(t[e++])];return e&&e==r?n:void 0}var lc=JA;function e_(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Yi=e_;var ay=Lt?Lt.isConcatSpreadable:void 0;function t_(n){return yt(n)||Fi(n)||!!(ay&&n&&n[ay])}var sy=t_;function ly(n,t,e,r,o){var i=-1,a=n.length;for(e||(e=sy),o||(o=[]);++i<a;){var s=n[i];t>0&&e(s)?t>1?ly(s,t-1,e,r,o):Yi(o,s):r||(o[o.length]=s)}return o}var cy=ly;function r_(n){var t=n==null?0:n.length;return t?cy(n,1):[]}var uy=r_;function o_(n){return wm(Pm(n,void 0,uy),n+"")}var cc=o_;var n_=sc(Object.getPrototypeOf,Object),Xi=n_;var i_="[object Object]",a_=Function.prototype,s_=Object.prototype,dy=a_.toString,l_=s_.hasOwnProperty,c_=dy.call(Object);function u_(n){if(!Ht(n)||xr(n)!=i_)return!1;var t=Xi(n);if(t===null)return!0;var e=l_.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&dy.call(e)==c_}var py=u_;function d_(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var fy=d_;function p_(){this.__data__=new ln,this.size=0}var hy=p_;function f_(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var my=f_;function h_(n){return this.__data__.get(n)}var yy=h_;function m_(n){return this.__data__.has(n)}var gy=m_;var y_=200;function g_(n,t){var e=this.__data__;if(e instanceof ln){var r=e.__data__;if(!cn||r.length<y_-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Qn(r)}return e.set(n,t),this.size=e.size,this}var xy=g_;function Qi(n){var t=this.__data__=new ln(n);this.size=t.size}Qi.prototype.clear=hy;Qi.prototype.delete=my;Qi.prototype.get=yy;Qi.prototype.has=gy;Qi.prototype.set=xy;var Ki=Qi;function x_(n,t){return n&&no(t,Ui(t),n)}var by=x_;function b_(n,t){return n&&no(t,Hi(t),n)}var vy=b_;var _y=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Sy=_y&&typeof module=="object"&&module&&!module.nodeType&&module,v_=Sy&&Sy.exports===_y,wy=v_?_t.Buffer:void 0,Ay=wy?wy.allocUnsafe:void 0;function S_(n,t){if(t)return n.slice();var e=n.length,r=Ay?Ay(e):new n.constructor(e);return n.copy(r),r}var Py=S_;function w_(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var a=n[e];t(a,e,n)&&(i[o++]=a)}return i}var Oy=w_;function A_(){return[]}var uc=A_;var __=Object.prototype,P_=__.propertyIsEnumerable,Cy=Object.getOwnPropertySymbols,O_=Cy?function(n){return n==null?[]:(n=Object(n),Oy(Cy(n),function(t){return P_.call(n,t)}))}:uc,Zi=O_;function C_(n,t){return no(n,Zi(n),t)}var Ty=C_;var T_=Object.getOwnPropertySymbols,M_=T_?function(n){for(var t=[];n;)Yi(t,Zi(n)),n=Xi(n);return t}:uc,dc=M_;function I_(n,t){return no(n,dc(n),t)}var My=I_;function N_(n,t,e){var r=t(n);return yt(n)?r:Yi(r,e(n))}var pc=N_;function D_(n){return pc(n,Ui,Zi)}var zs=D_;function E_(n){return pc(n,Hi,dc)}var fc=E_;var B_=lr(_t,"DataView"),hc=B_;var L_=lr(_t,"Promise"),mc=L_;var R_=lr(_t,"Set"),yc=R_;var Iy="[object Map]",V_="[object Object]",Ny="[object Promise]",Dy="[object Set]",Ey="[object WeakMap]",By="[object DataView]",z_=Do(hc),G_=Do(cn),k_=Do(mc),F_=Do(yc),j_=Do(rc),Kn=xr;(hc&&Kn(new hc(new ArrayBuffer(1)))!=By||cn&&Kn(new cn)!=Iy||mc&&Kn(mc.resolve())!=Ny||yc&&Kn(new yc)!=Dy||rc&&Kn(new rc)!=Ey)&&(Kn=function(n){var t=xr(n),e=t==V_?n.constructor:void 0,r=e?Do(e):"";if(r)switch(r){case z_:return By;case G_:return Iy;case k_:return Ny;case F_:return Dy;case j_:return Ey}return t});var Lo=Kn;var U_=Object.prototype,H_=U_.hasOwnProperty;function q_(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&H_.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Ly=q_;var W_=_t.Uint8Array,Ji=W_;function $_(n){var t=new n.constructor(n.byteLength);return new Ji(t).set(new Ji(n)),t}var ea=$_;function Y_(n,t){var e=t?ea(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Ry=Y_;var X_=/\w*$/;function Q_(n){var t=new n.constructor(n.source,X_.exec(n));return t.lastIndex=n.lastIndex,t}var Vy=Q_;var zy=Lt?Lt.prototype:void 0,Gy=zy?zy.valueOf:void 0;function K_(n){return Gy?Object(Gy.call(n)):{}}var ky=K_;function Z_(n,t){var e=t?ea(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Fy=Z_;var J_="[object Boolean]",eP="[object Date]",tP="[object Map]",rP="[object Number]",oP="[object RegExp]",nP="[object Set]",iP="[object String]",aP="[object Symbol]",sP="[object ArrayBuffer]",lP="[object DataView]",cP="[object Float32Array]",uP="[object Float64Array]",dP="[object Int8Array]",pP="[object Int16Array]",fP="[object Int32Array]",hP="[object Uint8Array]",mP="[object Uint8ClampedArray]",yP="[object Uint16Array]",gP="[object Uint32Array]";function xP(n,t,e){var r=n.constructor;switch(t){case sP:return ea(n);case J_:case eP:return new r(+n);case lP:return Ry(n,e);case cP:case uP:case dP:case pP:case fP:case hP:case mP:case yP:case gP:return Fy(n,e);case tP:return new r;case rP:case iP:return new r(n);case oP:return Vy(n);case nP:return new r;case aP:return ky(n)}}var jy=xP;function bP(n){return typeof n.constructor=="function"&&!ki(n)?ym(Xi(n)):{}}var Uy=bP;var vP="[object Map]";function SP(n){return Ht(n)&&Lo(n)==vP}var Hy=SP;var qy=Eo&&Eo.isMap,wP=qy?ji(qy):Hy,Wy=wP;var AP="[object Set]";function _P(n){return Ht(n)&&Lo(n)==AP}var $y=_P;var Yy=Eo&&Eo.isSet,PP=Yy?ji(Yy):$y,Xy=PP;var OP=1,CP=2,TP=4,Qy="[object Arguments]",MP="[object Array]",IP="[object Boolean]",NP="[object Date]",DP="[object Error]",Ky="[object Function]",EP="[object GeneratorFunction]",BP="[object Map]",LP="[object Number]",Zy="[object Object]",RP="[object RegExp]",VP="[object Set]",zP="[object String]",GP="[object Symbol]",kP="[object WeakMap]",FP="[object ArrayBuffer]",jP="[object DataView]",UP="[object Float32Array]",HP="[object Float64Array]",qP="[object Int8Array]",WP="[object Int16Array]",$P="[object Int32Array]",YP="[object Uint8Array]",XP="[object Uint8ClampedArray]",QP="[object Uint16Array]",KP="[object Uint32Array]",ot={};ot[Qy]=ot[MP]=ot[FP]=ot[jP]=ot[IP]=ot[NP]=ot[UP]=ot[HP]=ot[qP]=ot[WP]=ot[$P]=ot[BP]=ot[LP]=ot[Zy]=ot[RP]=ot[VP]=ot[zP]=ot[GP]=ot[YP]=ot[XP]=ot[QP]=ot[KP]=!0;ot[DP]=ot[Ky]=ot[kP]=!1;function gc(n,t,e,r,o,i){var a,s=t&OP,l=t&CP,u=t&TP;if(e&&(a=o?e(n,r,o,i):e(n)),a!==void 0)return a;if(!br(n))return n;var c=yt(n);if(c){if(a=Ly(n),!s)return xm(n,a)}else{var d=Lo(n),p=d==Ky||d==EP;if(Xn(n))return Py(n,s);if(d==Zy||d==Qy||p&&!o){if(a=l||p?{}:Uy(n),!s)return l?My(n,vy(a,n)):Ty(n,by(a,n))}else{if(!ot[d])return o?n:{};a=jy(n,d,s)}}i||(i=new Ki);var f=i.get(n);if(f)return f;i.set(n,a),Xy(n)?n.forEach(function(y){a.add(gc(y,t,e,y,n,i))}):Wy(n)&&n.forEach(function(y,g){a.set(g,gc(y,t,e,g,n,i))});var h=u?l?fc:zs:l?Hi:Ui,m=c?void 0:h(n);return Am(m||n,function(y,g){m&&(g=y,y=n[g]),zi(a,g,gc(y,t,e,g,n,i))}),a}var xc=gc;var ZP=1,JP=4;function eO(n){return xc(n,ZP|JP)}var Ro=eO;var tO="__lodash_hash_undefined__";function rO(n){return this.__data__.set(n,tO),this}var Jy=rO;function oO(n){return this.__data__.has(n)}var eg=oO;function bc(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new Qn;++t<e;)this.add(n[t])}bc.prototype.add=bc.prototype.push=Jy;bc.prototype.has=eg;var tg=bc;function nO(n,t){for(var e=-1,r=n==null?0:n.length;++e<r;)if(t(n[e],e,n))return!0;return!1}var rg=nO;function iO(n,t){return n.has(t)}var og=iO;var aO=1,sO=2;function lO(n,t,e,r,o,i){var a=e&aO,s=n.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var u=i.get(n),c=i.get(t);if(u&&c)return u==t&&c==n;var d=-1,p=!0,f=e&sO?new tg:void 0;for(i.set(n,t),i.set(t,n);++d<s;){var h=n[d],m=t[d];if(r)var y=a?r(m,h,d,t,n,i):r(h,m,d,n,t,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!rg(t,function(g,b){if(!og(f,b)&&(h===g||o(h,g,e,r,i)))return f.push(b)})){p=!1;break}}else if(!(h===m||o(h,m,e,r,i))){p=!1;break}}return i.delete(n),i.delete(t),p}var vc=lO;function cO(n){var t=-1,e=Array(n.size);return n.forEach(function(r,o){e[++t]=[o,r]}),e}var ng=cO;function uO(n){var t=-1,e=Array(n.size);return n.forEach(function(r){e[++t]=r}),e}var ig=uO;var dO=1,pO=2,fO="[object Boolean]",hO="[object Date]",mO="[object Error]",yO="[object Map]",gO="[object Number]",xO="[object RegExp]",bO="[object Set]",vO="[object String]",SO="[object Symbol]",wO="[object ArrayBuffer]",AO="[object DataView]",ag=Lt?Lt.prototype:void 0,$d=ag?ag.valueOf:void 0;function _O(n,t,e,r,o,i,a){switch(e){case AO:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case wO:return!(n.byteLength!=t.byteLength||!i(new Ji(n),new Ji(t)));case fO:case hO:case gO:return Vi(+n,+t);case mO:return n.name==t.name&&n.message==t.message;case xO:case vO:return n==t+"";case yO:var s=ng;case bO:var l=r&dO;if(s||(s=ig),n.size!=t.size&&!l)return!1;var u=a.get(n);if(u)return u==t;r|=pO,a.set(n,t);var c=vc(s(n),s(t),r,o,i,a);return a.delete(n),c;case SO:if($d)return $d.call(n)==$d.call(t)}return!1}var sg=_O;var PO=1,OO=Object.prototype,CO=OO.hasOwnProperty;function TO(n,t,e,r,o,i){var a=e&PO,s=zs(n),l=s.length,u=zs(t),c=u.length;if(l!=c&&!a)return!1;for(var d=l;d--;){var p=s[d];if(!(a?p in t:CO.call(t,p)))return!1}var f=i.get(n),h=i.get(t);if(f&&h)return f==t&&h==n;var m=!0;i.set(n,t),i.set(t,n);for(var y=a;++d<l;){p=s[d];var g=n[p],b=t[p];if(r)var w=a?r(b,g,p,t,n,i):r(g,b,p,n,t,i);if(!(w===void 0?g===b||o(g,b,e,r,i):w)){m=!1;break}y||(y=p=="constructor")}if(m&&!y){var _=n.constructor,S=t.constructor;_!=S&&"constructor"in n&&"constructor"in t&&!(typeof _=="function"&&_ instanceof _&&typeof S=="function"&&S instanceof S)&&(m=!1)}return i.delete(n),i.delete(t),m}var lg=TO;var MO=1,cg="[object Arguments]",ug="[object Array]",Sc="[object Object]",IO=Object.prototype,dg=IO.hasOwnProperty;function NO(n,t,e,r,o,i){var a=yt(n),s=yt(t),l=a?ug:Lo(n),u=s?ug:Lo(t);l=l==cg?Sc:l,u=u==cg?Sc:u;var c=l==Sc,d=u==Sc,p=l==u;if(p&&Xn(n)){if(!Xn(t))return!1;a=!0,c=!1}if(p&&!c)return i||(i=new Ki),a||ic(n)?vc(n,t,e,r,o,i):sg(n,t,l,e,r,o,i);if(!(e&MO)){var f=c&&dg.call(n,"__wrapped__"),h=d&&dg.call(t,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?t.value():t;return i||(i=new Ki),o(m,y,e,r,i)}}return p?(i||(i=new Ki),lg(n,t,e,r,o,i)):!1}var pg=NO;function fg(n,t,e,r,o){return n===t?!0:n==null||t==null||!Ht(n)&&!Ht(t)?n!==n&&t!==t:pg(n,t,e,r,fg,o)}var hg=fg;function DO(n,t){return n!=null&&t in Object(n)}var mg=DO;function EO(n,t,e){t=Cr(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var a=dn(t[r]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&Gi(o)&&Ri(a,o)&&(yt(n)||Fi(n)))}var yg=EO;function BO(n,t){return n!=null&&yg(n,t,mg)}var gg=BO;function LO(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var xg=LO;function RO(n,t){return t.length<2?n:lc(n,fy(t,0,-1))}var bg=RO;function VO(n,t){return hg(n,t)}var Yd=VO;function zO(n,t){return t=Cr(t,n),n=bg(n,t),n==null||delete n[dn(xg(t))]}var vg=zO;function GO(n){return py(n)?void 0:n}var Sg=GO;var kO=1,FO=2,jO=4,UO=cc(function(n,t){var e={};if(n==null)return e;var r=!1;t=Jl(t,function(i){return i=Cr(i,n),r||(r=i.length>1),i}),no(n,fc(n),e),r&&(e=xc(e,kO|FO|jO,Sg));for(var o=t.length;o--;)vg(e,t[o]);return e}),ta=UO;function HO(n,t,e,r){if(!br(n))return n;t=Cr(t,n);for(var o=-1,i=t.length,a=i-1,s=n;s!=null&&++o<i;){var l=dn(t[o]),u=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var c=s[l];u=r?r(c,l,s):void 0,u===void 0&&(u=br(c)?c:Ri(t[o+1])?[]:{})}zi(s,l,u),s=s[l]}return n}var wg=HO;function qO(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],s=lc(n,a);e(s,a)&&wg(i,Cr(a,n),s)}return i}var Ag=qO;function WO(n,t){return Ag(n,t,function(e,r){return gg(n,r)})}var _g=WO;var $O=cc(function(n,t){return n==null?{}:_g(n,t)}),Fr=$O;var xe=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,xe.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:a}=t,s={...e,[i]:a};return Object.setPrototypeOf(s,xe.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,xe.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function Gs(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&Gs(r)}return Object.freeze(n)}function Pg(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var ra=class extends Error{};function wc(n){let t={...n};return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function io(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(a)}return r}function oa(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Og(){return typeof process<"u"}function Cg(n,t){for(let e of n)t(e.id,e.data)!==!0&&Cg(e.children,t)}function Tg(n,t){if(t(n.id,n.data)!==!0)for(let e of n.children)Tg(e,t)}var Je=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Je.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Gs(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Tg(o,r)}}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,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(i,a)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(c=>c.id===l);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:s}}Object.setPrototypeOf(i,Je.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:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,u=this.childrenArray(l),c={fi:o,id:i,data:a,children:s};return u=[...u,c],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(c),{data:this.modifyArrayBy(l,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(u=>u.id===r);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:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new ra("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),u=l.findIndex(f=>f.id===i);l=[...l];let c=l.splice(u,1)[0],d=this.modifyArrayBy(a,l);a=r,l=d.childrenArray(a);let p=c.fi;return c={...c,fi:o},l=[...l,c],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(c),d=d.modifyArrayBy(a,l),{data:d,actual:e,reverse:{type:9,parent:s,fi:p,id:i}}}previous(e,r){if(r===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===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Pg(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),a=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return io(0,o,o);{let a=i[0].fi;return io(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return io(l,l+o,o)}else return io(a.fi,s.fi,o)}}};var na;(t=>{function n(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let u=parseInt(l);if(isNaN(u))throw new Error("wrong index");i[l]=a[u],a[u]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let u=o[l];u===void 0?delete a[l]:a[l]=u,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(na||(na={}));var Se=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Se.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Gs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Se.prototype);let r=e;return Og()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:i}=e,a=this,s={fi:r,id:o,data:i};return a=[...a,s],a.sort((u,c)=>u.fi-c.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(l=>l.id===r);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:r,id:o}=e,i=this;i=[...i];let a=i.findIndex(c=>c.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:r};return i[a]=l,i.sort((c,d)=>c.fi-d.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 r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return io(0,r,r);{let i=o[0].fi;return io(i-r,i,r)}}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 io(s,s+r,r)}else return io(i.fi,a.fi,r)}}};function ia(n){return n&&typeof n=="object"&&n instanceof et}var et=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!ia(r))return null;o+=1}r=r?wc(r):new et;for(let[l,u]of Object.entries(t.props)){let c=r[l];i[l]=c,u===void 0?delete r[l]:r[l]=u}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=wc(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let u=wc(l);u[t.path[o-1]]=r,r=u}else{let u=new et;u[t.path[o-1]]=r,r=u}}o-=1}let a=Object.setPrototypeOf(r,et.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},ao;(r=>{function n(o,i){return ks(o,i)??o}r.apply=n;function t(o,i){return Qd(o,i)}r.merge=t;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=lt.zoomOnce(l,s[a]),l===void 0)return i;if(!ia(l))return;a+=1}if(l===void 0)return i;if(!!ia(l))if(i.type===0){let u={...i.props};for(let c of Object.keys(l))delete u[c];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=Xd([i],l);return u?(console.log(u),u):i}else return i}r.filterOp=e})(ao||(ao={}));function Xd(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=ks(o.data,t[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Xd(o.children,t);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 r}function YO(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=ks(o.data,t[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function ks(n,t){if(!ia(t))return t;if(n instanceof Je){let e=Xd(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof Se)return YO(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let a=ks(o,t[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else{if(n instanceof et)return Qd(n,t);if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let a=ks(i,t[o]);r=r||a!==void 0,a===void 0&&(a=i),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Qd(n,t){if(n===void 0)return t;if(t===void 0)return n;if(!ia(t))return t;if(!ia(n))return ao.apply(n,t);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new et;for(let o of e){let i=Qd(n===void 0?void 0:n[o],t===void 0?void 0:t[o]);r[o]=i}return r}function Mg(n,t){let e={cur:[],result:[],len:0};return n=Fs(n,t,e)??n,[n,e.result]}function Ac(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function _c(n){n&&(n.len-=1)}function XO(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Ig(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Fs(i.data,t,Ac(e,a));_c(e),r=r||l!==void 0,l===void 0&&(l=i.data);let u=Ig(i.children,t,e);return u!==void 0?r=!0:u=i.children,{...i,id:a,data:l,children:u}});if(r)return o}function QO(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Fs(i.data,t,Ac(e,a));return _c(e),r=r||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Fs(n,t,e){if(n instanceof Je){let r=Ig(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof Se)return QO(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,a)=>{let s=Fs(i,t,Ac(e,a));return _c(e),r=r||s!==void 0,s===void 0&&(s=i),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!oa(n)){let r={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=t[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=Fs(a,t,Ac(e,i));_c(e),o=o||l!==void 0,l===void 0&&(l=a),r[i]=l}else r[i]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(typeof n=="string"){let r=t[n];return r!==void 0&&XO(e),r}else return}}var aa;(t=>{function n(e,r){let o=lt.zoom(r,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:{}}}t.replaceProps=n})(aa||(aa={}));var ct;(s=>{function n(l,u){return{...l,path:l.path.slice(u)}}s.drop=n;function t(l,u){return e(l,u)?.data??l}s.applySimple=t;function e(l,u){let c=u.path;for(var d=[];;){let p;if(l instanceof et&&u.type===0&&(p=l.runOp({...u,path:c.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===c.length&&(l instanceof Je||l instanceof Se||l instanceof xe?p=l.runOp(u):p=na.runOp(l,u)),p!==void 0)if(p!==null){let m=p.data;for(let y=d.length-1;y>=0;y--){let g=c[y],b=d[y];if(b instanceof Je){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof Se){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof xe){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof et){let w={...b,[g]:m};m=Object.setPrototypeOf(w,et.prototype)}else if(typeof b=="object")if(Array.isArray(b)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let w=m;m=[...b],m[g]=w}else m={...b,[g]:m};else return null}return{data:m,actual:{...p.actual,path:c},reverse:{...p.reverse,path:c}}}else return null;let f=c[d.length],h;if(l instanceof Je){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof Se){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)d.push(l),l=h;else return null}}s.apply=e;function r(l,u){for(let c=0;c<l.length&&c<u.length;c++)if(l[c]!==u[c])return!0;return!1}s.pathDisjoint=r;function o(l,u){if(l.length!==u.length)return!1;for(let c=0;c<l.length;c++)if(l[c]!==u[c])return!1;return!0}s.pathEq=o;function i(l,u){return r(l.path,u.path)}s.commutative=i;function a(l,u){return l.type===0&&u.type===0&&o(l.path,u.path)?Object.keys(l.props).every(c=>u.props[c]!==void 0):!1}s.subsumed=a})(ct||(ct={}));var js;(l=>{function n(){return[]}l.empty=n;function t(u,c){let d=[];for(let p of u){let[f,...h]=p.path;f===c&&d.push({...p,path:h})}return d}l.removePrefix=t;function e(u,c){return u.map(d=>({...d,path:[c,...d.path]}))}l.addPrefix=e;function r(u,c){return[...u,...c]}l.concat=r;function o(u,c){return[...u.filter(p=>!c.some(f=>ct.subsumed(p,f))),...c]}l.compress=o;function i(u,c){return u.every(d=>c.every(p=>ct.commutative(d,p)))}l.commutative=i;function a(u,c){for(let d of c){let p=s(u,d);p!==null&&(u=p.data)}return u}l.applyAll=a;function s(u,c){var d=u;let p=[],f=[];for(let h of c)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,g;if(h.type===3?(m=lt.zoom(d,[...h.path,h.id]),g=ct.apply(d,{...h,type:2})):(m=lt.zoom(d,[...h.path,h.id,"value"]),g=ct.apply(d,h)),g!==null){d=g.data;let[b,w]=Mg(d,{[h.id]:m});d=b;for(let _=0;_<w.length;_++){let S=w[_],P=S.pop();if(typeof P=="number"){let O=[P];for(let D=_+1;D<w.length;D++){let N=w[D],T=N[N.length-1];if(typeof T=="number"&<.equal(S,N.slice(0,N.length-1)))O.push(T),w.splice(D,1);else break}let x=lt.zoom(d,S);y=x.map((D,N)=>O.includes(N)?h.id:D),m=x,P=S.pop()}else{if(P==="alphaOverride"||P==="alpha"){m/=100;let O=m,x=lt.zoom(d,S.slice(0,S.length-2)),D=x.layers.map(N=>N.id===S[S.length-1]?{...N,data:{...N.data,[P]:O}}:N);Object.setPrototypeOf(D,Object.getPrototypeOf(x.layers)),x.layers=D}y=h.id}p.push({type:0,path:S,props:{[P]:m}}),f.push({type:0,path:S,props:{[P]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let m=ct.apply(d,h);m!==null&&(p.push(m.actual),d=m.data,f.push(m.reverse))}}catch(m){if(m instanceof ra)return null;throw m}return{data:d,actual:p,reverse:f.reverse()}}l.apply=s})(js||(js={}));var Ng=Symbol(),KO=Symbol(),Oc=Symbol(),Zn=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof Pc);){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,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Oc];r&&r(),delete this._children[t]}}}},Zd=class extends Zn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,na.runOp(this._current,t),t.path)}},Jd=class extends Zn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,xe.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Dg={get(n,t){if(t===Oc)return()=>{n._parent=null};if(t===Ng)return n._current;if(t===KO)return n;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],a=Cc(n,t,i);return a!==i?(r===void 0&&(r={},n._children=r),r[t]=a,a):i},has(n,t){return t 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,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},ZO={...Dg,set(n,t,e){let r={type:0,props:{[t]:ut(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},JO={...Dg,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},sa=class extends Zn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Oc]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=Cc(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},la=class extends Zn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Oc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id,i=this._current[r].fi;t(this.data(this._current[r].id),o,i)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=Cc(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Kd(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&<.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var Pc=class extends Zn{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Kd(this.ts,e,t),Kd(this.actual,r,t),Kd(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Cc(n,t,e){return e instanceof Je?new sa(n,t,e):e instanceof Se?new la(n,t,e):e instanceof xe?new Proxy(new Jd(n,t,e),JO):e!==null&&typeof e=="object"?oa(e)?e:new Proxy(new Zd(n,t,e),ZO):e}function ep(n){let t=new Pc(n);return[Cc(t,"",n),t]}function pn(n,t){let[e,r]=ep(n);return t(e),r.result()}function ut(n){return n instanceof sa||n instanceof la?n._current:n!==null&&typeof n=="object"?n[Ng]:n}var lt;(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 t(i,a,s){let l=r(s,i);if(l!==void 0&&typeof l=="object"&&l!==null){let u={...a};return Object.keys(l).forEach(c=>{delete u[c]}),u}else return a}o.removeOverridden=t;function e(i,a){if((i instanceof Je||i instanceof sa)&&typeof a=="string")return i.data(a);if((i instanceof Se||i instanceof la)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function r(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=r})(lt||(lt={}));function Eg(n,t){let e=[];if(t.length===n.length)for(var r=0;r<n.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}function Le(n,t){let e=[];if(t.length<=n.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}var Tc=class{},Us=class extends Tc{constructor(e){super();this.id=e}},Hs=class extends Tc{constructor(e){super();this.data=e}};var rp;try{rp=new TextDecoder}catch{}var de,hn,G=0;var Fg=[],op=Fg,np=0,cr={},We,fn,Tr=0,so=0,vr,Vo,or=[],Ye,Bg={useRecords:!1,mapsAsObjects:!0},qs=class{},ap=new qs;ap.name="MessagePack 0xC1";var ca=!1,lo=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(de)return Wg(()=>(Ic(),this?this.unpack(t,e):lo.prototype.unpack.call(Bg,t,e)));hn=e>-1?e:t.length,G=0,np=0,so=0,fn=null,op=Fg,vr=null,de=t;try{Ye=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw de=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof lo){if(cr=this,this.structures)return We=this.structures,Mc();(!We||We.length>0)&&(We=[])}else cr=Bg,(!We||We.length>0)&&(We=[]);return Mc()}unpackMultiple(t,e){let r,o=0;try{ca=!0;let i=t.length,a=this?this.unpack(t,i):Ec.unpack(t,i);if(e){for(e(a);G<i;)if(o=G,e(Mc())===!1)return}else{for(r=[a];G<i;)o=G,r.push(Mc());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{ca=!1,Ic()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Mc(){try{if(!cr.trusted&&!ca){let t=We.sharedLength||0;t<We.length&&(We.length=t)}let n=gt();if(G==hn)We.restoreStructures&&Lg(),We=null,de=null,Vo&&(Vo=null);else if(G>hn){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!ca)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw We.restoreStructures&&Lg(),Ic(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Lg(){for(let n in We.restoreStructures)We[n]=We.restoreStructures[n];We.restoreStructures=null}function gt(){let n=de[G++];if(n<160)if(n<128){if(n<64)return n;{let t=We[n&63]||cr.getStructures&&jg()[n&63];return t?(t.read||(t.read=sp(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,cr.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Hg()]=gt();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(gt(),gt());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=gt();return t}else if(n<192){let t=n-160;if(so>=G)return fn.slice(G-Tr,(G+=t)-Tr);if(so==0&&hn<140){let e=t<16?lp(t):Ug(t);if(e!=null)return e}return ip(t)}else{let t;switch(n){case 192:return null;case 193:return vr?(t=gt(),t>0?vr[1].slice(vr.position1,vr.position1+=t):vr[0].slice(vr.position0,vr.position0-=t)):ap;case 194:return!1;case 195:return!0;case 196:return tp(de[G++]);case 197:return t=Ye.getUint16(G),G+=2,tp(t);case 198:return t=Ye.getUint32(G),G+=4,tp(t);case 199:return Jn(de[G++]);case 200:return t=Ye.getUint16(G),G+=2,Jn(t);case 201:return t=Ye.getUint32(G),G+=4,Jn(t);case 202:if(t=Ye.getFloat32(G),cr.useFloat32>2){let e=Dc[(de[G]&127)<<1|de[G+1]>>7];return G+=4,(e*t+(t>0?.5:-.5)>>0)/e}return G+=4,t;case 203:return t=Ye.getFloat64(G),G+=8,t;case 204:return de[G++];case 205:return t=Ye.getUint16(G),G+=2,t;case 206:return t=Ye.getUint32(G),G+=4,t;case 207:return cr.int64AsNumber?(t=Ye.getUint32(G)*4294967296,t+=Ye.getUint32(G+4)):t=Ye.getBigUint64(G),G+=8,t;case 208:return Ye.getInt8(G++);case 209:return t=Ye.getInt16(G),G+=2,t;case 210:return t=Ye.getInt32(G),G+=4,t;case 211:return cr.int64AsNumber?(t=Ye.getInt32(G)*4294967296,t+=Ye.getUint32(G+4)):t=Ye.getBigInt64(G),G+=8,t;case 212:if(t=de[G++],t==114)return kg(de[G++]&63);{let e=or[t];if(e)return e.read?(G++,e.read(gt())):e.noBuffer?(G++,e()):e(de.subarray(G,++G));throw new Error("Unknown extension "+t)}case 213:return t=de[G],t==114?(G++,kg(de[G++]&63,de[G++])):Jn(2);case 214:return Jn(4);case 215:return Jn(8);case 216:return Jn(16);case 217:return t=de[G++],so>=G?fn.slice(G-Tr,(G+=t)-Tr):tC(t);case 218:return t=Ye.getUint16(G),G+=2,so>=G?fn.slice(G-Tr,(G+=t)-Tr):rC(t);case 219:return t=Ye.getUint32(G),G+=4,so>=G?fn.slice(G-Tr,(G+=t)-Tr):oC(t);case 220:return t=Ye.getUint16(G),G+=2,Vg(t);case 221:return t=Ye.getUint32(G),G+=4,Vg(t);case 222:return t=Ye.getUint16(G),G+=2,zg(t);case 223:return t=Ye.getUint32(G),G+=4,zg(t);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 eC=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function sp(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>eC.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(gt);return n.highByte===0&&(n.read=Rg(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let a=n[o];r[a]=gt()}return r}return e.count=0,n.highByte===0?Rg(t,e):e}var Rg=(n,t)=>function(){let e=de[G++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=We[r]||jg()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=sp(o,n)),o.read()};function jg(){let n=Wg(()=>(de=null,cr.getStructures()));return We=cr._mergeStructures(n,We)}var ip=Nc,tC=Nc,rC=Nc,oC=Nc;function Nc(n){let t;if(n<16&&(t=lp(n)))return t;if(n>64&&rp)return rp.decode(de.subarray(G,G+=n));let e=G+n,r=[];for(t="";G<e;){let o=de[G++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=de[G++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=de[G++]&63,a=de[G++]&63;r.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[G++]&63,a=de[G++]&63,s=de[G++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Rt.apply(String,r),r.length=0)}return r.length>0&&(t+=Rt.apply(String,r)),t}function Vg(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=gt();return t}function zg(n){if(cr.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Hg()]=gt();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(gt(),gt());return t}}var Rt=String.fromCharCode;function Ug(n){let t=G,e=new Array(n);for(let r=0;r<n;r++){let o=de[G++];if((o&128)>0){G=t;return}e[r]=o}return Rt.apply(String,e)}function lp(n){if(n<4)if(n<2){if(n===0)return"";{let t=de[G++];if((t&128)>1){G-=1;return}return Rt(t)}}else{let t=de[G++],e=de[G++];if((t&128)>0||(e&128)>0){G-=2;return}if(n<3)return Rt(t,e);let r=de[G++];if((r&128)>0){G-=3;return}return Rt(t,e,r)}else{let t=de[G++],e=de[G++],r=de[G++],o=de[G++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){G-=4;return}if(n<6){if(n===4)return Rt(t,e,r,o);{let i=de[G++];if((i&128)>0){G-=5;return}return Rt(t,e,r,o,i)}}else if(n<8){let i=de[G++],a=de[G++];if((i&128)>0||(a&128)>0){G-=6;return}if(n<7)return Rt(t,e,r,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return Rt(t,e,r,o,i,a,s)}else{let i=de[G++],a=de[G++],s=de[G++],l=de[G++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(n<10){if(n===8)return Rt(t,e,r,o,i,a,s,l);{let u=de[G++];if((u&128)>0){G-=9;return}return Rt(t,e,r,o,i,a,s,l,u)}}else if(n<12){let u=de[G++],c=de[G++];if((u&128)>0||(c&128)>0){G-=10;return}if(n<11)return Rt(t,e,r,o,i,a,s,l,u,c);let d=de[G++];if((d&128)>0){G-=11;return}return Rt(t,e,r,o,i,a,s,l,u,c,d)}else{let u=de[G++],c=de[G++],d=de[G++],p=de[G++];if((u&128)>0||(c&128)>0||(d&128)>0||(p&128)>0){G-=12;return}if(n<14){if(n===12)return Rt(t,e,r,o,i,a,s,l,u,c,d,p);{let f=de[G++];if((f&128)>0){G-=13;return}return Rt(t,e,r,o,i,a,s,l,u,c,d,p,f)}}else{let f=de[G++],h=de[G++];if((f&128)>0||(h&128)>0){G-=14;return}if(n<15)return Rt(t,e,r,o,i,a,s,l,u,c,d,p,f,h);let m=de[G++];if((m&128)>0){G-=15;return}return Rt(t,e,r,o,i,a,s,l,u,c,d,p,f,h,m)}}}}}function tp(n){return cr.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function Jn(n){let t=de[G++];if(or[t])return or[t](de.subarray(G,G+=n));throw new Error("Unknown extension type "+t)}var Gg=new Array(4096);function Hg(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,so>=G)return fn.slice(G-Tr,(G+=n)-Tr);if(!(so==0&&hn<180))return ip(n)}else return G--,gt();let t=(n<<5^(n>1?Ye.getUint16(G):n>0?de[G]:0))&4095,e=Gg[t],r=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ye.getUint32(r),i!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=de[r++],i!=e[a++]){r=1879048192;break}if(r===o)return G=r,e.string;o-=3,r=G}for(e=[],Gg[t]=e,e.bytes=n;r<o;)i=Ye.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=de[r++],e.push(i);let s=n<16?lp(n):Ug(n);return s!=null?e.string=s:e.string=ip(n)}var kg=(n,t)=>{var e=gt();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=We[n];return o&&o.isShared&&((We.restoreStructures||(We.restoreStructures=[]))[n]=o),We[n]=e,e.read=sp(e,r),e.read()},qg=typeof self=="object"?self:global;or[0]=()=>{};or[0].noBuffer=!0;or[101]=()=>{let n=gt();return(qg[n[0]]||Error)(n[1])};or[105]=n=>{let t=Ye.getUint32(G-4);Vo||(Vo=new Map);let e=de[G],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Vo.set(t,o);let i=gt();return o.used?Object.assign(r,i):(o.target=i,i)};or[112]=n=>{let t=Ye.getUint32(G-4),e=Vo.get(t);return e.used=!0,e.target};or[115]=()=>new Set(gt());var cp=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");or[116]=n=>{let t=n[0],e=cp[t];if(!e)throw new Error("Could not find typed array for code "+t);return new qg[e](Uint8Array.prototype.slice.call(n,1).buffer)};or[120]=()=>{let n=gt();return new RegExp(n[0],n[1])};or[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=G;G+=t-4,vr=[gt(),gt()],vr.position0=0,vr.position1=0;let r=G;G=e;try{return gt()}finally{G=r}};or[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function Wg(n){let t=hn,e=G,r=np,o=Tr,i=so,a=fn,s=op,l=Vo,u=vr,c=new Uint8Array(de.slice(0,hn)),d=We,p=We.slice(0,We.length),f=cr,h=ca,m=n();return hn=t,G=e,np=r,Tr=o,so=i,fn=a,op=s,Vo=l,vr=u,de=c,ca=h,We=d,We.splice(0,We.length,...p),cr=f,Ye=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function Ic(){de=null,Vo=null,We=null}function $g(n){n.unpack?or[n.type]=n.unpack:or[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 Ec=new lo({useRecords:!1}),nC=Ec.unpack,iC=Ec.unpackMultiple,aC=Ec.unpack,Bc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},sC=new Float32Array(1),SU=new Uint8Array(sC.buffer,0,4);var Lc;try{Lc=new TextEncoder}catch{}var Rc,dp,Vc=typeof Buffer<"u",up=Vc?Buffer.allocUnsafeSlow:Uint8Array,Kg=Vc?Buffer:Uint8Array,Yg=Vc?4294967296:2144337920,Z,vt,j=0,co,uo=null,lC=/[\u0080-\uFFFF]/,Ws=Symbol("record-id"),ei=class extends lo{constructor(t){super(t),this.offset=0;let e,r,o,i,a,s,l=0,u=Kg.prototype.utf8Write?function(x,D,N){return Z.utf8Write(x,D,N)}:Lc&&Lc.encodeInto?function(x,D){return Lc.encodeInto(x,Z.subarray(D)).written}:!1,c=this;t||(t={});let d=t&&t.sequential,p=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=p?32:64),d&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,g=f+h+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],w=0,_=0;this.pack=this.encode=function(x,D){if(Z||(Z=new up(8192),vt=new DataView(Z.buffer,0,8192),j=0),co=Z.length-10,co-j<2048?(Z=new up(Z.length),vt=new DataView(Z.buffer,0,Z.length),co=Z.length-10,j=0):j=j+7&2147483640,r=j,s=c.structuredClone?new Map:null,c.bundleStrings?(uo=["",""],Z[j++]=214,Z[j++]=98,uo.position=j-r,j+=4):uo=null,o=c.structures,o){o.uninitialized&&(o=c._mergeStructures(c.getStructures()));let N=o.sharedLength||0;if(N>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let T=0;T<N;T++){let I=o[T];if(!I)continue;let E,B=o.transitions;for(let R=0,k=I.length;R<k;R++){let V=I[R];E=B[V],E||(E=B[V]=Object.create(null)),B=E}B[Ws]=T+64}l=N}d||(o.nextId=N+64)}i&&(i=!1),a=o||[];try{if(S(x),uo){vt.setUint32(uo.position+r,j-uo.position-r);let N=uo;uo=null,S(N[0]),S(N[1])}if(c.offset=j,s&&s.idsToInsert){j+=s.idsToInsert.length*6,j>co&&O(j),c.offset=j;let N=uC(Z.subarray(r,j),s.idsToInsert);return s=null,N}return D&Jg?(Z.start=r,Z.end=j,Z):Z.subarray(r,j)}finally{if(o){if(_<10&&_++,w>1e4)o.transitions=null,_=0,w=0,b.length>0&&(b=[]);else if(b.length>0&&!d){for(let N=0,T=b.length;N<T;N++)b[N][Ws]=0;b=[]}if(i&&c.saveStructures){let N=o.sharedLength||f;o.length>N&&(o=o.slice(0,N));let T=Z.subarray(r,j);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(x)):(l=N,T)}}D&gC&&(j=r)}};let S=x=>{j>co&&(Z=O(j));var D=typeof x,N;if(D==="string"){let T=x.length;if(uo&&T>=8&&T<4096){let B=lC.test(x);uo[B?0:1]+=x,Z[j++]=193,S(B?-T:T);return}let I;T<32?I=1:T<256?I=2:T<65536?I=3:I=5;let E=T*3;if(j+E>co&&(Z=O(j+E)),T<64||!u){let B,R,k,V=j+I;for(B=0;B<T;B++)R=x.charCodeAt(B),R<128?Z[V++]=R:R<2048?(Z[V++]=R>>6|192,Z[V++]=R&63|128):(R&64512)===55296&&((k=x.charCodeAt(B+1))&64512)===56320?(R=65536+((R&1023)<<10)+(k&1023),B++,Z[V++]=R>>18|240,Z[V++]=R>>12&63|128,Z[V++]=R>>6&63|128,Z[V++]=R&63|128):(Z[V++]=R>>12|224,Z[V++]=R>>6&63|128,Z[V++]=R&63|128);N=V-j-I}else N=u(x,j+I,E);N<32?Z[j++]=160|N:N<256?(I<2&&Z.copyWithin(j+2,j+1,j+1+N),Z[j++]=217,Z[j++]=N):N<65536?(I<3&&Z.copyWithin(j+3,j+2,j+2+N),Z[j++]=218,Z[j++]=N>>8,Z[j++]=N&255):(I<5&&Z.copyWithin(j+5,j+3,j+3+N),Z[j++]=219,vt.setUint32(j,N),j+=4),j+=N}else if(D==="number")if(x>>>0===x)x<64?Z[j++]=x:x<256?(Z[j++]=204,Z[j++]=x):x<65536?(Z[j++]=205,Z[j++]=x>>8,Z[j++]=x&255):(Z[j++]=206,vt.setUint32(j,x),j+=4);else if(x>>0===x)x>=-32?Z[j++]=256+x:x>=-128?(Z[j++]=208,Z[j++]=x+256):x>=-32768?(Z[j++]=209,vt.setInt16(j,x),j+=2):(Z[j++]=210,vt.setInt32(j,x),j+=4);else{let T;if((T=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){Z[j++]=202,vt.setFloat32(j,x);let I;if(T<4||(I=x*Dc[(Z[j]&127)<<1|Z[j+1]>>7])>>0===I){j+=4;return}else j--}Z[j++]=203,vt.setFloat64(j,x),j+=8}else if(D==="object")if(!x)Z[j++]=192;else{if(s){let I=s.get(x);if(I){if(!I.id){let E=s.idsToInsert||(s.idsToInsert=[]);I.id=E.push(I)}Z[j++]=214,Z[j++]=112,vt.setUint32(j,I.id),j+=4;return}else s.set(x,{offset:j-r})}let T=x.constructor;if(T===Object)P(x,!0);else if(T===Array){N=x.length,N<16?Z[j++]=144|N:N<65536?(Z[j++]=220,Z[j++]=N>>8,Z[j++]=N&255):(Z[j++]=221,vt.setUint32(j,N),j+=4);for(let I=0;I<N;I++)S(x[I])}else if(T===Map){N=x.size,N<16?Z[j++]=128|N:N<65536?(Z[j++]=222,Z[j++]=N>>8,Z[j++]=N&255):(Z[j++]=223,vt.setUint32(j,N),j+=4);for(let[I,E]of x)S(I),S(E)}else{for(let I=0,E=Rc.length;I<E;I++){let B=dp[I];if(x instanceof B){let R=Rc[I];if(R.write){R.type&&(Z[j++]=212,Z[j++]=R.type,Z[j++]=0),S(R.write.call(this,x));return}let k=Z,V=vt,q=j;Z=null;let F;try{F=R.pack.call(this,x,U=>(Z=k,k=null,j+=U,j>co&&O(j),{target:Z,targetView:vt,position:j-U}),S)}finally{k&&(Z=k,vt=V,j=q,co=Z.length-10)}F&&(F.length+j>co&&O(F.length+j),j=cC(F,Z,j,R.type));return}}P(x,!x.hasOwnProperty)}}else if(D==="boolean")Z[j++]=x?195:194;else if(D==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))Z[j++]=211,vt.setBigInt64(j,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)Z[j++]=207,vt.setBigUint64(j,x);else if(this.largeBigIntToFloat)Z[j++]=203,vt.setFloat64(j,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");j+=8}else if(D==="undefined")this.encodeUndefinedAsNil?Z[j++]=192:(Z[j++]=212,Z[j++]=0,Z[j++]=0);else if(D==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},P=this.useRecords===!1?this.variableMapSize?x=>{let D=Object.keys(x),N=D.length;N<16?Z[j++]=128|N:N<65536?(Z[j++]=222,Z[j++]=N>>8,Z[j++]=N&255):(Z[j++]=223,vt.setUint32(j,N),j+=4);let T;for(let I=0;I<N;I++)S(T=D[I]),S(x[T])}:(x,D)=>{Z[j++]=222;let N=j-r;j+=2;let T=0;for(let I in x)(D||x.hasOwnProperty(I))&&(S(I),S(x[I]),T++);Z[N+++r]=T>>8,Z[N+r]=T&255}:x=>{let D=Object.keys(x),N,T=a.transitions||(a.transitions=Object.create(null)),I=0;for(let B=0,R=D.length;B<R;B++){let k=D[B];N=T[k],N||(N=T[k]=Object.create(null),I++),T=N}let E=T[Ws];if(E)E>=96&&m?(Z[j++]=((E-=96)&31)+96,Z[j++]=E>>5):Z[j++]=E;else{E=a.nextId,E||(E=64),E<y&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(E=a.nextOwnId,E<g||(E=y),a.nextOwnId=E+1):(E>=g&&(E=y),a.nextId=E+1);let B=D.highByte=E>=96&&m?E-96>>5:-1;T[Ws]=E,a[E-64]=D,E<y?(D.isShared=!0,a.sharedLength=E-63,i=!0,B>=0?(Z[j++]=(E&31)+96,Z[j++]=B):Z[j++]=E):(B>=0?(Z[j++]=213,Z[j++]=114,Z[j++]=(E&31)+96,Z[j++]=B):(Z[j++]=212,Z[j++]=114,Z[j++]=E),I&&(w+=_*I),b.length>=h&&(b.shift()[Ws]=0),b.push(T),S(D))}for(let B=0,R=D.length;B<R;B++)S(x[D[B]])},O=x=>{let D;if(x>16777216){if(x-r>Yg)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min(Yg,Math.round(Math.max((x-r)*(x>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(x-r<<2,Z.length-1)>>12)+1<<12;let N=new up(D);return vt=new DataView(N.buffer,0,D),Z.copy?Z.copy(N,0,r,x):N.set(Z.slice(r,x)),j-=r,r=0,co=N.length-10,Z=N}}useBuffer(t){Z=t,vt=new DataView(Z.buffer,Z.byteOffset,Z.byteLength),j=0}};dp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,qs];Rc=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:a}=t(6);o[a++]=214,o[a++]=255,i.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:a}=t(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?Xg(n,16,t):Qg(Vc?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==Kg&&this.structuredClone?Xg(n,cp.indexOf(e.name),t):Qg(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function Xg(n,t,e,r){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++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function Qg(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function cC(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function uC(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,a)=>i.offset>a.offset?1:-1);e=t.pop();){let i=e.offset,a=e.id;n.copyWithin(i+r,i,o),r-=6;let s=i+r;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 mn(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)");dp.unshift(n.Class),Rc.unshift(n)}$g(n)}var Zg=new ei({useRecords:!1}),dC=Zg.pack,pC=Zg.pack;var{NEVER:fC,ALWAYS:hC,DECIMAL_ROUND:mC,DECIMAL_FIT:yC}=Bc,Jg=512,gC=1024;var e0=new ei({structuredClone:!0});mn({Class:xe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,xe.prototype),n}});mn({Class:Se.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Se.prototype),n}});mn({Class:Je.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Je.prototype),n}});mn({Class:Us.prototype.constructor,type:4,write(n){return n.id},read(n){return new Us(n)}});mn({Class:Hs.prototype.constructor,type:5,write(n){return n.data},read(n){return new Hs(n)}});mn({Class:et.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,et.prototype),n}});function xC(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function pp(n){if(oa(n))return n;if(Array.isArray(n))return n.map(pp);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=pp(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var zc;(r=>{function n(o){return e0.pack(o)}r.serialize=n;function t(o){return e0.unpack(o)}r.deserialize=t;function e(o){return xC(n(pp(o))).toString()}r.checksum=e})(zc||(zc={}));var xn="personal camera",bn="a218fcc3-276b-49b9-b485-49037fd14f5f",i0=2960946,St=5526619;var $s;(d=>{function n(p,f){return p[0]===f[0]&&p[1]===f[1]}d.isEqual=n;function t(p,f,h){return[p[0]+(f[0]-p[0])*h,p[1]+(f[1]-p[1])*h]}d.lerp=t;function e(p,f){return[p[0]+f[0],p[1]+f[1]]}d.add=e;function r(p,f){return[p[0]-f[0],p[1]-f[1]]}d.sub=r;function o(p,f){return Math.pow(f[0]-p[0],2)+Math.pow(f[1]-p[1],2)}d.distanceSquared=o;function i(p,f){return Math.sqrt(o(p,f))}d.distance=i;function a(p,f){return p[0]*f[0]+p[1]*f[1]}d.dot=a;function s(p,f){return[p[0]*f,p[1]*f]}d.scalarMultiply=s;function l(p,f,h){let m=d.sub(f,p),y=d.sub(h,p),g=d.dot(m,y)/d.dot(m,m),b=d.scalarMultiply(m,g);return d.add(p,b)}d.projectionOnto=l;function u(p,f,h){return i(p,l(p,f,h))}d.projectionOntoDistance=u;function c(p,f){return[(p[0]+f[0])*.5,(p[1]+f[1])*.5]}d.center=c})($s||($s={}));var yn;(s=>{function n(l,u){return l[0]===u[0]&&l[1]===u[1]&&l[2]===u[2]}s.isEqual=n;function t(l,u){return[l[0]+u[0],l[1]+u[1],l[2]+u[2]]}s.add=t;function e(l,u){return[l[0]-u[0],l[1]-u[1],l[2]-u[2]]}s.sub=e;function r(l,u){return[l[0]/u[0],l[1]/u[1],l[2]/u[2]]}s.div=r;function o(l,u){return[l[0]*u[0],l[1]*u[1],l[2]*u[2]]}s.mul=o;function i(l,u){return Math.hypot(l[0]-u[0],l[1]-u[1],l[2]-u[2])}s.dist=i;function a(l,u,c){return[l[0]+(u[0]-l[0])*c,l[1]+(u[1]-l[1])*c,l[2]+(u[2]-l[2])*c]}s.lerp=a})(yn||(yn={}));var t0;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(t0||(t0={}));var gn;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,a){let s=a.slice(0);for(var l=0,u=a.length;l<u;l+=3){let c=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])/c,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/c,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/c}return s}o.applyMatrix4=r})(gn||(gn={}));var Vt;(c=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}c.isRGB=n,c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.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}}c.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}c.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}c.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}c.toHex=s;function l(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}c.equals=l;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}c.lerp=u})(Vt||(Vt={}));var Ie;(l=>{l.white={...Vt.white,a:1},l.transparent={...Vt.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}l.from0to1=e;function r(u,c){return{...Vt.fromHex(u),a:c}}l.fromHexAndA=r;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}}l.toRgb255a1=o;function i(u,c){return Vt.equals(u,c)&&u.a===c.a}l.equals=i;function a(u,c,d){return{r:u.r+(c.r-u.r)*d,g:u.g+(c.g-u.g)*d,b:u.b+(c.b-u.b)*d,a:u.a+(c.a-u.a)*d}}l.lerp=a;function s({r:u,g:c,b:d,a:p}=l.white){return`rgba(${u*255}, ${c*255}, ${d*255}, ${p})`}l.toStyle=s})(Ie||(Ie={}));var Gc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Gc||(Gc={}));var r0;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(r0||(r0={}));var o0;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(o0||(o0={}));var n0;(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]))(n0||(n0={}));function fp(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var jr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(jr||(jr={}));var vn;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(vn||(vn={}));var po;(e=>{function n(r,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(r[0],r[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:[r[0]+r[0]*o,0,0]},grid:{count:[2,2,2],size:r.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 t(r,o){let i={...r};if(bC.forEach(a=>{Object.assign(i,{[a]:o[a]??r[a]})}),i.radial={...r.radial},o.radial){let a=r.radial,s=o.radial;vC.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...r.linear},o.linear){let a=r.linear,s=o.linear;SC.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...r.grid},o.grid){let a=r.grid,s=o.grid;wC.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...r.toObject},o.toObject){let a=r.toObject,s=o.toObject;AC.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...r.randomnessObject},o.randomnessObject){let a=r.randomnessObject,s=o.randomnessObject;_C.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=t})(po||(po={}));var kc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["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 t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}r.toOps=e})(kc||(kc={}));var bC=["count"],vC=["radius","start","end","position","scale","rotation"],SC=["position","scale","rotation"],wC=["count","size"],AC=["count","position","scale","rotation"],_C=["strength","scale","rotation","position","movement","seed","freqScale"];var Fc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Fc||(Fc={}));var jc;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Ie.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(jc||(jc={}));var ua;(r=>(r.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},r.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},r.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:r.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeLoopDelayStart:"end",emitTimeDuration:1,...r.defaultCollisionData}))(ua||(ua={}));var Sn;(t=>t.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(Sn||(Sn={}));var hp;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(hp||(hp={}));var mp;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(mp||(mp={}));var Uc;(t=>t.defaultData={...mp.defaultData,...hp.defaultData})(Uc||(Uc={}));var a0;(t=>{function n(e,r){let o=[];if("material"in e){let i=typeof e.material=="string"?r.materials[e.material]??r.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"?r.materials[i]??r.lib.materials[i]?.asset:i;a&&o.push(a)}return o}t.getMaterialData=n})(a0||(a0={}));var da;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(da||(da={}));var s0;(t=>{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"}t.is=n})(s0||(s0={}));function c0(n){return n.type!=="displace"}var l0;(t=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=n})(l0||(l0={}));var u0=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],d0=["wrapping","image","video","name","minFilter"],Pt;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let u=i.texture;u&&Object.assign(u,s)}}o.patch=n;function t(i,a){return i==="light"&&a?e(a):r(i)}o.defaultData=t;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 r(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],minFilter:1008},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:da.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],minFilter:1008},crop:!1};case"color":return{...a,type:"color",color:Vt.fromHex(St)};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:{...Vt.fromHex(6710886),a:1},colorB:{...Vt.fromHex(6710886),a:1},colorC:{...Vt.fromHex(16777215),a:1},colorD:{...Vt.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],minFilter:1008}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Vt.fromHex(0),a:1},colorB:{...Vt.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}}}})(Pt||(Pt={}));var qt;(u=>{function n(c){return!c.layers.some(p=>p.data.type==="texture"&&p.data.projection!==0||p.data.type==="depth"&&!p.data.isWorldSpace||p.data.type==="noise"||p.data.type==="displace")}u.isMergable=n;function t(c){let d="";return c.layers.forEach(p=>{Object.entries(p.data).forEach(([f,h])=>{d+=`${f}${h}`,Array.isArray(h)?h.forEach(m=>d+=`${m}`):typeof h=="object"?Object.values(h).forEach(m=>{typeof m=="number"?d+=`${m.toFixed(4)}`:d+=`${m}`}):d+=`${h}`})}),d}u.getHash=t;function e(){return{layers:new Se}}u.defaultEmptyData=e;function r(c="layer1",d="layer2"){return i("phong",c,d)}u.defaultData=r;function o(c,d){return{...c,name:d}}u.withName=o;function i(c,d="layer1",p="layer2"){let f=new Se;return f.push({fi:0,data:Pt.defaultData("light",c),id:d}),f.push({fi:1,data:Pt.defaultData("color"),id:p}),{layers:f}}u.defaultTwoLayerData=i;function a(c){let d=Pt.defaultData("texture");c&&Object.assign(d.texture,{image:c});let p=new Se;return p.push({fi:0,data:d,id:"layer1"}),p.push({fi:1,data:{...Pt.defaultData("transmission"),alpha:1},id:"layer2"}),p.push({fi:2,data:{...Pt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:p}}u.defaultUIObjectMaterial=a;function s(c,d="phong",p="layer1",f="layer2"){let h=Pt.defaultData("texture");Object.assign(h.texture,{image:c});let m=new Se;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:Pt.defaultData("light",d),id:f}),{layers:m}}u.defaultTwoLayerTextureData=s;function l(c,d="phong",p="layer1",f="layer2"){let h=Pt.defaultData("video");Object.assign(h.texture,{video:c});let m=new Se;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:Pt.defaultData("light",d),id:f}),{layers:m}}u.defaultTwoLayerVideoTextureData=l})(qt||(qt={}));var pa;(t=>{function n(){return{points:new Se,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(pa||(pa={}));var fa;(t=>{function n(){return{points:new Se,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=n})(fa||(fa={}));var yp={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Hc;(t=>{function n(e,r){let o={...e};return PC.forEach(i=>{Object.assign(o,{[i]:r[i]??e[i]})}),o}t.merge=n})(Hc||(Hc={}));var qc={shape:yp,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},PC=["depth","offset","angle","twist","startScale","endScale"];var Ys;(e=>{function n(r){return r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"||r==="UIGeometry"}e.is2DParametricMesh=n;function t(r){return r==="PolygonGeometry"||r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"||r==="PathGeometry"||r==="VectorGeometry"||r==="ConeGeometry"||r==="CubeGeometry"||r==="CylinderGeometry"||r==="DodecahedronGeometry"||r==="HelixGeometry"||r==="IcosahedronGeometry"||r==="LatheGeometry"||r==="PyramidGeometry"||r==="SphereGeometry"||r==="PlaneGeometry"||r==="BackdropGeometry"||r==="TorusGeometry"||r==="TorusKnotGeometry"||r==="BooleanGeometry"||r==="TextGeometry"}e.isParametricMesh=t})(Ys||(Ys={}));var Wc;(t=>{function n(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Hc.merge(o.extrusion,r.extrusion))),o}t.merge=n})(Wc||(Wc={}));var wn;(t=>{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:fa.defaultData(),extrusion:qc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:pa.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}t.defaultData=n})(wn||(wn={}));var $c;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:Vt.white,near:.1,far:2e3})($c||($c={}));var Yc;(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,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(Yc||(Yc={}));var gp;(t=>t.defaultData={softShadowQuality:"low"})(gp||(gp={}));var xp;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(xp||(xp={}));var bp;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(bp||(bp={}));var Xs;(t=>t.defaultData={usePhysics:!1,gravity:-10})(Xs||(Xs={}));var vp;(t=>t.defaultData={playCamera:xn,gameControlObject:null})(vp||(vp={}));var Xc;(t=>t.defaultData={backgroundColor:Ie.fromHexAndA(i0,1),postprocessing:Yc.defaultData,fog:$c.defaultData,globalPhysics:Xs.defaultData,ambient:xp.defaultData,ao:bp.defaultData,shadow:gp.defaultData,publish:vp.defaultData})(Xc||(Xc={}));var Qc;(t=>t.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Qc||(Qc={}));var p0;(e=>{function n(r){return r==="Component"||r==="Instance"}e.isComponentRelated=n;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(p0||(p0={}));var ha;(o=>{o.identity={...Gc.identity,hiddenMatrix:gn.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;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 r(i,a){return Xl({position:yn.isEqual(i.position,a.position)?void 0:a.position,rotation:yn.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:yn.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:gn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(ha||(ha={}));var Mt;(t=>t.defaultData={states:new Se,events:new Se,visible:!0,raycastLock:!1,physics:Sn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ha.identity,cloner:null})(Mt||(Mt={}));var Kc;(t=>t.defaultData={type:"Empty",...Mt.defaultData})(Kc||(Kc={}));var f0;(t=>t.defaultData={type:"ParticleCollider",...Qc.defaultData,...Mt.defaultData})(f0||(f0={}));var h0;(t=>t.defaultData={type:"Component",...Mt.defaultData})(h0||(h0={}));var m0;(t=>t.defaultData={type:"Particle",...Mt.defaultData,...ua.defaultData})(m0||(m0={}));var ti;(t=>t.defaultData={type:"Mesh",...Mt.defaultData,...Uc.defaultData})(ti||(ti={}));var ri;(t=>t.defaultData={...Mt.defaultData,...ha.identity,position:[0,0,vn.DefaultTargetOffset],...vn.defaultData})(ri||(ri={}));var Zc;(e=>{function n(r){return{...Mt.defaultData,...jc.defaultData(r)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Zc||(Zc={}));var ma;(e=>{function n(r,o,i=0){for(;i<o.length;){let a=r?r[o[i]]:void 0;if(o.length===i+1)return a;if(a)r=a.descendants,i+=1;else return}}e.resolveWithDes=n;function t(r,o,i=0){let a=n(r,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(ma||(ma={}));var fo;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...Mt.defaultData,...s,component:a,overrides:new et,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=r;function o(a){let s=ha.fromObject(a.data);return r(a.id,s)}i.fromComponentData=o})(fo||(fo={}));var zo;(e=>{e.defaultData={type:"Page",...Mt.defaultData,physics:{...Sn.defaultData,fusedBody:!1},...Xc.defaultData,camera:ri.defaultData};function t(r){return r.uiScene!==void 0}e.isUIPage=t})(zo||(zo={}));var Jc;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:gn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Sn.defaultData,states:new Se,events:new Se,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...vn.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...Mt.defaultData,...ti.defaultData,geometry:wn.defaultData("RectangleGeometry"),material:qt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Mt.defaultData,...ti.defaultData,geometry:wn.defaultData("BooleanGeometry"),material:qt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Mt.defaultData,...ti.defaultData,geometry:wn.defaultData("TextGeometry"),material:qt.defaultTwoLayerData("phong","layer1","layer2")}))(Jc||(Jc={}));var oi;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new et}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new et})))):jr.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function t(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=pn(s.material,l=>{if(typeof l!="string")for(let[u,c]of Object.entries(a.material.layers)){let d=l.layers.data(u);d&&Pt.patch(d,c)}}).data),s.materials&&a.materials&&(s.materials=pn(s.materials,l=>{for(let u=0;u<s.materials.length;u++){let c=a.materials[u];if(typeof c!="string")for(let[d,p]of Object.entries(c.layers)){let f=l[u]?.layers?.data(d);f&&Pt.patch(f,p)}}}).data),s}function e(i,a){let s,l=[],u={orthographic:0,perspective:0,geometry:0};function c(d,p){for(let[f,h]of Object.entries(p.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...d,"layers",f,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};l.push(g)}}}for(let[d,p]of Object.entries(a))if(d!=="name")if(d==="cloner")l.push(...kc.toOps(p,["cloner"]));else if(d==="pathSnapping")l.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")c(["material"],p);else if(d==="materials")for(let[f,h]of Object.entries(p))c(["materials",f],h);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};l.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[d]=p;return l}o.toOps=e;function r(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,ha.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})}),jr.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:Wc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:po.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:po.merge(s.cloner,a.cloner)});else if(Fc.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=Vt.clone(l.color))}return s}o.patch=r})(oi||(oi={}));var ya;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(ya||(ya={}));var Ur;(t=>t.defaultData={orbitControls:ya.defaultData,playPage:bn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,i=0;return r<5?i=-30:r<10&&(i=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(Ur||(Ur={}));var Sp;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Sp||(Sp={}));var wp;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(wp||(wp={}));var Go;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Sp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:wp.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Go||(Go={}));var y0;(e=>{function n(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function t(r,o,i){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=ga.getComponentData(r,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=t})(y0||(y0={}));var ko;(l=>{l.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function t(u={withLight:!0,withSquare:!0}){let c=[],d=Jc.defaultMeshObject;u.withLight===!0&&c.push({fi:-1,data:Zc.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),u.withSquare===!0&&c.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:d,children:[]});let p=new Je;return p.push({fi:1,id:bn,data:{...zo.defaultData,name:"Scene 1"},children:c}),p}l.defaultData={objects:t(),publish:Ur.defaultData,styles:Go.defaultData()},l.emptyDataWithoutPage=function(){return{objects:new Je,publish:Ur.defaultData,styles:Go.defaultData()}},l.emptyDataWithPage=function(u){return{objects:t(u),publish:Ur.defaultData,styles:Go.defaultData()}},l.emptyData=function(){return{objects:new Je,publish:{...Ur.defaultData},styles:Go.defaultData()}};function a(u){return{...l.defaultData,objects:rr(u,Je.prototype)}}l.withObjs=a;function s(u,c){return a([{id:u,data:c,children:[],fi:0}])}l.withObj=s})(ko||(ko={}));var xa;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(xa||(xa={}));var ba;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ba||(ba={}));var eu;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function t(a){return typeof a=="number"}i.isNumber=t;function e(a){return typeof a=="boolean"}i.isBoolean=e;function r(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=r;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})(eu||(eu={}));var Ap;(t=>t.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(Ap||(Ap={}));var g0;(t=>t.all=[...Ap.all,"components"])(g0||(g0={}));var x0;(t=>{function n(){return{images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,materials:new xe,components:new xe,variables:new xe}}t.defaultData=n})(x0||(x0={}));var Fo;(t=>{function n(){return{images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,materials:new xe,components:new xe,variables:new xe}}t.defaultData=n})(Fo||(Fo={}));var Ir;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},rr(a,xe.prototype)}i.defaultColors=n;function t(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...ba.emptyImage,name:"AI generated image"}),rr(s,xe.prototype)}i.defaultImages=t;function e(){return{catelogs:new xe,materials:new xe,images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,variables:new Se,lib:Fo.defaultData()}}i.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),u=Math.floor((a-l*3600)/60),c=Math.round(a-l*3600-u*60);return{textValue:[l,u,c]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),u=Math.round(a-l*60);return{textValue:[l,u]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(Ir||(Ir={}));import{MathUtils as ou}from"three";var tu;(t=>t.list=["idle","move","jump","run"])(tu||(tu={}));var ru;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new Se,move:new Se,jump:new Se,run:new Se},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ie.fromHexAndA(3728051,1)}}))(ru||(ru={}));function b0(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Fr(ut(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...ut(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function jo(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function Uo(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,i)=>{o===void 0&&(r.materials[i]=qt.defaultData(),o=r.materials[i]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=qt.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=qt.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==et.prototype&&t(o.material)})})}function OC(n){Object.assign(n.scene.publish,{orbitControls:{...ya.defaultData,...ut(n.scene.publish.orbitControls)}})}function CC(n){Object.assign(n.scene.publish.settings,{video:{...Ur.defaultData.settings.video,...ut(n.scene.publish.settings.video)}})}function TC(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((u0.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(i))(d0.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(a=>{t(a)})})})}function MC(n){n.scene.publish.withBackground=!0}function IC(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function NC(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function DC(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function EC(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.unproxy().parent(t);if(r){let o=ut(n.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=ut(e).booleanExclude!==!0)}})}function BC(n){n.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function LC(n){function t(r){Object.setPrototypeOf(r,et.prototype),r.texture&&Object.setPrototypeOf(r.texture,et.prototype)}function e(r){Object.setPrototypeOf(r,et.prototype);for(let o in r)t(r[o])}n.scene.objects.traverse((r,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=ut(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],u=ut(l).layers;e(u),l.layers=u}})})}function v0(n){n.layers===void 0&&Object.assign(n,qt.defaultTwoLayerData("lambert"))}function _p(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...ut(t),colors:e,steps:r};Object.assign(t,o)}})}function RC(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function S0(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&_p(r)}):"material"in e&&typeof e.material!="string"&&_p(e.material)}),Object.values(n.shared.materials).forEach(t=>_p(t))}function VC(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,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 zC(n){n.shared.audios=rr({},xe.prototype)}function GC(n){n.shared.videos=rr({},xe.prototype)}function kC(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function FC(n){Object.entries(ut(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(ut(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function jC(n){n.scene.publish.settings.web.preload=!1}function w0(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function A0(n){n.layers&&n.layers.forEach(t=>{c0(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function UC(n){n.shared.fonts=rr({},xe.prototype)}function HC(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 qC(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=qt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=HC(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...Mt.defaultData,...ti.defaultData,flatShading:!1,wireframe:!1,geometry:{...wn.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:ut(o.states),events:ut(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=ut(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function WC(n){let t={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,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new Se,move:new Se,jump:new Se}});else{let i=new Se;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:ou.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},c={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(c,Fr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(c,{control1:{...a.control1},control2:{...a.control2}});let d={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},p={state:a.state,...d,...c},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new Se({fi:0,id:ou.generateUUID(),data:u},{fi:1,id:ou.generateUUID(),data:p})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function $C(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let a=new Se,s=[];if(e.events.forEach((l,u,c)=>{if(l.type==="Audio"&&l.trigger===i){let d;s.push(u),l.interaction==="play"?d={...Fr(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(d={...Fr(l,"interaction","delay","object","playAudio"),type:"Audio"}),d&&a.push({fi:c,id:u,data:d})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(u=>u.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:ou.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function _0(n){let t=n.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=Pt.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function P0(n){jo(n,_0),Uo(n,_0)}function YC(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function XC(n){n.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function QC(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=qt.defaultTwoLayerData("phong"))})}function KC(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((t,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function ZC(n){n.scene.objects.traverse((t,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function JC(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 eT(n){let{video:t}=n.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function tT(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function rT(n){let t=n.scene.environment.usePhysics;n.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function oT(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=ru.defaultDataThirdPerson.navmesh)})})}function nT(n){n.scene.styles||(n.scene.styles=Go.defaultData())}function O0(n){n.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function iT(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}),Uo(n,O0),jo(n,O0)}function aT(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new Se})})})}function sT(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function C0(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function T0(n,t){if(t<1&&(Uo(n,b0),jo(n,b0),n.schema=1),t<2&&(OC(n),n.schema=2),t<3&&(TC(n),n.schema=3),t<4&&(MC(n),n.schema=4),t<5&&(IC(n),n.schema=5),t<6&&(NC(n),n.schema=6),t<7&&(DC(n),n.schema=7),t<8&&(n.schema=8),t<9&&(S0(n),n.schema=9),t<10&&(RC(n),n.schema=10),t<11&&(VC(n),n.schema=11),t<12&&(S0(n),n.schema=12),t<13&&(zC(n),n.schema=13),t<14&&(kC(n),n.schema=14),t<15&&(FC(n),n.schema=15),t<16&&(jC(n),n.schema=16),t<17&&(Uo(n,w0),jo(n,w0),n.schema=17),t<18&&(Uo(n,v0),jo(n,v0),n.schema=18),t<19&&(CC(n),n.schema=19),t<20&&(UC(n),qC(n),n.schema=20),t<21&&(WC(n),$C(n),n.schema=21),t<22&&(P0(n),n.schema=22),t<23&&(YC(n),n.schema=23),t<24&&(XC(n),n.schema=24),(t<25||n.shared.videos===void 0)&&(GC(n),t<25&&(n.schema=25)),t<26&&(EC(n),n.schema=26),t<27&&(BC(n),n.schema=27),t<28&&(P0(n),n.schema=28),t<29&&(LC(n),n.schema=29),t<30&&(QC(n),n.schema=30),t<31&&(KC(n),n.schema=31),t<33&&(ZC(n),n.schema=33),t<34&&(JC(n),n.schema=34),t<35&&(eT(n),n.schema=35),t<36&&(tT(n),n.schema=36),t<37&&(rT(n),n.schema=37),t<38&&(Uo(n,A0),jo(n,A0),n.schema=38),t<39&&(oT(n),n.schema=39),t<40&&(nT(n),n.schema=40),t<41&&(iT(n),n.schema=41),t<42&&(aT(n),n.schema=42),t<43&&(sT(n),n.schema=43),t<99){Uo(n,C0),jo(n,C0),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=xn);let e=ut(n.scene.objects),r=n.scene.objects;n.scene.publish.playPage=bn,r.insertBefore(null,null,[{id:bn,data:{...zo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Fr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Fr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Xs.defaultData,...Fr(n.scene.environment,"usePhysics","gravity")},camera:ut(n.scene.ownerCamera)??zo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==ko.TRASH_CAN_ID&&r.move(bn,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 M0(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function lT(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}function cT(n){Array.isArray(ut(n.events))&&n.events?.forEach(t=>{"disabled"in t||(t.disabled=!1),(t.type==="MouseDown"||t.type==="MouseUp"||t.type==="MousePress")&&(t.mode=t.mode||"Object")})}var va=180/Math.PI;function I0(n){n.rotation=n.rotation.slice(0,3).map(t=>t*va)}function N0(n){I0(n),n.type==="Page"&&I0(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*va))});let t=n.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*va),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*va),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=va,t.extrusion.twist*=va),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(ut(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 uT(n){n.shared.variables=rr({},xe.prototype)}function dT(n){let t=ut(n.shared.variables);n.shared.variables=rr(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),Se.prototype)}var ho=111;function D0(n,t){t(n.data);for(let e of n.children)D0(e,t)}function pT(n){let t=n.schema??104;t!==ho&&t<105&&(D0(n.asset,N0),n.schema=105)}function fT(n){n.shared.particles=rr({},xe.prototype),n.shared.lib&&(n.shared.lib.particles=Fo.defaultData().particles)}function hT(n){n.scene.objects.traverse((t,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function nu(n){let t=n.schema??0;if(t!==ho){console.warn("updating from ",t,"to ",ho),T0(n,t),t<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Ur.defaultData.joystickSizeAndXYOffset),n.schema=100),t<101&&(Uo(n,M0),jo(n,M0),n.schema=101),t<102&&(lT(n),n.schema=102),t<104&&(n.shared.catelogs=new xe,n.shared.lib=Fo.defaultData(),n.schema=104),t<105&&(uT(n),n.scene.objects.traverse((e,r)=>{N0(r)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))pT(e);t<106&&(dT(n),n.schema=106),t<107&&(n.shared.lib.variables=Fo.defaultData().variables,n.schema=107),t<109&&(fT(n),n.schema=109),t<110&&(hT(n),n.schema=110),t<111&&(n.scene.objects.traverse((e,r)=>{cT(r)}),n.schema=111)}}var ga;(l=>{l.defaultData={schema:ho,scene:ko.defaultData,frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",xa.defaultData),shared:{...Ir.emptyData(),colors:Ir.defaultColors()}},l.emptyDataForImports=function(u){let c=ko.emptyDataWithPage(u);return{schema:ho,scene:c,frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",xa.defaultData),shared:{...Ir.emptyData(),colors:Ir.defaultColors(),images:Ir.defaultImages(u)}}},l.emptyData=function(){return{schema:ho,scene:ko.emptyDataWithPage(),frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",xa.defaultData),shared:Ir.emptyData()}},l.clipboard2dData=function(){return{schema:ho,scene:ko.emptyData(),frames:new xe,shared:Ir.emptyData()}},l.collabHelper={...js,updateSchema(u){return(u.schema??0)<ho?pn(u,nu):(u.schema??0)-ho}};function i(u){let c=l.collabHelper.updateSchema(u);return typeof c=="number"?c===0?u:null:c.data}l.updateSchemaDirectly=i;function a(u){return{...u,shared:{...u.shared,lib:Fo.defaultData()}}}l.withoutLib=a;function s(u,c){let d=u.scene.objects.get(c);if(d&&d.data.type==="Component")return d;{let p=u.shared.lib.components[c];if(p)return p.asset}}l.getComponentData=s})(ga||(ga={}));var E0;(t=>{function n(e){return!0}t.is=n})(E0||(E0={}));var iu;(r=>{r.defaultData={position:[0,0],scale:[1,1],rotation:0};function t(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale}}r.merge=t;function e(o,i){return Xl({position:$s.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:$s.isEqual(o.scale,i.scale)?void 0:i.scale})}r.diff=e})(iu||(iu={}));var Pp;(t=>t.defaultData={horizontalConstraint:0,verticalConstraint:0})(Pp||(Pp={}));var au;(t=>t.defaultData={opacity:1,fill:{color:Ie.white,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}})(au||(au={}));var ni;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function t(a,s){if(s===void 0)return a;let l={...a},u=["width","height","cornerRadius"];for(let c of u)c in l&&c in s&&s[c]!==void 0&&Object.assign(l,{[c]:s[c]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function r(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,iu.merge(l,s)),l=t(l,s),l=e(l,s),l}i.patch=r;function o(a,s){let l,u=[];for(let[c,d]of Object.entries(s))c!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},u.push(l)),l.props[c]=d);return u}i.toOps=o})(ni||(ni={}));var Qs;(t=>t.defaultData={...iu.defaultData,...Pp.defaultData,states:new Se,events:new Se,visible:!0,raycastLock:!1})(Qs||(Qs={}));var Sa;(t=>t.defaultData={...Qs.defaultData,...au.defaultData})(Sa||(Sa={}));var su;(t=>t.defaultData={cornerRadius:[0,0,0,0]})(su||(su={}));var Op;(t=>t.defaultData={...Sa.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Op||(Op={}));var wa;(t=>t.defaultData={...Sa.defaultData,...su.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(wa||(wa={}));var Cp;(t=>t.defaultData={...Sa.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(Cp||(Cp={}));var Tp;(t=>t.defaultData={...Sa.defaultData,type:"path2d",path:"",name:"Path"})(Tp||(Tp={}));var B0;(t=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}t.is=n})(B0||(B0={}));var Ks;(t=>t.defaultData={...Qs.defaultData,name:"Group",type:"group2d"})(Ks||(Ks={}));var Mp;(t=>t.defaultData={...Qs.defaultData,...su.defaultData,...au.defaultData,name:"Frame",type:"frame2d",width:200,height:200,fill:{color:Ie.fromHexAndA(St,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}})(Mp||(Mp={}));var Ho;(o=>{function n(i){switch(i){case"rectangle2d":return{...wa.defaultData};case"ellipse2d":return{...Op.defaultData};case"text2d":return{...Cp.defaultData};case"vector2d":return{...wa.defaultData};case"path2d":return{...Tp.defaultData};case"frame2d":return{...Mp.defaultData};case"group2d":return{...Ks.defaultData}}}o.defaultData=n;function t(i){return"width"in i&&"height"in i?[typeof i.width=="number"?i.width*.5:0,typeof i.height=="number"?i.height*.5:0]:[0,0]}o.getPivot=t;function e(i){return i.type==="rectangle2d"||i.type==="ellipse2d"||i.type==="text2d"||i.type==="frame2d"}o.isResizeable=e;function r(i){return i.type==="rectangle2d"||i.type==="frame2d"}o.hasCorners=r})(Ho||(Ho={}));var lu;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Je},e.emptyData=function(){return{type:"scene2d",objects:new Je}}))(lu||(lu={}));var xs=Zt(R0());import{Object3D as uN,Vector3 as _r,Euler as ph,MathUtils as yv,Matrix4 as wi}from"three";var mT=.5*(Math.sqrt(3)-1),Zs=(3-Math.sqrt(3))/6,yT=1/3,mo=1/6,hq=(Math.sqrt(5)-1)/4,mq=(5-Math.sqrt(5))/20,Js=n=>Math.floor(n)|0,V0=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]),Np=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 cu(n=Math.random){let t=G0(n),e=new Float64Array(t).map(o=>V0[o%12*2]),r=new Float64Array(t).map(o=>V0[o%12*2+1]);return function(i,a){let s=0,l=0,u=0,c=(i+a)*mT,d=Js(i+c),p=Js(a+c),f=(d+p)*Zs,h=d-f,m=p-f,y=i-h,g=a-m,b,w;y>g?(b=1,w=0):(b=0,w=1);let _=y-b+Zs,S=g-w+Zs,P=y-1+2*Zs,O=g-1+2*Zs,x=d&255,D=p&255,N=.5-y*y-g*g;if(N>=0){let E=x+t[D],B=e[E],R=r[E];N*=N,s=N*N*(B*y+R*g)}let T=.5-_*_-S*S;if(T>=0){let E=x+b+t[D+w],B=e[E],R=r[E];T*=T,l=T*T*(B*_+R*S)}let I=.5-P*P-O*O;if(I>=0){let E=x+1+t[D+1],B=e[E],R=r[E];I*=I,u=I*I*(B*P+R*O)}return 70*(s+l+u)}}function z0(n=Math.random){let t=G0(n),e=new Float64Array(t).map(i=>Np[i%12*3]),r=new Float64Array(t).map(i=>Np[i%12*3+1]),o=new Float64Array(t).map(i=>Np[i%12*3+2]);return function(a,s,l){let u,c,d,p,f=(a+s+l)*yT,h=Js(a+f),m=Js(s+f),y=Js(l+f),g=(h+m+y)*mo,b=h-g,w=m-g,_=y-g,S=a-b,P=s-w,O=l-_,x,D,N,T,I,E;S>=P?P>=O?(x=1,D=0,N=0,T=1,I=1,E=0):S>=O?(x=1,D=0,N=0,T=1,I=0,E=1):(x=0,D=0,N=1,T=1,I=0,E=1):P<O?(x=0,D=0,N=1,T=0,I=1,E=1):S<O?(x=0,D=1,N=0,T=0,I=1,E=1):(x=0,D=1,N=0,T=1,I=1,E=0);let B=S-x+mo,R=P-D+mo,k=O-N+mo,V=S-T+2*mo,q=P-I+2*mo,F=O-E+2*mo,U=S-1+3*mo,H=P-1+3*mo,$=O-1+3*mo,J=h&255,K=m&255,X=y&255,te=.6-S*S-P*P-O*O;if(te<0)u=0;else{let W=J+t[K+t[X]];te*=te,u=te*te*(e[W]*S+r[W]*P+o[W]*O)}let Y=.6-B*B-R*R-k*k;if(Y<0)c=0;else{let W=J+x+t[K+D+t[X+N]];Y*=Y,c=Y*Y*(e[W]*B+r[W]*R+o[W]*k)}let ee=.6-V*V-q*q-F*F;if(ee<0)d=0;else{let W=J+T+t[K+I+t[X+E]];ee*=ee,d=ee*ee*(e[W]*V+r[W]*q+o[W]*F)}let Q=.6-U*U-H*H-$*$;if(Q<0)p=0;else{let W=J+1+t[K+1+t[X+1]];Q*=Q,p=Q*Q*(e[W]*U+r[W]*H+o[W]*$)}return 32*(u+c+d+p)}}function G0(n){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(n()*(256-r)),i=e[r];e[r]=e[o],e[o]=i}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as gT}from"three";var Hr=new gT,uu=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let i=1;Hr.a.fromBufferAttribute(t,o),Hr.b.fromBufferAttribute(t,o+1),Hr.c.fromBufferAttribute(t,o+2),i*=Hr.getArea(),e[o/3]=i}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,i=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){i=a;break}else t<e[a]?o=a-1:r=a+1}return i}sampleFace(t,e,r){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Hr.a.fromBufferAttribute(this.positionAttribute,t*3),Hr.b.fromBufferAttribute(this.positionAttribute,t*3+1),Hr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Hr.a,o).addScaledVector(Hr.b,i).addScaledVector(Hr.c,1-(o+i)),Hr.getNormal(r),this}};import{Object3D as wT}from"three";var j0=Zt(F0());import{Object3D as xT,Matrix4 as yo}from"three";var bT=new yo,vT=new yo,ST=new yo,Aa;(t=>{function n(e){return e&&e.__isSPEObject}t.is=n})(Aa||(Aa={}));var _a=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new yo;this.copyPreviousMatrix=!0;this.hiddenMatrix=new yo;this.matrixWorldRigid=new yo;this.shearScale=new yo;this.shearScaleInv=new yo}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof xT&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&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(r,o=0){for(let i of this.children)Aa.is(i)&&i.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Aa.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:i,v:a,q:s}=(0,j0.SVD)(o),l=bT.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),u=vT.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),c=ST.copy(u).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,c).copyPosition(this.matrixWorld),s.every(d=>Math.abs(s[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let i=new yo().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),i.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof yo?r.hiddenMatrix.premultiply(i):r.applyMatrix4(i),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Dp=class extends _a(wT){},AT=n=>n.type==="Mesh",qo=class extends Dp{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new qo(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return AT(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 BI,BufferGeometry as LI,MeshBasicMaterial as RI}from"three";import{Matrix4 as DI,Mesh as EI}from"three";import{Matrix4 as fu,Vector3 as q0,Euler as MT,MathUtils as tl}from"three";import{Box3 as _T,Line3 as PT,Matrix4 as Ep,Vector3 as Sr}from"three";var ii=new Sr,ai=new Sr,Pa=new Ep,H0=[new Sr(-1,1,1),new Sr(-1,-1,1),new Sr(1,-1,1),new Sr(1,1,1),new Sr(-1,1,-1),new Sr(-1,-1,-1),new Sr(1,-1,-1),new Sr(1,1,-1)],OT=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],CT=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],U0=(n,t,e)=>{n.updateEntityBoxSize(ii,ai),Pa.copy(t).multiply(n.matrixWorld),ai.x===0&&ai.y===0&&ai.z===0?e.push(new Sr(ii.x,ii.y,ii.z).applyMatrix4(Pa)):H0.forEach(r=>{e.push(r.clone().multiply(ai).add(ii).applyMatrix4(Pa))})},el=class extends _T{constructor(){super(...arguments);this.matrix=new Ep;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ep().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,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 Sr);return}U0(a,r,i)}}):U0(e,r,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(Pa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(ai).multiplyScalar(.5),this.getCenter(ii),Pa.copy(this.matrix).setPosition(ii),this.vertices=H0.map(e=>e.clone().multiply(ai).applyMatrix4(Pa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=OT.map(([e,r])=>new PT(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Sr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=CT.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var qr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as TT,CubicBezierCurve3 as Bp,Vector3 as Wr}from"three";var Rp=class extends TT{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let u=l[s],c=s===0?o[s]:o[s]-o[s-1],d=Math.ceil(t*c/a),p=u.getPoints(d);for(let f=0;f<p.length;f++){let h=p[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Vp=.001;function zp(n,t,e){return t.clone().sub(n).cross(t.clone().sub(e)).length()<=Vp}function Lp(n,t){let e=new Wr(...n.position),r=new Wr(...n.controlNext.position),o=new Wr(...t.controlPrevious.position),i=new Wr(...t.position);return zp(e,r,i)&&zp(e,o,i)}function pu(n){let t=n.points.map(c=>new Wr(...c.data.position)),e=[n.points[0]],r=new Wr(...e[0].data.position);for(let c=0;c<n.points.length-1;c++)zp(r,t[c],t[c+1])||(e.push(n.points[c]),r=t[c]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let c=0;c<a;c++){let d=e[c].data,p=new Wr(...d.position),f=new Wr(...d.controlPrevious.position),h=new Wr(...d.controlNext.position),m={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:h};if(d.roundness===0||!n.isClosed&&(c===0||c===a-1)){s[c]={...m,removedLength:0};continue}let y=o&&c==0?a-1:c-1,g=o&&c==a-1?0:c+1,b=e[y].data,w=e[g].data,_=new Wr(...b.position),S=new Wr(...w.position),P=_.clone().sub(p).normalize(),O=S.clone().sub(p).normalize();Object.assign(m,{prevDir:P,nextDir:O});let x=Lp(b,d),D=Lp(d,w);if(!x||!D)s[c]={...m,removedLength:0};else{let N=P.clone().add(O).normalize(),T=N.clone().cross(P).length()/P.dot(N);s[c]={...m,tan:T,removedLength:d.roundness/T}}}for(let c=0;c<i;c++){let d=c,p=o&&c===a-1?0:c+1,f=s[d],h=s[p];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let c=0;c<i;c++){let d=c,p=o&&c===a-1?0:c+1,f=s[d],h=s[p],m=null;if(!Lp(e[d].data,e[p].data))f.position.distanceTo(h.position)>Vp&&(m=new Bp(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),g=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&g.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(g)>Vp&&(m=new Bp(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}l[2*c+1]=m}for(let c=0;c<a;c++){let d=s[c];if(d.removedLength===0){l[2*c]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),h=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),m=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(h,.5),b=f.distanceTo(h)/2,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(b,2))).add(g),_=y.clone().multiplyScalar(-m).add(w),S=p.distanceTo(_)/p.distanceTo(g),P=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),O=P.clone().lerp(_,2),x=f.clone().lerp(P,4/3),D=h.clone().lerp(O,4/3);l[2*c]=new Bp(f,x,D,h)}let u=new Rp;return l.forEach(c=>{c&&u.add(c)}),u}var Re;(t=>{function n(e){return e&&e.__isEntity}t.is=n})(Re||(Re={}));var Oa=n=>Re.is(n),IT={type:"completeState",isfromEntity:!0},NT=["x","y","z"],Gp=new q0,DT=new q0().set(0,1,0),Ca=n=>class extends _a(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 el;this._recursiveBBox=new el;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(Re.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(Re.is(this.children[r]))return r+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(Re.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)oi.toOps(this.data,a.data).forEach(l=>{let u=aa.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=oi.patch(this.data,a),oi.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{Oa(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(i=>{i.uuid===r&&(o=i)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,i=o.indexOf(this)+1;if(Re.is(o[i]))return o[i];if(Re.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&Re.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,i=this;for(;i!==r;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)Oa(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{Re.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Oa(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Oa(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)Oa(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>Oa(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*tl.RAD2DEG,this.rotation.y*tl.RAD2DEG,this.rotation.z*tl.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ta(o,r)}getTransformValues(r,o,i){return o[r].map((a,s)=>i?.shared.getVariable(a,[this.uuid,r,NT[s]])??a)}updateTransformState(r,o){let i=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),i=!0),r.rotation&&(Gp.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(tl.DEG2RAD),this.rotation.setFromVector3(Gp),i=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),i=!0),r.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??gn.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)Re.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{Re.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return ta(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,i,a){let s=this.data;this.data=o;let l=r,u=Le(r.path,["states","*"]);if(u!==null){if(r.type===0){let[c]=u;if(this?.stateSelection===c){let d={...r.props};if(delete d.name,Object.values(r.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=lt.zoom(p,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(d[h]=f[h])}}l={...r,props:d,path:r.path.slice(2)}}}}else if(r.type===0){let c=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(c!==void 0){if(r.props.name!==void 0&&c.name){let{name:p,...f}=c;c=f}if(r.props.material!==void 0&&"material"in c){let{material:p,...f}=c;c=f}let d=lt.removeOverridden(r.path,r.props,c);l={...r,props:d}}}if(this.updateByPatchedOpBase(l,oi.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Le(r.path,["overrides"])){let c=[],d=[...r.path];for(c.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)c.push(d[1]),d.splice(0,2);if(c[c.length-1]===void 0){if(r.type===0)for(let p of Object.keys(r.props)){c[c.length-1]=p;let f=i.scene.findInstance([this.uuid,...c]);f&&(f.overrideData=r.props[p],f.updateState(ao.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...c]);if(p){let f=lt.zoom(p.component.data,d);if(r={...r,path:d},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}p.overrideData=ma.resolve(o.overrides,c),p.updateByOp(r,ct.applySimple(p.data,r),i,!1)}}}else if(this.instances.length>0){let c;if(r.path.length===0&&r.type===0){let d;for(let p of fo.rootOverrideProps)p in r.props&&(d===void 0&&(d={}),d[p]=r.props[p]);d&&(c={...r,props:d})}else for(let d of fo.rootOverrideProps)if(Le(r.path,[d])){c=r;break}c!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=ao.filterOp(d.overrideData,c);p&&d.updateByOp(p,ct.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=ao.filterOp(d.overrideData,r);if(p){let f;s===d.data&&r===p?f=o:f=ct.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(r,o,i){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!jr.is(r.props.type)&&qr.changeEntityProptotype(this,o,i);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){qr.changeEntityProptotype(this,o,i);for(let a of this.children)Re.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(r,o,i)}updateByPatchedOp(r,o,i){if(r.path.length===0&&r.type===0&&this.updateState(r.props,i),Le(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Le(r.path,["cloner"])!==null){let a=ct.drop(r,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(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,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=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=l.data;if(u.geometry.path.points.length<=1)return;let c=pu(u.geometry.path),d=(i+a)%1;i+a===1&&d===0&&(d=1);let p=c.getPointAt(d);if(p===null)return;let f=this.parent?this.parent?.matrixWorld:new fu;l.updateMatrixWorld();let h=new fu().multiplyMatrices(f.clone().invert(),l.matrixWorld);p.applyMatrix4(h);let m={position:p.toArray(),rotation:u.rotation};if(s==="tangential"){let y=new fu().extractRotation(l.matrixWorld),g=c.getTangentAt(d).applyMatrix4(y).add(p),b=new fu().lookAt(p,g,DT),w=Gp.setFromEuler(new MT().setFromRotationMatrix(b)).multiplyScalar(tl.RAD2DEG);m={...m,rotation:w.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(IT)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof qr.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new qr.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as LT,ConeGeometry as RT,Float32BufferAttribute as VT,MathUtils as zT}from"three";import{BufferGeometry as $0,CylinderGeometry as ET,Float32BufferAttribute as mu,MathUtils as BT,Vector2 as $r,Vector3 as hu}from"three";var Y0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=BT.clamp(e.thetaLength,0,360);let r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{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:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:u,radiusBottom:c,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,h;return l===0?(h=new $0,h.setAttribute("position",new mu([],3))):d||f?h=new rl(u,c,r,o,i,a,s,l*Math.PI/180,d,d,p,f):h=new ET(u,c,r,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function An(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function W0(n){return new $r(n.y,-n.x)}var rl=class extends $0{constructor(t,e,r,o,i,a,s,l,u,c,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,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&&(u=0,c=0);let h=[],m=[],y=[],g=[],b=0,w=r/2,_=new hu,S=new hu;f&&t==0&&(t=u),f&&e==0&&(e=c);let P=new $r(t,w),O=new $r(e,-w),x=null,D=null,N=null,T=null,I=P.clone().sub(O),E=0,B=0,R=0;p>0&&(E=Math.min(t,e)*(1-p),B=t-E,R=e-E);let k=P.clone();k.x-=E;let V=Math.PI-I.angle(),q=I.angle(),F=Math.tan(q/2),U=Math.tan(V/2),H=F+U,$=p?H:U,J=p?H:F;if(u=Math.min(u,(t-B)/$,I.length()/H),c=Math.min(c,(e-R)/J,I.length()/H),u>0){let Q=u/F;x=P.clone().sub(new $r(Q,u)),p&&(N=x.clone(),N.x-=E-H*u),P.sub(I.clone().setLength(Q))}if(c>0){let Q=c/U;D=O.clone().sub(new $r(Q,-c)),O.add(I.clone().setLength(Q)),p&&(T=D.clone(),T.x-=E-H*c,k.sub(I.clone().setLength(Q)))}I=P.clone().sub(O);let K=I.length()<.5,X=[];for(let Q=0;Q<=o;Q++){let W=[],ue=Q/o,le=ue*l+s,ne=new $r(Math.sin(le),Math.cos(le));T&&D?(te(W,ue,ne,V,c,T,-1,!0),te(W,ue,ne,q,c,D,-1,!1)):D?(Y(W,ne,D.x,0,-1),te(W,ue,ne,q,c,D,-1,!1)):a||Y(W,ne,e,R,-1);let ce=W0(I).normalize();if(An(ce,ne,_),!K)for(let ae=0;ae<=i;ae++){let he=ae/i,pe=I.clone().multiplyScalar(he).add(O);An(pe,ne,S),m.push(S.x,S.y,S.z),y.push(_.x,_.y,_.z),g.push(ue,.5+S.y/r),W.push(b++)}if(N&&x?(te(W,ue,ne,V,u,x,1,!1),te(W,ue,ne,q,u,N,1,!0)):x?(te(W,ue,ne,V,u,x,1,!1),Y(W,ne,x.x,0,1)):a||Y(W,ne,t,B,1),p&&!K){let ae=W0(I).multiplyScalar(-1).normalize();An(ae,ne,_);for(let he=0;he<=i;he++){let pe=he/i,fe=I.clone().multiplyScalar(-pe).add(k);An(fe,ne,S),m.push(S.x,S.y,S.z),y.push(_.x,_.y,_.z),g.push(ue,.5+S.y/r),W.push(b++)}}p&&!a&&W.push(W[0]),X.push(W)}for(let Q=0;Q<X.length-1;Q++)for(let W=0;W<X[0].length-1;W++){if(a&&p&&W==i)continue;let ue=X[Q][W],le=X[Q+1][W],ne=X[Q+1][W+1],ce=X[Q][W+1],ae=m[ne*3+0],he=m[ne*3+2];h.push(ue,le,ce),(ae!=0||he!=0)&&h.push(le,ne,ce)}l<Math.PI*2&&(ee(-1,X[0],s),ee(1,X[X.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new mu(m,3)),this.setAttribute("normal",new mu(y,3)),this.setAttribute("uv",new mu(g,2));function te(Q,W,ue,le,ne,ce,ae,he){for(let pe=0;pe<d+1;pe++){let fe=pe/d,ge=ae<0?fe:1-fe;he&&(ge-=1),ge*=le;let me=new $r(Math.sin(ge),Math.cos(ge)*ae),C=me.clone().multiplyScalar(ne).add(ce);An(C,ue,S),m.push(S.x,S.y,S.z),An(me,ue,_),y.push(_.x,_.y,_.z),g.push(W,.5+S.y/r),Q.push(b++)}}function Y(Q,W,ue,le,ne){let ce=new hu,ae=new $r,he=[ue,le];ne<0&&he.reverse();for(let pe of he)ae.set(pe,w*ne),An(ae,W,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ne,0),g.push(.5,.5),Q.push(b++)}function ee(Q,W,ue){let le=new $r(Math.sin(ue),Math.cos(ue)),ne=new $r(-Math.cos(ue),Math.sin(ue)),ce=new hu,ae=Q<0?(fe,ge,me)=>h.push(fe,ge,me):(fe,ge,me)=>h.push(fe,me,ge),he=new $r((t+e+B+R)/4,0);An(he,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),g.push(.5,.5);let pe=b++;for(let fe of W){let ge=m.slice(fe*3,fe*3+3);m.push(...ge),y.push(ne.x,0,ne.y);let me=g.slice(fe*2,fe*2+2);g.push(...me),b++}for(let fe=pe+1;fe<b-1;fe++)ae(pe,fe,fe+1);ae(pe,b-1,pe+1)}}};var X0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=zT.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:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:u,cornerRadiusBottom:c,cornerSegments:d}=n.parameters,p;return l===0?(p=new LT,p.setAttribute("position",new VT([],3))):u>0||c>0||l<360?p=new rl(0,t/2,r,o,i,a,s,l*Math.PI/180,u,c,d,0,!0):p=new RT(t/2,r,o,i,a),p.scale(1,1,e/t),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as GT,BufferGeometry as kT,Float32BufferAttribute as kp,Vector3 as ol}from"three";var Q0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,u;return s==0?u=new GT(t,e,r,o,i,a):u=new jp(t,e,r,o,i,a,s,l),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Fp=Math.PI/2,jp=class extends kT{constructor(t=1,e=1,r=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],d=[],p=[],f=[],h=0,m=0;y("z","y","x",-1,-1,r,e,t,a,i,0),y("z","y","x",1,-1,r,e,-t,a,i,1),y("x","z","y",1,1,t,r,e,o,a,2),y("x","z","y",1,-1,t,r,-e,o,a,3),y("x","y","z",1,-1,t,e,r,o,i,4),y("x","y","z",-1,-1,t,e,-r,o,i,5),s>0&&(g("z","y","x",-1,-1,1,r,e,t,a,0),g("z","y","x",1,-1,-1,r,e,t,a,1),g("z","y","x",-1,1,-1,r,e,t,a,1),g("z","y","x",1,1,1,r,e,t,a,0),g("x","y","z",-1,-1,-1,t,e,r,o,0),g("x","y","z",1,-1,1,t,e,r,o,1),g("x","y","z",-1,1,1,t,e,r,o,0),g("x","y","z",1,1,-1,t,e,r,o,1),g("y","x","z",-1,-1,1,e,t,r,i,0),g("y","x","z",1,-1,-1,e,t,r,i,1),g("y","x","z",1,1,1,e,t,r,i,1),g("y","x","z",-1,1,-1,e,t,r,i,0),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new kp(d,3)),this.setAttribute("normal",new kp(p,3)),this.setAttribute("uv",new kp(f,2));function y(w,_,S,P,O,x,D,N,T,I,E){let B=(x-2*s)/T,R=(D-2*s)/I,k=x/2-s,V=D/2-s,q=N/2,F=T+1,U=I+1,H=0,$=0,J=new ol;for(let K=0;K<U;K++){let X=K*R-V;for(let te=0;te<F;te++){let Y=te*B-k;J[w]=Y*P,J[_]=X*O,J[S]=q,d.push(J.x,J.y,J.z),J[w]=0,J[_]=0,J[S]=N>0?1:-1,p.push(J.x,J.y,J.z),f.push(te/T),f.push(1-K/I),H+=1}}for(let K=0;K<I;K++)for(let X=0;X<T;X++){let te=h+X+F*K,Y=h+X+F*(K+1),ee=h+(X+1)+F*(K+1),Q=h+(X+1)+F*K;c.push(te,Y,Q),c.push(Y,ee,Q),$+=6}u.addGroup(m,$,E),m+=$,h+=H}function g(w,_,S,P,O,x,D,N,T,I,E){let B=(D-2*s)/I,R=D/2-s,k=N/2-s,V=T/2,q=I+1,F=0,U=0,H=new ol,$=new ol;for(let J=0;J<l+1;J++){let K=J/l*Fp,X=Math.sin(K)*s,te=(1-Math.cos(K))*s,Y=Math.sin(K),ee=Math.cos(K);H[_]=(k+X)*O,H[S]=(V-te)*x,$[w]=0,$[_]=Y*Math.sign(H[_]),$[S]=ee*Math.sign(H[S]);for(let Q=0;Q<q;Q++){let W=Q*B-R;H[w]=W*P,d.push(H.x,H.y,H.z),p.push($.x,$.y,$.z),f.push(Q/I),f.push(0),F+=1}}for(let J=0;J<l;J++)for(let K=0;K<I;K++){let X=h+K+q*J,te=h+K+q*(J+1),Y=h+(K+1)+q*(J+1),ee=h+(K+1)+q*J;c.push(X,te,ee),c.push(te,Y,ee),U+=6}u.addGroup(m,U,E),m+=U,h+=F}function b(w,_,S){let P=new ol,O=new ol(t/2,e/2,r/2);O.subScalar(s);let x=[],D=w*_*S>0?(T,I,E)=>c.push(T,I,E):(T,I,E)=>c.push(T,E,I);for(let T=0;T<=l;T++){let I=[],E=Fp*(1-T/l),B=Math.cos(E),R=Math.sin(E),k=0;for(let V=0;V<=T;V++){let q=Math.cos(k),F=Math.sin(k);P.x=B*q,P.y=R,P.z=B*F;let U=O.clone().addScaledVector(P,s);d.push(w*U.x,_*U.y,S*U.z),p.push(w*P.x,_*P.y,S*P.z),f.push(0,0),I.push(h++),k+=Fp/T}x.push(I)}let N=x.length-1;for(let T=0;T<N;T++){let I=x[T],E=x[T+1],B=I.length-1;D(I[0],E[1],E[0]);for(let R=1;R<=B;R++)D(I[R-1],I[R],E[R]),D(I[R],E[R+1],E[R])}}}};import{BufferGeometry as FT,Float32BufferAttribute as Up,Triangle as jT,Vector3 as Wo,Vector2 as Hp}from"three";var _n=class extends FT{constructor(t=[],e=[],r="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],u=[];c(),d(),this.setAttribute("position",new Up(s,3)),this.setAttribute("normal",new Up(u,3)),this.setAttribute("uv",new Up(l,2));return;function c(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new Wo,m=h.clone(),y=new jT,g=i*o,b=o-g,w=a+1,_=new Wo,S=(F,U)=>_.subVectors(F,U).normalize(),P=(F,U)=>Array(F).fill(void 0).map(U),O=P(t.length/3,(F,U)=>new Wo().fromArray(t,U*3).setLength(o)),x=[],D=1e6;for(let F=0;F<O.length;F++){let U=O[F],H=[],$,J,K,X=1e10,te=-1;for(;(te=e.indexOf(F,te+1))!=-1;){let W=te-te%3;$=e[W+(te+1)%3],J=e[W+(te+2)%3],K=U.distanceToSquared(O[$]),X=Math.min(X,K),H.push([$,J,K])}X+=1e-6;let Y=[],ee=0,Q=H.length;for(let W=0;W<Q;W++){[$,J,K]=H[ee];let ue=x[$]?.includes(F)==!0;K<=X&&Y.push($+ +ue*D),ee=H.findIndex(le=>le[0]==J)}x.push(Y)}let N=[];{let F=0,U=0,H,$,J=f==3;for(let K=0;K<=a;K++){H=K*(K+1)/2,$=(K+1)*(K+2)/2;for(let X=0;X<a-K;X++)[F,U]=[H+X+K+2,$+X+K+3],N.push(H,$,...J?[U,H]:[F,$],U,F),[H,$]=[F,U];N.push(H,$,H+a+2)}}let T=h.clone(),I=h.clone(),E=h.clone(),B=h.clone(),R=h.clone(),k=[],V=P(O.length,()=>P(f,()=>h.clone()));for(let F=0;F<O.length;F++){h.copy(O[F]).normalize(),T.copy(h).multiplyScalar(b);let U=x[F];for(let Y=0;Y<U.length;Y++){let ee=U[Y],Q=U[(Y+1)%f];y.setFromPointsAndIndices(O,F,ee%D,Q%D),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(T,V[F][Y])}let H=[],$=[],J=[],K=new Wo;a==0&&[...V[F]].reduce((Y,ee)=>Y.add(ee),K).multiplyScalar(1/f);for(let Y=0;Y<f;Y++){let ee=[],Q=(Y-1+f)%f,W=V[F][Q],ue=V[F][Y];h.copy(W).sub(T),m.copy(ue).sub(T);let le=T.angleTo(h),ne=h.angleTo(m),ce=Math.cos(le)*g;a==0?I.copy(K):I.copy(T).setLength(b+ce),$.push(ce);let ae=[I,W,ue];for(let he=0;he<2;he++){let pe=ae[he],fe=ae[he+1];B.subVectors(pe,T),R.subVectors(fe,T),E.crossVectors(B,R).normalize();for(let ge=0;ge<w;ge++){let me=[le,ne][he]*ge/w;h.copy(B).applyAxisAngle(E,me).add(T),H.push(h.clone()),he&&(S(h,T),ee.push([ge==0?pe:h.clone(),_.clone()]))}he&&(S(fe,T),ee.push([fe,_.clone()]))}J.push(ee)}k.push(J);let X=2*w,te=2;for(let Y=0;Y<f;Y++){let ee=X*Y,Q=X*((Y+1)%f),W=[H[ee]];for(let le=1;le<w;le++){B=H[ee+le],R=H[Q+le],W.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)h.lerpVectors(B,R,ne/(ce+1)),h.sub(T).setLength($[Y]).add(T),W.push(h.clone());W.push(R)}for(let le=0;le<w;le++)W.push(H[le+w+ee]);W.push(H[Q+w]);let ue=N.map(le=>W[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),u.push(...ue.map(le=>(S(le,T),[_.x,_.y,_.z])).flat())}}let q=[];for(let F=0;F<x.length;F++)for(let U=0;U<f;U++){let H=x[F][U];if(H<D){let $=x[H].findIndex(X=>X%D==F),J=k[F][U],K=k[H][$];for(let X=0;X<w;X++){let te=J[X],Y=K[w-X],ee=J[X+1],Q=K[w-(X+1)];[te,Y,ee,ee,Y,Q].forEach(W=>{s.push(W[0].x,W[0].y,W[0].z),u.push(W[1].x,W[1].y,W[1].z)})}q.push(J[0][0],K[w][0],J[w][0],K[0][0])}}for(;q.length;){let F,U,H,$;[F,U]=q.splice(0,2);let J=[F];for(;F!=U;)J.push(U),H=q.indexOf(U),$=H%2,U=q.splice(H-$,2)[1-$];_.subVectors(J[0],J[1]).cross(h.subVectors(J[0],J[2])).normalize();let K=_.dot(J[0])<0;K&&_.negate();for(let X=1;X<=J.length-2;X++)[J[X+ +K],J[X+1-+K],J[0]].forEach(te=>{s.push(te.x,te.y,te.z),u.push(_.x,_.y,_.z)})}}function d(){let p=new Wo;for(let O=0;O<s.length;O+=3){p.x=s[O+0],p.y=s[O+1],p.z=s[O+2];let x=S(p)/2/Math.PI+.5,D=P(p)/Math.PI+.5;l.push(x,1-D)}let f=new Wo,h=new Wo,m=new Wo,y=new Wo,g=new Hp,b=new Hp,w=new Hp,_=(O,x,D,N)=>{N<0&&O.x===1&&(l[x]=O.x-1),D.x===0&&D.z===0&&(l[x]=N/2/Math.PI+.5)};for(let O=0,x=0;O<s.length;O+=9,x+=6){f.set(s[O+0],s[O+1],s[O+2]),h.set(s[O+3],s[O+4],s[O+5]),m.set(s[O+6],s[O+7],s[O+8]),g.set(l[x+0],l[x+1]),b.set(l[x+2],l[x+3]),w.set(l[x+4],l[x+5]),y.copy(f).add(h).add(m).divideScalar(3);let D=S(y);_(g,x+0,f,D),_(b,x+2,h,D),_(w,x+4,m,D)}for(let O=0;O<l.length;O+=6){let x=l[O+0],D=l[O+2],N=l[O+4],T=Math.max(x,D,N),I=Math.min(x,D,N);T>.9&&I<.1&&(x<.2&&(l[O+0]+=1),D<.2&&(l[O+2]+=1),N<.2&&(l[O+4]+=1))}function S(O){return Math.atan2(O.z,-O.x)}function P(O){return Math.atan2(-O.y,Math.sqrt(O.x*O.x+O.z*O.z))}}}static fromJSON(t){return new _n(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as UT}from"three";var K0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new nl(t*.5,i,a):new UT(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},nl=class extends _n{constructor(t=1,e=.2,r=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,t,e,r),this.type=l}static fromJSON(t){return new nl(t.radius,t.corner,t.cornerSides)}};import{Plane as eM,Shape as px,Vector2 as $o,Vector3 as tM,MathUtils as Kp,LineCurve as Zp,QuadraticBezierCurve as fx,CubicBezierCurve as bu}from"three";import{CubicBezierCurve as yu,EllipseCurve as HT,LineCurve as gu,LineCurve3 as qT,MathUtils as WT,QuadraticBezierCurve as Wp,SplineCurve as $T,Vector2 as Jt,Vector3 as ex}from"three";var il=1e-12,Ta=class{constructor(t){this.position=new Jt;this.startPosition=new Jt;this.uuid=WT.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Ta(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ma=class extends Ta{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ma(this.parent).copy(this)}},Yr=class extends Ta{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ma(this),new Ma(this))}static create(e,r){let o=new Yr(e,new Jt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Yr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new Jt,r=new Jt){let[o,i]=this.computeTangents();return o&&i&&(Z0(o,e),Z0(i,r)),[e,r]}computeTangent(e=new Jt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new Jt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Z0(n,t=new Jt){let e=n.length();return t.set(-n.y/e,n.x/e)}var $p=n=>n,Ia=new Jt,xu=new Jt,YT=new Jt,XT=new Jt,QT=new Jt,KT=new Jt,tx=new ex,rx=new ex;function ox(n){let t=new Jt;t.addVectors(n.v0,Ia.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Jt;return e.addVectors(n.v2,xu.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new yu(n.v0,t,e,n.v2)}function al(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function ZT(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function JT(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Yp(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.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+r*r-i*i)/(2*o*r))}function nx(n,t,e){return J0(n,t)&&J0(t,e)&&qp(n.position,t.position,e.position)}function qp(n,t,e){return Ia.copy(t).sub(n).cross(xu.copy(e).sub(n))===0}function ix(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),a=(n.y+t.y)/2,s=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(s+l,a+u),o.set(s-l,a-u),[r,o]}function ax(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function sx(n,t,e,r,o,i){let a=t.x-n.x,s=t.y-n.y,l=e.x-n.x,u=e.y-n.y,c=Math.sqrt((a+l)*(a+l)+(s+u)*(s+u)),d;return Yp(t,n,e)>Math.PI&&(c*=-1),al(u,s)?d=(s+u)*(r/c-.5)*8/3/(a-l):d=(a+l)*(r/c-.5)*8/3/(u-s),o.set(t.x-d*s,t.y+d*a),i.set(e.x+d*u,e.y-d*l),[o,i]}function Xp(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function J0(n,t){return qp(n.position,n.controls[1].position,t.position)&&qp(n.position,t.controls[0].position,t.position)}function lx(n,t,e,r,o=.5){let i=Ia.subVectors(t,n).multiplyScalar(o).add(n),a=xu.subVectors(e,t).multiplyScalar(o).add(t),s=YT.subVectors(r,e).multiplyScalar(o).add(e),l=i,u=XT.subVectors(a,i).multiplyScalar(o).add(i),c=QT.subVectors(s,a).multiplyScalar(o).add(a),d=s,p=KT.subVectors(c,u).multiplyScalar(o).add(u);return[n.x,n.y,l.x,l.y,u.x,u.y,p.x,p.y,c.x,c.y,d.x,d.y,r.x,r.y]}function cx(n,t,e=12,r=!0){let o=rx.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let u=$p(t[l]),c=Ia,d=Pn(u,e);s.push(d);for(let p=0;p<=d;p++)if(u instanceof yu||u instanceof Wp||u instanceof gu){if(u.getPoint(p/d,c),o.set(c.x,c.y,0),i!==void 0&&JT(i,o))continue;i===void 0&&(i=tx),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return r&&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 ux(n,t,e,r=12,o=!0){let i=rx.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let u,c=$p(t[l]),d=Ia,p=Pn(c,r);s.push(p);for(let f=0;f<=p;f++)if(c instanceof yu||c instanceof Wp||c instanceof gu){if(c.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=tx:(n.setXYZ(a,u.x,u.y,u.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),u.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function Qp(n,t=12,e=!1){let r=[];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,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=Pn(a.curveAfter,t)),r.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Pn(n[0].roundedCurveCorner,t)*.5),r}function Pn(n,t=12){return n&&n instanceof HT?t*2:n&&(n instanceof gu||n instanceof qT)?1:n&&n instanceof $T?t*n.points.length:t}function dx(n,t,e=12,r=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=$p(t[a]),l=Pn(s,e),u=Ia;for(let c=0;c<=l;c++)if(s instanceof yu||s instanceof Wp||s instanceof gu){if(s.getPoint(c/l,u),o!==void 0&&ZT(o,u,il))continue;o===void 0&&(o=xu),o.copy(u),n.push(u.x,u.y),i++}}return al(n[0],n[n.length-2],il)&&al(n[1],n[n.length-1],il)&&(n.pop(),n.pop()),r&&i>1&&!(al(n[i-1],n[1],il)&&al(n[i-2],n[0],il))&&(n.push(n[0],n[1]),i++),n}var Jp=new $o,rM=new $o,oM=new $o,nM=new $o,iM=new $o,aM=new $o,He=class extends px{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new eM(new tM(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=Kp.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new He;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Yr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>He.createFromState(a)),r!==void 0&&o!==void 0&&i.applySize(r,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 r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],u=l.points.length,c=l.getPointIndexById(e);if(c<0)i+=u;else return c+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 r=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=Jp.set(e,r);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,r);this._update()}createPoint(e,r=0,o=Kp.generateUUID()){let i;e instanceof $o?i=e:i=new $o(e,r);let a=new Yr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return cx(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Qp(this.points,e,!1),this.roundedCurveDivisions=Qp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return ux(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),dx(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,a=0;r&&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,u)=>l+u,0));for(let l=0,u=i.length;l<u;l++){let c=i[l];if(s<o+c)return[l,(s-o+1)/c];o+=c}return[0,1]}getCurveT(e,r,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(Xp(i,a)){let d=i.position.distanceTo(a.position);return i.position.distanceTo(Jp.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=s[d];return(r-u)/l}dispose(){}_applyCurveForPoint(e,r){Xp(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(r===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,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],u=a.roundness,c=s&&l&&nx(s,a,l);if(!a.controlsMoved()&&u>0&&!c){let d=a.curveBefore,p=a.curveAfter;if(d===void 0||p===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=d.getLength(),y=p.getLength(),g=Math.min(u,m*.499),b=Math.min(u,y*.499),w=Math.min(g,b),_=1-w/m,S=w/y,P=d.getPointAt(_,Jp),O=p.getPointAt(S,rM);this._subSplitCurve(d,f,_,P,void 0),this._subSplitCurve(p,h,S,void 0,O);let x;if(this.useCubicForRoundedCorners){let D=Yp(P,a.position,O)/2,N=Math.tan(D)*P.distanceTo(a.position),[T,I]=ix(P,O,N,oM,nM),E=ax(T,I,a.position),[B,R]=sx(E,P,O,N,iM,aM);x=new bu(P.clone(),B.clone(),R.clone(),O.clone())}else x=new fx(P.clone(),a.position.clone(),O.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+r,0,x),r++}}}}_subSplitCurve(e,r,o,i,a){if(e instanceof Zp)i!==void 0&&r.v2.copy(i),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,u=s.getUtoTmapping(o,0),c=lx(s.v0,s.v1,s.v2,s.v3,u);return i!==void 0&&(l.v0.set(c[0],c[1]),l.v1.set(c[2],c[3]),l.v2.set(c[4],c[5]),l.v3.set(c[6],c[7])),a!==void 0&&(l.v0.set(c[6],c[7]),l.v1.set(c[8],c[9]),l.v2.set(c[10],c[11]),l.v3.set(c[12],c[13])),l}return r}clone(){let e=new He(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],u=e.points[i+3],c=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Yr(Kp.generateUUID(),new $o(a,s));f.controls[0].position.set(l,u),f.controls[1].position.set(c,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new He;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof bu&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,u;for(l=0,u=a.length;l<u;l++)a[l]instanceof fx&&(a[l]=ox(a[l]));for(l=0,u=a.length;l<u;l++){let p=a[l],f=l>0?a[l-1]:null,h;p instanceof bu?(h=this.createPoint(p.v0),h.controls[1].position.copy(p.v1)):p instanceof Zp&&(h=this.createPoint(p.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let c=a[a.length-1],d=!1;return c instanceof bu?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),d=!0):c instanceof Zp&&c.v2.equals(s[0].position)&&(d=!0),this.isClosed=d,s};return this.points=i(e.curves),e instanceof px&&(this.shapeHoles=e.holes.map(a=>{let s=new He;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let i=this.getPointByUuid(e)?.controls[0];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let i=this.getPointByUuid(e)?.controls[1];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}};var tf=Math.PI*2;function ef({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function sM(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),a=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function hx(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function lM(n,t,e,r,o,i,a,s,l,u){let c=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),h=c*d-c*f-d*p;h<0&&(h=0),h/=c*f+d*p,h=Math.sqrt(h)*(l===u?-1:1);let m=h*o/i*s,y=h*-i/o*a,g=m+(n+e)/2,b=y+(t+r)/2,w=(a-m)/o,_=(s-y)/i,S=(-a-m)/o,P=(-s-y)/i,O=hx(1,0,w,_),x=hx(w,_,S,P);return!u&&x>0&&(x-=tf),u&&x<0&&(x+=tf),{centerx:g,centery:b,ang1:O,ang2:x}}function mx({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let u=(n-e)/2,c=(t-r)/2;if(u===0&&c===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(c,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=lM(n,t,e,r,o,i,u,c,a,s),{ang1:f,ang2:h}=p,{centerx:m,centery:y}=p,g=Math.abs(h)/(tf/4);Math.abs(1-g)<1e-7&&(g=1);let b=Math.max(Math.ceil(g),1);h/=b;for(let w=0;w<b;w++)l.push(sM(f,h)),f+=h;return l.map(w=>{let{x:_,y:S}=ef(w[0],o,i,m,y),{x:P,y:O}=ef(w[1],o,i,m,y),{x,y:D}=ef(w[2],o,i,m,y);return{x1:_,y1:S,x2:P,y2:O,x,y:D}})}import{BufferAttribute as _u,BufferGeometry as vM}from"three";var je;(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"})(je||(je={}));var dt;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(dt||(dt={}));function Ae(n,t){if(!n)throw t||"Assertion Failed!"}var ve=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){Ae(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){Ae(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){Ae(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){Ae(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var a,s,l;n.vertLeq(t,e)||(l=t,t=e,e=l),n.vertLeq(r,o)||(l=r,r=o,o=l),n.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.vertLeq(r,e)?n.vertLeq(e,o)?(a=n.edgeEval(t,r,e),s=n.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,e.s)):(a=n.edgeSign(t,r,e),s=-n.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(l=t,t=e,e=l),n.transLeq(r,o)||(l=r,r=o,o=l),n.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.transLeq(r,e)?n.transLeq(e,o)?(a=n.transEval(t,r,e),s=n.transEval(r,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,e.t)):(a=n.transSign(t,r,e),s=-n.transSign(t,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,o.t)):i.t=(r.t+e.t)/2},n}(),sl=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),vu=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),Na=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}(),yx=function(){function n(){var t=new Na,e=new sl,r=new vu(0),o=new vu(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new vu(0),r=new vu(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;Ae(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;Ae(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var t=new Na,e=new Na,r=new sl,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new Na;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var a=new sl;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new sl;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Na;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var a=new sl;this.makeFace_(a,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=t&&ve.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&ve.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,a,s,l,u;for(i=t,i=t;(o=i.next)!==t;i=o){Ae(o.prev===i),l=o.anEdge;do Ae(l.Sym!==l),Ae(l.Sym.Sym===l),Ae(l.Lnext.Onext.Sym===l),Ae(l.Onext.Sym.Lnext===l),Ae(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(Ae(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){Ae(a.prev===s),l=a.anEdge;do Ae(l.Sym!==l),Ae(l.Sym.Sym===l),Ae(l.Lnext.Onext.Sym===l),Ae(l.Onext.Sym.Lnext===l),Ae(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(Ae(a.prev===s&&a.anEdge===null),u=r,u=r;(l=u.next)!==r;u=l)Ae(l.Sym.next===u.Sym),Ae(l.Sym!==l),Ae(l.Sym.Sym===l),Ae(l.Org!==null),Ae(l.Dst!==null),Ae(l.Lnext.Onext.Sym===l),Ae(l.Onext.Sym.Lnext===l);Ae(l.Sym.next===u.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),gx=function(){function n(){this.handle=null}return n}(),xx=function(){function n(){this.key=null,this.node=0}return n}(),cM=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new gx,this.handles[r]=new xx;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,Ae(a<=this.max),i=e[a].handle,a>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t>>1,i=e[a].handle,a===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;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 gx;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new xx}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;Ae(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),rf=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}(),bx=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),uM=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new bx,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(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new bx;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),dM=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,a=r.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(t,e){e.fixUpperEdge&&Ae(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){Ae(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new rf;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case je.ODD:return(e&1)!==0;case je.NONZERO:return e!==0;case je.POSITIVE:return e>0;case je.NEGATIVE:return e<0;case je.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),n.finishRegion(t,a),s=i.eUp,a=i}return s},n.addRightEdges=function(t,e,r,o,i,a){var s,l,u,c,d=!0;u=r;do Ae(ve.vertLeq(u.Org,u.Dst)),n.addRegionBelow(t,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,c=i;s=n.regionBelow(l),u=s.eUp.Sym,u.Org===c.Org;)u.Onext!==c&&(t.mesh.splice(u.Oprev,u),t.mesh.splice(c.Oprev,u)),s.windingNumber=l.windingNumber-u.winding,s.inside=n.isWindingInside(t,s.windingNumber),l.dirty=!0,!d&&n.checkForRightSplice(t,l)&&(n.addWinding(u,c),n.deleteRegion(t,l),t.mesh.delete(c)),d=!1,l=s,c=u;l.dirty=!0,Ae(l.windingNumber-u.winding===s.windingNumber),a&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=ve.vertL1dist(e,t),i=ve.vertL1dist(r,t),a=.5*i/(o+i),s=.5*o/(o+i);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.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&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(ve.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a;if(Ae(!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=t.mesh.splitEdge(o),t.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=r.dirty=!0,a=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a=o.Org,s=i.Org,l=o.Dst,u=i.Dst,c,d,p=new Na,f,h;if(Ae(!ve.vertEq(u,l)),Ae(ve.edgeSign(l,t.event,a)<=0),Ae(ve.edgeSign(u,t.event,s)>=0),Ae(a!==t.event&&s!==t.event),Ae(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(c=Math.min(a.t,l.t),d=Math.max(s.t,u.t),c>d))return!1;if(ve.vertLeq(a,s)){if(ve.edgeSign(u,a,s)>0)return!1}else if(ve.edgeSign(l,s,a)<0)return!1;return n.debugEvent(t),ve.intersect(l,a,u,s,p),Ae(Math.min(a.t,l.t)<=p.t),Ae(p.t<=Math.max(s.t,u.t)),Ae(Math.min(u.s,l.s)<=p.s),Ae(p.s<=Math.max(s.s,a.s)),ve.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.event.t),f=ve.vertLeq(a,s)?a:s,ve.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ve.vertEq(p,a)||ve.vertEq(p,s)?(n.checkForRightSplice(t,e),!1):!ve.vertEq(l,t.event)&&ve.edgeSign(l,t.event,p)>=0||!ve.vertEq(u,t.event)&&ve.edgeSign(u,t.event,p)<=0?u===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),h=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,h,!0),!0):(ve.edgeSign(l,t.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ve.edgeSign(u,t.event,p)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,a,l,s,u),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,u=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(t,e),ve.vertEq(s.Org,t.event)&&(t.mesh.splice(i.Oprev,s),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),a),u=!0),ve.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,a,null),u=!0),u){n.addRightEdges(t,e,r.Onext,i,i,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,r)){Ae(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!ve.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}Ae(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(Ae(i!==a),n.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(r.anEdge,a),ve.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,a,s,l,u=new rf;if(u.eUp=e.anEdge.Sym,r=t.dict.search(u).key,o=n.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=ve.vertLeq(s.Dst,a.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var c=t.mesh.connect(s.Dnext,e.anEdge);l=c.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,l):n.computeWinding(t,n.addRegionBelow(t,r,l)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);Ae(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(t,i,null);s.Onext===a?n.connectRightVertex(t,o,s):n.addRightEdges(t,o,s.Onext,a,a,!0)},n.addSentinel=function(t,e,r,o){var i=new rf,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new uM(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,a=t.bmin[1]-r,s=t.bmax[1]+r;n.addSentinel(t,o,i,a),n.addSentinel(t,o,i,s)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(Ae(e.fixUpperEdge),Ae(++r===1)),Ae(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,ve.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new cM(i,ve.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,Ae(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ve.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),pM=function(){function n(){this.mesh=new yx,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=je.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(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,a,s,l=[0,0,0],u=[0,0,0],c=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,h[y]=e,l[y]=i,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,h[g]=e),i>l[g]&&(l[g]=i,f[g]=e);var b=0;if(l[1]-u[1]>l[0]-u[0]&&(b=1),l[2]-u[2]>l[b]-u[b]&&(b=2),u[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[b],o=f[b],c[0]=r.coords[0]-o.coords[0],c[1]=r.coords[1]-o.coords[1],c[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=c[1]*d[2]-c[2]*d[1],p[1]=c[2]*d[0]-c[0]*d[2],p[2]=c[0]*d[1]-c[1]*d[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,t[0]=p[0],t[1]=p[1],t[2]=p[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(c)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,a=t.next;a!==t;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=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,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),r=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,u=t.next;u!==t;u=u.next)l?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,l=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ve.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ve.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(ve.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ve.edgeGoesLeft(o.Lnext)||ve.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ve.edgeGoesRight(r.Lprev)||ve.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var u=t.vHead.next;u!==t.vHead;u=u.next)u.n=-1;for(var c=t.fHead.next;c!==t.fHead;c=c.next)if(c.n=-1,!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;u.n===-1&&(u.n=s,s++),l++,i=i.Lnext}while(i!==c.anEdge);if(l>r)throw"Face vertex greater that support polygon";c.n=a,++a}this.elementCount=a,e===dt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var u=t.vHead.next;u!==t.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,c=t.fHead.next;c!==t.fHead;c=c.next)if(!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;this.elements[p++]=u.n,l++,i=i.Lnext}while(i!==c.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-1;if(e===dt.CONNECTED_POLYGONS){i=c.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==c.anEdge);for(var h=l;h<r;++h)this.elements[p++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,u=0,c=0;i=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[c++]=i,this.elements[c++]=a,i+=a}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new yx),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,a){if(t===void 0&&(t=je.ODD),e===void 0&&(e=dt.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=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),dM.computeInterior(this,a);var s=this.mesh;return e===dt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===dt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},n}();function Xr(n){var t=n.windingRule,e=t===void 0?je.ODD:t,r=n.elementType,o=r===void 0?dt.POLYGONS:r,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,u=n.normal,c=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,h=f===void 0?!0:f,m=n.debug,y=m===void 0?!1:m;if(!p&&h)throw new Error("Contours can't be empty");if(!!p){var g=new pM;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var b=0;b<p.length;b++)g.addContour(l||2,p[b]);return g.tesselate(e,o,a,l,c,h),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var UW=je.ODD,HW=je.NONZERO,qW=je.POSITIVE,WW=je.NEGATIVE,$W=je.ABS_GEQ_TWO,YW=dt.POLYGONS,XW=dt.CONNECTED_POLYGONS,QW=dt.BOUNDARY_CONTOURS;import{Box2 as gM,BufferAttribute as Au,BufferGeometry as xM,Vector2 as bM}from"three";var Su=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*Su.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*Su.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*t);a+=3*t;let l=new Float32Array(o,a*i,3*t);a+=3*t;let u=new Float32Array(o,a*i,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),u.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),u.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=u,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},ll=Su;ll.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ax=Zt(wx()),cl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},lf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},cf={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},sf=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Cn=class extends xM{constructor(e,r,o=0,i=12,a=3,s=je.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=i,this._bevelSegmentsInput=a;let u=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(T=>{let I=T.extractShapePointsToFlatArray([],i),E=[];for(let B=I.length-1;B>=1;B-=2){let R=I[B-1],k=I[B-0];E.push(R,k)}return E}),d=[],p=[];for(let T=0;T<u.length;T+=2)p.push([u[T],u[T+1]]);d.push(p);for(let T=0;T<c.length;T++){let I=c[T],E=[];for(let B=0;B<I.length;B+=2)E.push([I[B],I[B+1]]);d.push(E)}let f;e.isText?f=new gM().setFromPoints(e.points.map(I=>I.position)).getSize(new bM).length()*.1:d[0].length===0?f=o:f=(0,Ax.default)(d).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=Xr({windingRule:s,elementType:dt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[u]})}catch{h=cl}let m;try{m=Xr({windingRule:je.ODD,elementType:dt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]})}catch{m=lf}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let T=0;T<m.elements.length;T++){let I=m.elements[T],E=T%2===0?h.vertexCount:0;h.elements.push(I+E)}for(let T=0;T<m.vertexIndices.length;T++){let I=m.vertexIndices[T],E=h.vertexCount;h.vertexIndices.push(I+E)}for(let T=0;T<m.vertices.length;T++){let I=m.vertices[T];h.vertices.push(I)}}let g=1/0,b=-1/0,w=1/0,_=-1/0;for(let T=0,I=h.vertexCount;T<I;T++){let E=T*2,B=h.vertices[E+0],R=h.vertices[E+1];B<g&&(g=B),B>b&&(b=B),R<w&&(w=R),R>_&&(_=R)}this._minX=g,this._minY=w,this._width=b-g,this._height=_-w,this._buffer=new ll(this._computeBufferEstimatedSize(h));let S=[],P=[];for(let T=h.elementCount-1;T>=0;T--){let I=T>=y,E=T*2,B=h.elements[E+0],R=h.elements[E+1],k=B+R,V={start:B,count:R,normals:[],continuous:[],concave:[]},q=B,F=k-1,U=B+1,H=this._shape.roundedCurves.length;do{let te=q-B,Y=h.vertices[F*2+0],ee=h.vertices[F*2+1],Q=h.vertices[q*2+0],W=h.vertices[q*2+1],ue=h.vertices[U*2+0],le=h.vertices[U*2+1],ne=Q-Y,ce=W-ee,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let he=Q-ue,pe=W-le,fe=Math.sqrt(he*he+pe*pe);he/=fe,pe/=fe,V.normals[te*2+0]=-pe,V.normals[te*2+1]=he,V.concave[te]=ne*pe-ce*he>0;let ge=h.vertexIndices[q];if(Array.isArray(ge))V.continuous[te]=!1;else{let[me,C]=this._shape.getCurveIndexFromVertexId(ge-1,!0);if(C>0&&C<1)V.continuous[te]=!0;else{let ie=C===1?me+1:me-1;ie=(ie+H)%H;let De=C===1?0:1,Ge=this._shape.roundedCurves[me].getTangent(C),Ee=this._shape.roundedCurves[ie].getTangent(De);V.continuous[te]=Ge.dot(Ee)>.95}}I&&(V.normals[te*2+0]*=-1,V.normals[te*2+1]*=-1),[F,q,U]=[q,U,U+1],U>=k&&(U-=R)}while(U!==B+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(B*2,k*2),vertexCount:R,vertexIndices:new Array(R).fill(!0).map((te,Y)=>[Y,Y]),elements:[0,R],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(B*2,k*2)});let J=0;for(let te=1;te<=this._bevelSegments;te++){let Y=te/this._bevelSegments*Math.PI/2,ee=(1-Math.cos(Y))*this._bevel,Q=[],W=[],ue=[],le=[],ne=0;for(let ae=0;ae<R;ae++){let he=ae*2,pe=(ae-1+R)%R*2,fe=h.vertices[V.start*2+he+0],ge=h.vertices[V.start*2+he+1],me=-V.normals[pe+0]*ee,C=-V.normals[pe+1]*ee,ie=-V.normals[he+0]*ee,De=-V.normals[he+1]*ee;if(V.concave[ae]||!V.concave[ae]&&I){let Ge=Math.atan2(C,me),Ee=Math.atan2(De,ie);Ee>Ge&&(Ee-=Math.PI*2);let _e=Ee-Ge;if(V.continuous[ae]||I){let Ct=Ge+_e/2,Me=Math.cos(Ct)*ee,At=Math.sin(Ct)*ee;Q[2*ne+0]=fe+Me*(I?-1:1),Q[2*ne+1]=ge+At*(I?-1:1),le[ne]=ae,ne++}else{let Ct=Math.max(1,Math.floor(i/4*Math.abs(_e)/Math.PI));for(let Me=0;Me<=Ct;Me++){let At=Ge+_e*(Me/Ct),Tt=Math.cos(At)*ee,qn=Math.sin(At)*ee;Q[2*ne+0]=fe+Tt,Q[2*ne+1]=ge+qn,le[ne]=ae,ne++}}}else Q[2*ne+0]=fe+me,Q[2*ne+1]=ge+C,le[ne]=ae,W[ae]=ne,ne++,Q[2*ne+0]=fe,Q[2*ne+1]=ge,le[ne]=ae,ne++,Q[2*ne+0]=fe+ie,Q[2*ne+1]=ge+De,le[ne]=ae,ue[ae]=ne,ne++}let ce=Xr({windingRule:je.POSITIVE,elementType:dt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let pe=ae.Org.idx,fe=le[pe],ge=le[(pe+1)%le.length];ae.idx=[fe,ge],ae.Sym.idx=[ge,fe]},vertexIdCallback:ae=>{let he=ae.Lprev.idx;return[he?he[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;J=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[he,pe]=ce.vertexIndices[ae];if(he===pe)continue;let fe=pe;pe<he&&(fe+=R);for(let ge=he;ge<fe;ge++){let me=ge%R,C=(ge+1)%R;if(!V.continuous[me]||!V.continuous[C]){ce.vertexIndices[ae]=[he,me],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}}}$.push({bevelI:te,angle:Y,size:ee,boundary:ce,reverseMap:le,insetPoints:Q})}let K=(te,Y,ee)=>{let Q=0,W=te.boundary.vertexIndices.length;for(;Q<W&&ee(te.boundary.vertexIndices[Y]);)Y=(Y+1)%W,Q++;return Q},X=S.length;for(let te=1;te<$.length;te++){let Y=$[te-1],ee=$[te],Q=Y.boundary.vertexIndices.length,W=ee.boundary.vertexIndices.length;if(!Q||!W)break;let ue=V.concave.length,le=0,ne=sf(le,R);for(;!Y.boundary.vertexIndices.filter(ne).length||!ee.boundary.vertexIndices.filter(ne).length;)le++,ne=sf(le,R);let ce=Y.boundary.vertexIndices.findIndex(ne),ae=ee.boundary.vertexIndices.findIndex(ne);do ce=(ce+1)%Q;while(ne(Y.boundary.vertexIndices[ce]));do ae=(ae+1)%W;while(ne(ee.boundary.vertexIndices[ae]));le=(le+1)%R;let he=le,pe=0,fe=this._buildBevelVert(V,Y,(ce-1+Q)%Q,void 0,pe),ge=this._buildBevelVert(V,ee,(ae-1+W)%W,void 0,pe),me=fe,C=ge,ie,De,Ge=!1;do{pe=(le||ue)/ue,ne=sf(le,R);let Ee=K(Y,ce,ne),_e=K(ee,ae,ne),Ct=Ge;if(Ge=!1,Ee&&!_e){for(let Me=0;Me<Ee;Me++)ie=this._buildBevelVert(V,Y,(ce+Me)%Q,Me/(Ee-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie;Ge=!0}else if(!Ee&&_e)for(let Me=0;Me<_e;Me++)De=this._buildBevelVert(V,ee,(ae+Me)%W,Me/(_e-1),pe),S.push(C.topN,me.topP,De.topP),l===!1&&S.push(me.bottomP,C.bottomN,De.bottomP),C=De;else if(Ee&&_e)if(ie=this._buildBevelVert(V,Y,ce,0,pe),De=this._buildBevelVert(V,ee,ae,0,pe),Ct?(S.push(me.topN,De.topP,C.topN),S.push(me.topN,ie.topP,De.topP),l===!1&&(S.push(De.bottomP,me.bottomN,C.bottomN),S.push(De.bottomP,ie.bottomP,me.bottomN))):(S.push(C.topN,me.topN,ie.topP),S.push(C.topN,ie.topP,De.topP),l===!1&&(S.push(ie.bottomP,me.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,De.bottomP))),me=ie,C=De,Ee===_e)for(let Me=1;Me<Ee;Me++)ie=this._buildBevelVert(V,Y,(ce+Me)%Q,Me/(Ee-1),pe),De=this._buildBevelVert(V,ee,(ae+Me)%W,Me/(_e-1),pe),S.push(me.topN,ie.topP,C.topN),S.push(C.topN,ie.topP,De.topP),l===!1&&(S.push(ie.bottomP,me.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,De.bottomP)),me=ie,C=De;else if(Ee>_e){let Me=Ee/_e,At=0;for(let Tt=1;Tt<Ee;Tt++)ie=this._buildBevelVert(V,Y,(ce+Tt)%Q,Tt/(Ee-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie,Tt>(At+1)*Me&&(At++,De=this._buildBevelVert(V,ee,(ae+At)%W,At/(_e-1),pe),S.push(C.topN,ie.topP,De.topP),l===!1&&S.push(ie.bottomP,C.bottomN,De.bottomP),C=De)}else{let Me=_e/Ee,At=0;for(let Tt=1;Tt<_e;Tt++)De=this._buildBevelVert(V,ee,(ae+Tt)%W,Tt/(_e-1),pe),S.push(C.topN,ie.topP,De.topP),l===!1&&S.push(ie.bottomP,C.bottomN,De.bottomP),C=De,Tt>(At+1)*Me&&(At++,ie=this._buildBevelVert(V,Y,(ce+At)%Q,At/(Ee-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie)}ce=(ce+Ee)%Q,ae=(ae+_e)%W,le=(le+1)%ue}while(le!==he)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall($,V,S),I){let te=[];for(let Y=S.length-1;Y>=X+2;Y-=3){let ee=S[Y-2],Q=S[Y-1],W=S[Y-0];te.push(W,Q,ee)}S.splice(X,S.length-X,...te)}if(I){let te=[];for(let Y=$[$.length-1].boundary.vertices.length-1;Y>=1;Y-=2){let ee=$[$.length-1].boundary.vertices[Y-1],Q=$[$.length-1].boundary.vertices[Y-0];te.push(ee,Q)}P.push(te)}if(!I){let te=$[$.length-1],Y;try{Y=Xr({windingRule:$.length>1?je.POSITIVE:je.ODD,elementType:dt.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...P]})}catch{Y=cf}if(!Y)throw new Error("Error generating geometry for surface");c.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let ee=0;ee<Y.elementCount*3;ee+=3){let Q=this._buildSurfaceVert(Y,Y.elements[ee+0],J),W=this._buildSurfaceVert(Y,Y.elements[ee+1],J),ue=this._buildSurfaceVert(Y,Y.elements[ee+2],J);S.push(Q.top,W.top,ue.top),l===!1&&S.push(ue.bottom,W.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let O=new Au(Uint32Array.from(S),1),x=new Au(this._buffer.positions,3),D=new Au(this._buffer.normals,3),N=new Au(this._buffer.uvs,2);x.needsUpdate=!0,D.needsUpdate=!0,N.needsUpdate=!0,O.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",D),this.setAttribute("uv",N),this.setIndex(O)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),u=this._buildBevelVert(r,i,(a+1)%s);o.push(u.topP,l.topN,l.bottomN),o.push(u.topP,l.bottomN,u.bottomP)}}_buildSurfaceVert(e,r,o){let i=r.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,u=(s-this._minY)/this._height;this.forPathBevel&&(u=1);let c=this._buffer.get(this.forPathBevel?1:2),d=c*3,p=c*2,f={top:c+0,bottom:c+1};return this._buffer.positions[d+0]=a,this._buffer.positions[d+1]=s,this._buffer.positions[d+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[d+0]=0,this._buffer.normals[d+1]=0,this._buffer.normals[d+2]=1,this._buffer.uvs[p+0]=l,this._buffer.uvs[p+1]=u,this.forPathBevel===!1&&(this._buffer.positions[d+3]=a,this._buffer.positions[d+4]=s,this._buffer.positions[d+5]=o,this._buffer.normals[d+3]=0,this._buffer.normals[d+4]=0,this._buffer.normals[d+5]=-1,this._buffer.uvs[p+2]=l,this._buffer.uvs[p+3]=u),this.vertexCache[i]=f,f}_buildBevelVert(e,r,o,i=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,u]=r.boundary.vertexIndices[o],c,d,p,f;l!==u?(d=l,c=u,f=!1,p=e.continuous[d]&&e.continuous[c]):(c=l,d=(c-1+e.count)%e.count,f=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,g=c*2,b=d*2,w=r.boundary.vertices[y+0],_=r.boundary.vertices[y+1],S=(1-m)*this._bevel,P=(w-this._minX)/this._width,O=(_-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(P=a),O=1);let x=e.normals[g+0],D=e.normals[g+1],N=e.normals[b+0],T=e.normals[b+1];if(f){let k=N-x,V=T-D;x=x+k*(1-i),D=D+V*(1-i);let q=Math.sqrt(x*x+D*D);x/=q,D/=q}let I=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),E=I*3,B=I*2,R={i:o,fi:c,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1,pathBevelUCoord:a};return this._buffer.positions[E+0]=w,this._buffer.positions[E+1]=_,this._buffer.positions[E+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[E+0]=x*h,this._buffer.normals[E+1]=D*h,this._buffer.normals[E+2]=m,this._buffer.uvs[B+0]=P,this._buffer.uvs[B+1]=O,this.forPathBevel===!1&&(this._buffer.positions[E+3]=w,this._buffer.positions[E+4]=_,this._buffer.positions[E+5]=S,this._buffer.normals[E+3]=x*h,this._buffer.normals[E+4]=D*h,this._buffer.normals[E+5]=-m,this._buffer.uvs[B+2]=O,this._buffer.uvs[B+3]=P),p||(this.forPathBevel?(I+=1,E+=3,B+=2):(I+=2,E+=6,B+=4),R.topP=I+0,R.bottomP=I+1,this._buffer.positions[E+0]=w,this._buffer.positions[E+1]=_,this._buffer.positions[E+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[E+0]=N*h,this._buffer.normals[E+1]=T*h,this._buffer.normals[E+2]=m,this._buffer.uvs[B+0]=P,this._buffer.uvs[B+1]=O,this.forPathBevel===!1&&(this._buffer.positions[E+3]=w,this._buffer.positions[E+4]=_,this._buffer.positions[E+5]=S,this._buffer.normals[E+3]=N*h,this._buffer.normals[E+4]=T*h,this._buffer.normals[E+5]=-m,this._buffer.uvs[B+2]=O,this._buffer.uvs[B+3]=P)),this.vertexCache[s]=R,R}clone(){let e=new Cn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ro(this.userData),e}};var Da=class extends vM{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=je.ODD;this.elementType=dt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:je.ODD,elementType:dt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,u=!0,c,d;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,g=i[y+0],b=i[y+1];if(c!==void 0&&g!==c&&(l=!1),d!==void 0&&b!==d&&(u=!1),c=g,d=b,!l&&!u)break}if(!l&&!u)try{s=Xr({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=cl}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new _u(new Float32Array(p*3),3),this._normalAttribute=new _u(new Float32Array(p*3),3),this._uvAttribute=new _u(new Float32Array(p*2),2),this._indexAttribute=new _u(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,g=-1/0;for(let _=0,S=p;_<S;_++){let P=_*2,O=s.vertices[P+0],x=s.vertices[P+1];O<h&&(h=O),O>m&&(m=O),x<y&&(y=x),x>g&&(g=x)}let b=m-h,w=g-y;for(let _=0,S=p;_<S;_++){let P=_*2,O=s.vertices[P+0],x=s.vertices[P+1],D=(O-h)/b,N=(x-y)/w;this._positionAttribute.setXYZ(_,O,x,0),this._normalAttribute.setXYZ(_,0,0,1),this._uvAttribute.setXY(_,D,N)}for(let _=0,S=f;_<S;_++){let P=_*3,O=s.elements[P+0],x=s.elements[P+1],D=s.elements[P+2];this._indexAttribute.setX(P+0,O),this._indexAttribute.setX(P+1,x),this._indexAttribute.setX(P+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new Da(this._shape,this._curveSegments);return e.userData=Ro(this.userData),e}};var Ea=class extends Cn{constructor(e,r,o=0,i=12,a=3,s=je.ODD){super(e,r,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),u=this._buildBevelVert(r,i,(a+1)%s);o.push(u.topP,l.topN,l.bottomN),o.push(u.topP,l.bottomN,u.bottomP)}}clone(){let e=new Ea(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ro(this.userData),e}};var ur=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:je.ODD},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof He?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new He(r,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new He(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new Da(n.shape,o,{windingRule:a}):s=new Ea(n.shape,t,e,o,r,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as SM,Float32BufferAttribute as wM,MathUtils as uf,Vector2 as Px}from"three";var Ox=Math.PI*2,La=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=uf.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof He?n.shape:new He,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:t,height:e,spikes:r,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,u=n.shape,c=t*.5,d=e*.5,p=AM(u,c,d,o*Math.PI/180,r,i);u.isClosed=!0,u.update();let f;return o===0?(f=new SM,f.setAttribute("position",new wM([],3))):f=ur.create({shape:u,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function AM(n,t,e,r,o,i){if(r>=Ox)return o>30||o%4===0?(PM(n,t,e,i),Math.round(o/4)):_x(n,r,o,t,e,i);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},u=mx({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?_M(n,a.x,a.y,u,o,t,e,i):_x(n,r,o,t,e,i)}function _M(n,t,e,r,o,i,a,s){let l=Math.round(o/r.length);n.addPoint(Ba(t,e));for(let u=0,c=r.length;u<c;u++){let d=r[u],p=n.points[u],f=Ba(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return s>0?Cx(n,i,a,s):n.addPoint(Ba(0,0)),l}function _x(n,t,e,r,o,i){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,u=Math.sin(l)*r,c=Math.cos(l)*o;n.addPoint(Ba(u,c))}return t<Ox?i>0?Cx(n,r,o,i):n.addPoint(Ba(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Tx(n,r,o,i)),1}function PM(n,t,e,r=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;n.addPoint(Pu(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(Pu(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(Pu(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(Pu(o,i-e,o+s,i-e,o-s,i-e)),r>0&&Tx(n,t,e,r)}function Ba(n,t){return new Yr(uf.generateUUID(),new Px(n,t))}function Pu(n,t,e,r,o,i){let a=Ba(n,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,i),a}function Cx(n,t,e,r){Mx(n,t,e,r).forEach(i=>n.addPoint(i))}function Tx(n,t,e,r){let o=Mx(n,t,e,r),i=new He;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Mx(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new Px(o/t,i/e),s=n.points.map(l=>{let u=l.clone();return u.uuid=uf.generateUUID(),u}).reverse();return s.forEach(l=>{l.position.multiply(a);let u=l.controls[0].position.clone().multiply(a),c=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(c),l.controls[1].position.copy(u)}),s}import{BufferGeometry as OM,Float32BufferAttribute as df,Uint32BufferAttribute as CM,Vector3 as Ix}from"three";var Nx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),a=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,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:t,height:e,depth:r,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:u,cornerRadius:c,cornerSegments:d}=n.parameters,p=new ul(!1,t,e,r,o,i,a,s,l,u,c,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},pf=new CM([0,0,0],1),ul=class extends OM{constructor(t=!0,e=1,r=1,o=1,i=1,a=1,s=1,l=1,u=1,c=1,d=1,p=1){if(super(),a===0)return;let f=t&&a===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let h=()=>new Ix,m=new Ix,y=h(),g=h(),b=h(),w,_,S,P,O,x,D,N,T=h(),I=h(),E=h(),B=h(),R=h(),k=h(),V=h(),q=h(),F=r-2*l+.001,U=F/a,H=Math.ceil(s*a),$=H+1,J=F/H,K=-F/2,X=c+1,te=2*Math.PI/c,Y=Math.PI/2/p,ee=.01,Q=Math.min((1-d/100)*l,l-ee),W=l-Q,ue=0,le=2,ne=p*le+le,ce=X*ne/le,ae=ce+X*$,he=Math.max(0,X*($+ne)),[pe,fe,ge]=[3,3,2].map(st=>Array(he*st).fill(0)),me=[],C=i-l;function ie(st,Ke){let kr=Math.PI/2;x=Ke*J,N=2*Math.PI*(x%U)/U+kr,x+=K,D=Math.sin(N)*C,O=Math.cos(N)*C,t?st.set(O,D,x):st.set(O,x,D)}ie(m,-1e-10),ie(y,0),T.copy(m),ie(m,1);let De=m.distanceTo(y),Ge=f?0:W+Q,Ee=De*H+2*Ge,_e=Q,Ct=Ee-Ge;for(let st=0;st<=H;st++){ie(g,st),q.subVectors(g,T).normalize(),T.copy(g),k.copy(g).setComponent(+t+1,0).normalize(),V.crossVectors(q,k).normalize();let Ke=st===0,kr=st===H,Dd=Ke?3*Math.PI/2:Y,Ed=Ke?_e:Ct,Ul=Ke?X:ae,Wn=Ke?0:he-X,mt=q.clone().multiplyScalar(Ke?-W:W).add(g),Bd=q.clone().multiplyScalar(Ke?-1:1).normalize();for(let Or=0;Or<X;Or++){let Ls=Or*te;if(I.addVectors(m.copy(k).multiplyScalar(l*Math.cos(Ls)),y.copy(V).multiplyScalar(l*Math.sin(Ls))),E.copy(I).normalize(),Ke||kr){f||(ue=Wn+Or,[0,1,2].forEach(Qt=>{pe[ue*3+Qt]=mt.getComponent(Qt),fe[ue*3+Qt]=Bd.getComponent(Qt)}),ge[ue*2]=+kr,ge[ue*2+1]=Or/c),y.copy(E).multiplyScalar(Q),b.addVectors(g,y);for(let Qt=0;Qt<p;Qt++){let $n=Qt*Y+Dd;B.addVectors(m.copy(q).multiplyScalar(W*Math.sin($n)),y.copy(E).multiplyScalar(W*Math.cos($n))),R.copy(B).normalize(),y.addVectors(b,B),B.normalize(),ue=Ul+Qt*X+Or,[0,1,2].forEach(Ii=>{pe[ue*3+Ii]=y.getComponent(Ii),fe[ue*3+Ii]=R.getComponent(Ii)});let Hl=+Ke+Math.sin($n);ge[ue*2]=(Ed+W*Hl)/Ee,ge[ue*2+1]=Or/c}}y.addVectors(g,I),ue=ce+st*X+Or,[0,1,2].forEach(Qt=>{pe[ue*3+Qt]=y.getComponent(Qt),fe[ue*3+Qt]=E.getComponent(Qt)}),ge[ue*2]=(Ge+st*De)/Ee,ge[ue*2+1]=Or/c}}let Me=$+2*p+le,At=1,[Tt,qn]=[+f,Me-1];for(let st=Tt;st<=qn-1;st++){let Ke=f&&st===qn-1;for(let kr=0;kr<X-1;kr++)w=st*X+kr,_=w+1,S=(Ke?kr:w)+X,P=(Ke?kr+1:_)+X,st===0?me.push(_,P,S):st===Me-2?me.push(w,_,S):me.push(w,_,S,_,P,S)}this.setIndex(me),this.setAttribute("position",new df(pe,3)),this.setAttribute("normal",new df(fe,3)),this.setAttribute("uv",new df(ge,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,u=6*(e-1)*t.radialSegments,c=e,d=c===e;for(let p=0;p<t.radialSegments;p++)i=c*r+p,a=i+1,s=(d?p:i)+r,l=(d?p+1:a)+r,o[u++]=i,o[u++]=a,o[u++]=s,o[u++]=a,o[u++]=l,o[u++]=s;return o.length=u,pf.array=o,pf.count=o.length,pf}};import{IcosahedronGeometry as TM}from"three";var Dx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new dl(t*.5,i,a):new TM(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},dl=class extends _n{constructor(t=1,e=.2,r=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,t,e,r),this.type=s}static fromJSON(t){return new dl(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as MM,Shape as IM}from"three";var Ex=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},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:t,segments:e,verticalSegments:r}=n.parameters,o=new IM;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new MM(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Fx,BufferGeometryLoader as jM,Vector3 as UM,BoxGeometry as jx}from"three";import{BufferGeometry as zM,Vector2 as yf,Vector3 as kx}from"three";import{Box3 as NM,BufferAttribute as pl,BufferGeometry as Bx,Color as mf,EventDispatcher as DM,Float32BufferAttribute as Ra,Matrix3 as Lx,Matrix4 as Gx,MathUtils as EM,Object3D as BM,Sphere as LM,Vector2 as wr,Vector3 as Wt,Vector4 as RM}from"three";var go=new Gx,ff=new BM,Ou=new Wt,Tn=class extends DM{constructor(){super(),this.uuid=EM.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new Lx().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];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(t){return go.makeRotationX(t),this.applyMatrix4(go),this}rotateY(t){return go.makeRotationY(t),this.applyMatrix4(go),this}rotateZ(t){return go.makeRotationZ(t),this.applyMatrix4(go),this}translate(t,e,r){return go.makeTranslation(t,e,r),this.applyMatrix4(go),this}scale(t,e,r){return go.makeScale(t,e,r),this.applyMatrix4(go),this}lookAt(t){return ff.lookAt(t),ff.updateMatrix(),this.applyMatrix4(ff.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new Wt().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new mf().fromBufferAttribute(s,p));function c(p,f,h,m){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[h].clone()],g=a===void 0?[]:[new Wt().fromBufferAttribute(a,p),new Wt().fromBufferAttribute(a,f),new Wt().fromBufferAttribute(a,h)],b=new Va(p,f,h,g,y,m);e.faces.push(b),l!==void 0&&e.faceVertexUvs[0].push([new wr().fromBufferAttribute(l,p),new wr().fromBufferAttribute(l,f),new wr().fromBufferAttribute(l,h)]),u!==void 0&&e.faceVertexUvs[1].push([new wr().fromBufferAttribute(u,p),new wr().fromBufferAttribute(u,f),new wr().fromBufferAttribute(u,h)])}let d=t.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],h=f.start,m=f.count;for(let y=h,g=h+m;y<g;y+=3)r!==void 0?c(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):c(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let p=0;p<r.count;p+=3)c(r.getX(p),r.getX(p+1),r.getX(p+2));else for(let p=0;p<i.count;p+=3)c(p,p+1,p+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Ou).negate(),this.translate(Ou.x,Ou.y,Ou.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Gx;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new Wt,e=new Wt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new Wt;if(t){let r=new Wt,o=new Wt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],u=this.vertices[s.b],c=this.vertices[s.c];r.subVectors(c,u),o.subVectors(l,u),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],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 t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let 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 t=new Tn;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let u=new Wt,c={a:new Wt,b:new Wt,c:new Wt};i.push(u),a.push(c)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],u=o.vertexNormals[i];l.copy(s.normal),u.a.copy(s.vertexNormals[0]),u.b.copy(s.vertexNormals[1]),u.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new NM),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new LM),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,u=t.faces,c=this.colors,d=t.colors;e!==void 0&&(o=new Lx().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let m=s[p].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let p=0,f=d.length;p<f;p++)c.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let h=u[p],m,y,g=h.vertexNormals,b=h.vertexColors,w=new Va(h.a+i,h.b+i,h.c+i);w.normal.copy(h.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let _=0,S=g.length;_<S;_++)m=g[_].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),w.vertexNormals.push(m);w.color.copy(h.color);for(let _=0,S=b.length;_<S;_++)y=b[_],w.vertexColors.push(y.clone());w.materialIndex=h.materialIndex+r,l.push(w)}for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],b=[];for(let w=0,_=g.length;w<_;w++)b.push(g[w].clone());this.faceVertexUvs[p].push(b)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let l=0,u=this.vertices.length;l<u;l++){let c=this.vertices[l],d=Math.round(c.x*i)+"_"+Math.round(c.y*i)+"_"+Math.round(c.z*i);e[d]===void 0?(e[d]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[d]]}let a=[];for(let l=0,u=this.faces.length;l<u;l++){let c=this.faces[l];c.a=o[c.a],c.b=o[c.b],c.c=o[c.c];let d=[c.a,c.b,c.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let u=a[l];this.faces.splice(u,1);for(let c=0,d=this.faceVertexUvs.length;c<d;c++)this.faceVertexUvs[c].splice(u,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new Wt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,u){return l.materialIndex-u.materialIndex}t.sort(r);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 u=t[l]._id;a&&a.push(o[u]),s&&s.push(i[u])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],i={},a=[],s={},l=[],u={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,g=!1,b=this.faceVertexUvs[0][h]!==void 0,w=m.normal.length()>0,_=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,P=m.vertexColors.length>0,O=0;if(O=c(O,0,0),O=c(O,1,y),O=c(O,2,g),O=c(O,3,b),O=c(O,4,w),O=c(O,5,_),O=c(O,6,S),O=c(O,7,P),r.push(O),r.push(m.a,m.b,m.c),r.push(m.materialIndex),b){let x=this.faceVertexUvs[0][h];r.push(f(x[0]),f(x[1]),f(x[2]))}if(w&&r.push(d(m.normal)),_){let x=m.vertexNormals;r.push(d(x[0]),d(x[1]),d(x[2]))}if(S&&r.push(p(m.color)),P){let x=m.vertexColors;r.push(p(x[0]),p(x[1]),p(x[2]))}}function c(h,m,y){return y?h|1<<m:h&~(1<<m)}function d(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[m]}function p(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return u[m]!==void 0||(u[m]=l.length/2,l.push(h.x,h.y)),u[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new Tn().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let r=t.colors;for(let p=0,f=r.length;p<f;p++)this.colors.push(r[p].clone());let o=t.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],b=[];for(let w=0,_=g.length;w<_;w++){let S=g[w];b.push(S.clone())}this.faceVertexUvs[p].push(b)}}let i=t.morphTargets;for(let p=0,f=i.length;p<f;p++){let h={};if(h.name=i[p].name,i[p].vertices!==void 0){h.vertices=[];for(let m=0,y=i[p].vertices.length;m<y;m++)h.vertices.push(i[p].vertices[m].clone())}if(i[p].normals!==void 0){h.normals=[];for(let m=0,y=i[p].normals.length;m<y;m++)h.normals.push(i[p].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let p=0,f=a.length;p<f;p++){let h={};if(a[p].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[p].vertexNormals.length;m<y;m++){let g=a[p].vertexNormals[m],b={};b.a=g.a.clone(),b.b=g.b.clone(),b.c=g.c.clone(),h.vertexNormals.push(b)}}if(a[p].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[p].faceNormals.length;m<y;m++)h.faceNormals.push(a[p].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[p].clone());let l=t.skinIndices;for(let p=0,f=l.length;p<f;p++)this.skinIndices.push(l[p].clone());let u=t.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let c=t.boundingBox;c!==null&&(this.boundingBox=c.clone());let d=t.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new hf().fromGeometry(this),e=new Bx,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",Cu.call(new pl(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",Cu.call(new pl(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",Rx.call(new pl(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",Vx.call(new pl(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",Vx.call(new pl(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let u=a[s],c=new Ra(u.data.length*3,3);c.name=u.name,i.push(Cu.call(c,u.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new Ra(t.skinIndices.length*4,4);e.setAttribute("skinIndex",zx.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new Ra(t.skinWeights.length*4,4);e.setAttribute("skinWeight",zx.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new Bx,r=t.geometry;if(t.isPoints||t.isLine){let o=new Ra(r.vertices.length*3,3),i=new Ra(r.colors.length*3,3);if(e.setAttribute("position",Cu.call(o,r.vertices)),e.setAttribute("color",Rx.call(i,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new Ra(r.lineDistances.length,1);e.setAttribute("lineDistance",VM.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};Tn.prototype.isGeometry=!0;var hf=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,u;if(l>0){u=[];for(let g=0;g<l;g++)u[g]={name:s[g].name,data:[]};this.morphTargets.position=u}let c=t.morphNormals,d=c.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:c[g].name,data:[]};this.morphTargets.normal=p}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let b=e[g];this.vertices.push(r[b.a],r[b.b],r[b.c]);let w=b.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let S=b.normal;this.normals.push(S,S,S)}let _=b.vertexColors;if(_.length===3)this.colors.push(_[0],_[1],_[2]);else{let S=b.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 wr,new wr,new wr))}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 wr,new wr,new wr))}for(let S=0;S<l;S++){let P=s[S].vertices;u[S].data.push(P[b.a],P[b.b],P[b.c])}for(let S=0;S<d;S++){let P=c[S].vertexNormals[g];p[S].data.push(P.a,P.b,P.c)}m&&this.skinIndices.push(f[b.a],f[b.b],f[b.c]),y&&this.skinWeights.push(h[b.a],h[b.b],h[b.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Va=class{constructor(t,e,r,o,i,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new Wt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new mf,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function VM(n){return this.array.set(n),this}function Rx(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),i=new mf),t[e++]=i.r,t[e++]=i.g,t[e++]=i.b}return this}function Vx(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),i=new wr),t[e++]=i.x,t[e++]=i.y}return this}function Cu(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),i=new Wt),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z}return this}function zx(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),i=new RM),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z,t[e++]=i.w}return this}var GM=["a","b","c"];function kM(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function gf(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function xf(n,t,e,r,o,i){let a=Math.min(n,t),s=Math.max(n,t),l=a+"_"+s,u;if(r.has(l))u=r.get(l);else{let c=e[a],d=e[s];u={a:c,b:d,newEdge:null,faces:[]},r.set(l,u)}u.faces.push(o),i[n].edges.push(u),i[t].edges.push(u)}function FM(n,t,e,r){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)a=t[o],xf(a.a,a.b,n,r,a,e),xf(a.b,a.c,n,r,a,e),xf(a.c,a.a,n,r,a,e)}function Tu(n,t,e,r,o){n.push(new Va(t,e,r,void 0,void 0,o))}function za(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function Mu(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Iu=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof zM?t=new Tn().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new kx,r,o,i,a,s,l=t.vertices,u=t.faces,c=t.faceVertexUvs[0],d=c!==void 0&&c.length>0,p=[],f=new Map;FM(l,u,p,f);let h=[],m,y,g,b,w,_,S;for(let ee of Array.from(f.keys())){for(y=f.get(ee),g=new kx,w=3/8,_=1/8,S=y.faces.length,S!=2&&(w=.5,_=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),a=0;a<S;a++){for(b=y.faces[a],s=0;s<3&&(m=l[kM(b,GM[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(_),g.add(e),y.newEdge=h.length,h.push(g)}let P,O,x,D,N,T,I,E=[];for(o=0,i=l.length;o<i;o++){for(T=l[o],N=p[o].edges,r=N.length,r==3?P=3/16:r>3&&(P=3/(8*r)),O=1-r*Number(P),x=P,r<=2&&(r==2?(O=3/4,x=1/8):r==1||r==0),I=T.clone().multiplyScalar(O),e.set(0,0,0),a=0;a<r;a++)D=N[a],m=D.a!==T?D.a:D.b,e.add(m);e.multiplyScalar(Number(x)),I.add(e),E.push(I)}let B=E.concat(h),R=E.length,k,V,q,F=[],U=[],H,$,J,K,X=new yf,te=new yf,Y=new yf;for(o=0,i=u.length;o<i;o++)b=u[o],k=Number(gf(b.a,b.b,f).newEdge)+R,V=Number(gf(b.b,b.c,f).newEdge)+R,q=Number(gf(b.c,b.a,f).newEdge)+R,Tu(F,k,V,q,b.materialIndex),Tu(F,b.a,k,q,b.materialIndex),Tu(F,b.b,V,k,b.materialIndex),Tu(F,b.c,q,V,b.materialIndex),d&&(H=c[o],$=H[0],J=H[1],K=H[2],X.set(za($.x,J.x),za($.y,J.y)),te.set(za(J.x,K.x),za(J.y,K.y)),Y.set(za($.x,K.x),za($.y,K.y)),Mu(U,X,te,Y),Mu(U,$,X,Y),Mu(U,J,te,X),Mu(U,K,Y,te));t.vertices=B,t.faces=F,d&&(t.faceVertexUvs[0]=U)}};var It=new UM,Ux=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new Fx().copy(new jx(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(It),r={width:It.x,height:It.y,depth:It.z,subdivisions:0}):r=t.parameters;let o={...r,...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:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new Fx().copy(new jx(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(It)):It.set(a.width,a.height,a.depth),(t!==It.x||e!==It.y||r!==It.z)&&i.scale(It.x===0?1:t/It.x,It.y===0?1:e/It.y,It.z===0?1:r/It.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new Iu(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new jM(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(It);let a=100/It.x;Object.assign(i.parameters,{width:100,height:It.y*a,depth:It.z*a}),t(this.build(i))})}};var Nu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof He?n.shape:new He,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:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,u=t*.5,c=e*.5,d=0,p=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,g=d+Math.sin(y)*u,b=p+Math.cos(y)*c;l.addPoint(l.createPoint(g,b))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=ur.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as HM,Float32BufferAttribute as bf,Vector2 as xo,Vector3 as zt}from"three";var Hx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,u=new Sf(t*.5,e,o,i,a,s,l);return u.scale(1,1,r/t),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function fl(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function vf(n,t,e,r,o,i){let a=t.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let u=a.add(s).normalize();i.copy(n).addScaledVector(u,r/Math.sin(l/2))}else{let u=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(u)),i.addScaledVector(s,r/Math.sin(u))}}function qM(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Sf=class extends HM{constructor(t=.5,e=1,r=4,o=1,i=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],u=[],c=[],d=[],p=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,g=(r-2)*Math.PI/r,b=Math.PI-g,w=new zt(0,-f,0),_=new zt(0,f,0),S=new xo(t,-f),P=new xo(m,-f),O=new xo(0,_.y).sub(P),x=new xo(0,_.y).sub(S),D=new xo(O.y,-O.x).normalize(),N=new xo(x.y,-x.x).normalize(),I=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-O.angle())/2)-1e-8;a=Math.min(a,I);let E;{let U=new zt(D.x,D.y,0),H=new zt(Math.cos(y)*U.x,U.y,Math.sin(y)*U.x);E=U.angleTo(H)}let B=a/Math.tan((Math.PI-O.angle())/2),R=a/Math.tan((Math.PI-E)/2),k=new zt;if(!i){u.push(w.x,w.y,w.z),c.push(0,-1,0),d.push(0,0);let U=p++,H=[],$=S.clone(),J=B/Math.cos(Math.PI/r);$.x-=J;for(let K=0;K<r;K++){let X=K/r*Math.PI*2+h,te=new xo(Math.sin(X),Math.cos(X));fl($,te,k),u.push(k.x,k.y,k.z),c.push(0,-1,0),d.push(0,0),H.push(p++)}for(let K=0;K<H.length;K++)l.push(H[K],U,H[(K+1)%H.length])}let V=[];{let U=new zt,H=new zt,$=new zt,J=new zt,K=new zt,X=new zt;for(let te=0;te<r;te++){let Y=te/r*Math.PI*2+h,ee=(te+.5)/r*Math.PI*2+h,Q=(te+1)/r*Math.PI*2+h,W=new xo(Math.sin(Y),Math.cos(Y)),ue=new xo(Math.sin(ee),Math.cos(ee)),le=new xo(Math.sin(Q),Math.cos(Q));fl(S,W,H),fl(S,le,$),fl(D,ue,U),vf(_,H,$,R,R,J),u.push(J.x,J.y,J.z),vf(H,_,$,R,B,K),u.push(K.x,K.y,K.z),vf($,H,_,B,R,X),u.push(X.x,X.y,X.z),c.push(U.x,U.y,U.z),c.push(U.x,U.y,U.z),c.push(U.x,U.y,U.z),d.push(0,0),d.push(0,0),d.push(0,0);let ne=p++,ce=p++,ae=p++;if(l.push(ne,ce,ae),a>0){{let fe=H.clone().add($).multiplyScalar(.5),ge=_.clone().sub(fe).normalize(),C=w.clone().sub(fe).normalize().add(ge).normalize().multiplyScalar(-1),ie=X.clone().sub(K);q(fe,ie,C,O.angle())}let he,pe;{let fe=new zt;fl(N,le,fe);let ge=X.clone().add(J).multiplyScalar(.5);ge=qM(ge,$,_);let me=X.clone().sub(J);[he,pe]=q(ge,me,fe,E,J.y)}{let fe=he,ge=fe.clone().setY(0).normalize(),me=new zt(0,-1,0),C=ge.clone().cross(me);F(fe,ge,me,C)}V.concat(pe);{let fe=O.angle(),ge=Math.PI-fe,me=_.clone();me.y-=a/Math.sin(fe-Math.PI/2);let C=new zt,ie=[];for(let Ge=0;Ge<s;Ge++){let Ee=[],_e=Math.PI/2-ge*Ge/s,Ct=Math.cos(_e),Me=Math.sin(_e),At=ee;for(let Tt=0;Tt<=Ge;Tt++){let qn=Math.cos(At),st=Math.sin(At);U.x=Ct*st,U.y=Me,U.z=Ct*qn,C.copy(me).addScaledVector(U,a),u.push(C.x,C.y,C.z),c.push(U.x,U.y,U.z),d.push(0,0),Ee.push(p++),At+=Math.PI*2/Ge/r}ie.push(Ee)}pe.reverse(),ie.push(pe);let De=ie.length-1;for(let Ge=0;Ge<De;Ge++){let Ee=ie[Ge],_e=ie[Ge+1],Ct=Ee.length-1;l.push(_e[1],Ee[0],_e[0]);for(let Me=1;Me<=Ct;Me++)l.push(Ee[Me],Ee[Me-1],_e[Me]),l.push(_e[Me+1],Ee[Me],_e[Me])}}}}}this.setIndex(l),this.setAttribute("position",new bf(u,3)),this.setAttribute("normal",new bf(c,3)),this.setAttribute("uv",new bf(d,2));function q(U,H,$,J,K){let X=-J/2,te=(Math.PI-J)/2,Y=H.clone().normalize().cross($);U.addScaledVector($,-a/Math.sin(te));let ee=new zt,Q=new zt,W=1,ue=p,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*J;Q.set(0,0,0),Q.addScaledVector(Y,Math.sin(ce)),Q.addScaledVector($,Math.cos(ce));for(let ae=0;ae<=W;ae++){let he=ae/W-.5;if(ee.copy(U),ee.addScaledVector(H,he),ee.addScaledVector(Q,a),K!=null){let pe=Math.max(0,ee.y-K);ee.addScaledVector(H,-pe/H.y)}u.push(ee.x,ee.y,ee.z),c.push(Q.x,Q.y,Q.z),d.push(0,0),ae===0&&le.push(p),p++}}for(let ne=0;ne<s;ne++)for(let ce=0;ce<W;ce++){let ae=ue+ce+(W+1)*ne,he=ae+(W+1),pe=he+1,fe=ae+1;l.push(ae,he,fe),l.push(he,pe,fe)}return[U.clone().addScaledVector(H,.5),le]}function F(U,H,$,J){let K=Math.PI/2,X=x.angle()-K,te=[],Y=new zt,ee=new zt;for(let W=0;W<=s;W++){let ue=[],le=W/s;for(let ne=0;ne<=W;ne++){let ae=((W?ne/W:0)-.5)*b,he=Math.cos(ae),pe=Math.sin(ae),fe=Math.atan(Math.tan(X)*he),ge=(K+fe)*le,me=Math.cos(ge),C=Math.sin(ge);Y.set(0,0,0),Y.addScaledVector(H,C*he),Y.addScaledVector($,me),Y.addScaledVector(J,C*pe),ee.copy(U).addScaledVector(Y,a),u.push(ee.x,ee.y,ee.z),c.push(Y.x,Y.y,Y.z),d.push(0,0),ue.push(p++)}te.push(ue)}let Q=te.length-1;for(let W=0;W<Q;W++){let ue=te[W],le=te[W+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 Ga=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof He?n.shape:new He,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,u={x:e*.5,y:r*.5},c={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(_,S,P){return S>e&&P>r?Math.min(_*e/S,_*r/P):S>e?_*e/S:P>r?_*r/P:_}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let h=c.x,m=d.x,y=d.y,g=c.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.isClosed=!0;let b=!0;for(let _=0,S=t.points.length;_<S;_++)t.points[_].roundness=f[_],_>0&&f[_]!==f[_-1]&&(b=!1);b&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let w=ur.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as WM,Float32BufferAttribute as $M,MathUtils as qx,SphereGeometry as YM}from"three";var Wx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=qx.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:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:u}=n.parameters,c;return u===0?(c=new WM,c.setAttribute("position",new $M([],3))):c=new YM(.5*t,o,i,a,s,l,u*qx.DEG2RAD),c.scale(1,e/t,r/t),Object.assign(c,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as XM}from"three";var $x=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new XM(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as QM,Float32BufferAttribute as wf,Vector3 as KM}from"three";var Yx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new Af(t,e,r,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},Af=class extends QM{constructor(t=1,e=1,r=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],u=[],c=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-c,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(ee=0,Q=0,W=0)=>new KM(ee,Q,W),h=f(),m=f(),[y,g,b]=[e/2,t/2,r/2],w=-g,_=+g,[S,P,O]=[f(w,-y,+b),f(w,-y,-b),f(w,+y,-b)],x=(ee,Q=!1)=>Math.sin(ee-Math.PI/(1+ +Q)),D=(ee,Q=!1)=>Math.cos(ee-Math.PI/(1+ +Q));O.y=Math.sin(o)*e-y;let N=Math.cos(o)*e-b,T=S.z-c;o<=p?(O.z=Math.min(N,T),O.z==T&&(O.y-=(N-T)/Math.tan(p-o))):P.z=Math.min(P.z-N-b,S.z-c),h.subVectors(S,P),m.subVectors(O,P);let I=Math.min(h.length(),m.length())*i/100,E=I*Math.tan(o/2),B=I/Math.cos(o/2),R=h.clone().normalize().add(m.normalize()).setLength(B).add(P);h.set(0,x(o,!0),D(o,!0)),d.push([O,h.clone()]);let k=(Math.PI-o)/a;for(let ee=0;ee<=a;ee++){let Q=p+o+ee*k;h.set(0,Math.sin(Q)*E,Math.cos(Q)*E),h.add(R),m.set(0,x(Q),D(Q)),d.push([h.clone(),m.clone()])}d.push([S,f(0,1,0)]);let V=Math.sin(k/2)*E*2,q=d.length-1,F=d[0][0].distanceTo(d[1][0]),U=d[q-1][0].distanceTo(d[q][0]),H=F+V*a+U;d[0].push(1);for(let ee=0;ee<=a;ee++)d[ee+1].push(1-(F+ee*V)/H);d[q].push(0);let[$,J,K]=d[0],X,te,Y;for(let ee=1;ee<d.length;ee++)[X,te,Y]=d[ee],s.push(w,$.y,$.z,w,X.y,X.z,_,$.y,$.z,_,$.y,$.z,w,X.y,X.z,_,X.y,X.z),l.push(0,J.y,J.z,0,te.y,te.z,0,J.y,J.z,0,J.y,J.z,0,te.y,te.z,0,te.y,te.z),u.push(0,K,0,Y,1,K,1,K,0,Y,1,Y),[$,J,K]=[X,te,Y];this.setAttribute("position",new wf(s,3)),this.setAttribute("normal",new wf(l,3)),this.setAttribute("uv",new wf(u,2))}};var Du=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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 He?n.shape:new He,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:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}=n.parameters,c=n.shape,d=t*.5,p=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*r/100,b=p*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let _=0;_<o;_++){let S=m*_,P=f+Math.sin(S)*d,O=h+Math.cos(S)*p;c.addPoint(c.createPoint(P,O))}}else for(let _=0;_<o;_++){let S=f+Math.cos(y)*d,P=h+Math.sin(y)*p;c.addPoint(c.createPoint(S,P)),y+=m,S=f+Math.cos(y)*g,P=h+Math.sin(y)*b,_<=o,c.addPoint(c.createPoint(S,P)),y+=m}c.isClosed=!0;for(let _=0,S=c.points.length;_<S;_++)c.points[_].roundness=i;c.roundness=i,c.update();let w=ur.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(w,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as ZM}from"three";var Xx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e}=n.parameters,r=new ZM(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as JM,Float32BufferAttribute as eI,MathUtils as tI}from"three";var Qx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),r=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:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,u=rI(t,e,r,t*.5,a,i,0,0,o,s,l);return u.scale(1,e/t,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function rI(n,t,e,r,o,i,a,s,l,u,c){[t,e]=[e,t],a=t/2;let d=tI.clamp(o/360,0,1);if(d===0){let p=new JM;return p.setAttribute("position",new eI([],3)),p}return d===1&&(u=0),new ul(!0,n,t,e,r,d,i,a,s,l,u,c)}import{TorusKnotGeometry as oI}from"three";var Kx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:a}=n.parameters,s=t*.5;s!==e&&(s-=e);let l=new oI(s,e,r,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var Zx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof He?n.shape:new He,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:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,u=t*.5,c=e*.5;s?(l.addPoint(l.createPoint(-u,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))),l.isClosed=!0;for(let p=0,f=l.points.length;p<f;p++)l.points[p].roundness=r;l.roundness=r,l.update();let d=ur.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as eb,Vector3 as Gt,Matrix3 as nI,Matrix4 as si,BufferGeometry as tb,BufferAttribute as ka,MathUtils as Eu}from"three";function Jx(n,t){let e=2*Math.PI;return(n%e+e)%e===(t%e+e)%e}var iI=new si,aI=new si;function sI(n,t,e){let r=[new Gt,new Gt,new Gt],o=[new Gt,new Gt,new Gt];return n.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((i,a)=>{let s=o[a],l=Eu.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new si().makeBasis(r[0],r[1],r[2])}var rb=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=t?.shapeData??La.create({parameters:yp}).userData.shape;return{path:n.path??fa.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:i,extrusion:{...qc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new _f(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new tb,{userData:{...n,type:"PathGeometry"}})}},_f=class extends tb{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)||!Jx(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset: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),u=Math.min(Math.max(2,l-s+1),a+2),c=[],d=[];for(let F=0;F<u;F++){let U=this.inputs.path.isClosed?(F+s)%e.length:Math.min(F+s,e.length-1);c.push(e[U].clone()),d.push(r[U].clone())}let p=(F,U,H)=>{c[F]=c[F].clone().lerp(c[U],H),d[F]=sI(d[F],d[U],H)},f=0,h=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||i===0)&&(f=h,p(0,1,f));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,p(c.length-1,c.length-2,1-m)),o===0){let F=c.length-1;c[F].copy(c[0]),d[F].copy(d[0])}this._applyPathModifiers(d,f,m);let{bevel:g,bevelSides:b}=this.inputs.parameters.extrusion,w=g>0?this.inputs.parameters.extrusion.capType:"flat",_=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(_=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:P,vertices:O}=this._computeShapePoints(_),x=0,D;w==="round"&&(D=new Cn(this.inputs.shapeData,2*g,g,_,b,void 0,!0),x=D.getAttribute("position").count);let N=0,T=0;P.sort((F,U)=>F.start-U.start),P.forEach(F=>{F.verticesStart=N,F.verticesCount=F.continuous.reduce((U,H,$)=>U+($===0||!H?2:1),0),T+=F.verticesCount,N=T});let I=T*u,E,B=0;if(this._isOpenEnded()&&w==="flat"){try{E=Xr({windingRule:je.ODD,elementType:dt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{E=cf}B=E.vertexCount}let R=I+2*B+x*2,k=I+2*B,V={positions:new Float32Array(R*3),normals:new Float32Array(R*3),uvs:new Float32Array(R*2)},q=[];if(P.forEach(F=>{this._extrudeRegion(F,O,d,c,V,q,this._isGeometryClosed()&&!this._isOpenEnded())}),E&&(this._closeEnd(E,I,q,V,d[0],c[0],!1),this._closeEnd(E,I+B,q,V,d[d.length-1],c[c.length-1],!0)),D){V.positions.set(D.getAttribute("position").array,k*3),V.normals.set(D.getAttribute("normal").array,k*3),V.uvs.set(D.getAttribute("uv").array,k*2);let F=q.length;q.push(...D.getIndex().array.map($=>$+k)),k+=x,V.positions.set(D.getAttribute("position").array,k*3),V.normals.set(D.getAttribute("normal").array,k*3),V.uvs.set(D.getAttribute("uv").array,k*2);let U=q.length;q.push(...D.getIndex().array.map($=>$+k)),this.setAttribute("position",new ka(V.positions,3)),this.setAttribute("normal",new ka(V.normals,3)),this.setAttribute("uv",new ka(V.uvs,2)),this.setIndex(q);let H=iI;H.copy(d[d.length-1]).setPosition(c[c.length-1]),this.applyMatrix4OnRange(H,k,R),H.copy(d[0]).setPosition(c[0]).multiply(aI.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,k-x,k),this.reverseIndicesOnRange(F,U)}else this.setAttribute("position",new ka(V.positions,3)),this.setAttribute("normal",new ka(V.normals,3)),this.setAttribute("uv",new ka(V.uvs,2)),this.setIndex(q)}_extractPathPoints(){let r=pu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,i=this.inputs.path.isClosed,a=new Gt,s=new Gt,l=new Gt,u=new Gt,c=new Gt(0,1,0);for(let y=0;y<o;y++){let g=e[y],b;y===0?b=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):b=e[y-1];let w;y===o-1?w=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let _=g.clone().sub(b).normalize(),S=w.clone().sub(g).normalize(),P=_.clone().add(S).normalize();l.copy(P),y===0&&(P.equals(c)||P.clone().negate().equals(c))&&c.set(0,0,1);let O=c.clone().cross(P).normalize(),x=P.clone().cross(O).normalize();c.copy(x),u.copy(O),y===0&&(a.copy(x),s.copy(P));let D=new si().makeBasis(O,x,P);r.push(D)}let d=i?s:l,p=i?a:new Gt(0,1,0),f=d.clone().cross(u).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);d.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let g=new si().makeRotationZ(h*y/r.length);r[y].multiply(g)}return r}_applyPathModifiers(e,r,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:u}=this.inputs.parameters.extrusion,c=new si,d=new si;return e.forEach((p,f)=>{let h=f===0?0:f===i-1?1:(f-r)/(i-(o===0?0:1)-(r+(1-o)));c.makeRotationZ(Eu.lerp(a,a+s,h)*Eu.DEG2RAD);let m=Eu.lerp(l,u,h);d.makeScale(m,m,m),p.multiply(c).multiply(d)}),e}_computeShapePoints(e=12,r=je.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let b=y.length-1;b>=1;b-=2){let w=y[b-1],_=y[b-0];g.push(w,_)}return g}),s;try{s=Xr({windingRule:r,elementType:dt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=cl}let l;try{l=Xr({windingRule:je.ODD,elementType:dt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=lf}if(!s)throw new Error("error generating geometry");let u=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 c=1/0,d=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,b=s.vertices[g+0],w=s.vertices[g+1];b<c&&(c=b),b>d&&(d=b),w<p&&(p=w),w>f&&(f=w)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=u,g=m*2,b=s.elements[g+0],w=s.elements[g+1],_=b+w,S={start:b,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(S);let P=b,O=_-1,x=b+1,D=o.roundedCurves.length;do{let N=P-b,T=s.vertices[O*2+0],I=s.vertices[O*2+1],E=s.vertices[P*2+0],B=s.vertices[P*2+1],R=s.vertices[x*2+0],k=s.vertices[x*2+1],V=E-T,q=B-I,F=Math.sqrt(V*V+q*q);V/=F,q/=F;let U=E-R,H=B-k,$=Math.sqrt(U*U+H*H);U/=$,H/=$,S.normals[N*2+0]=-H,S.normals[N*2+1]=U;let J=s.vertexIndices[P];if(Array.isArray(J))S.continuous[N]=!1;else{let[K,X]=o.getCurveIndexFromVertexId(J-1,!0);if(X>0&&X<1)S.continuous[N]=!0;else{let te=X===1?K+1:K-1;te=(te+D)%D;let Y=X===1?0:1,ee=o.roundedCurves[K].getTangent(X),Q=o.roundedCurves[te].getTangent(Y);S.continuous[N]=ee.dot(Q)>.95}}y&&(S.normals[N*2+0]*=-1,S.normals[N*2+1]*=-1),[O,P,x]=[P,x,x+1],x>=_&&(x-=w)}while(x!==b+1)}return{regions:[i,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,i,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=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,r,o,i,a,s,l){let u=new Gt,c=new Gt,d=new Gt,p=new Gt,f=new eb;o.forEach((m,y)=>{let g=i[y],b=e.verticesStart*o.length+e.verticesCount*y;for(let w=0;w<e.count;w++){let _=(e.start+w)*2;if(u.set(r[_+0],r[_+1],0),d.copy(u).applyMatrix4(m).add(g),e.continuous[w])p.set(e.normals[w*2+0],e.normals[w*2+1],0);else{let S=w===0?(e.start+e.count-1)*2:_-2;c.set(r[S+0],r[S+1],0),p.copy(u).sub(c),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(m).normalize(),f.set(w===0?1:w/e.count,y/(o.length-1)),this._insertVertex(a,b,d,p,f),b++,!e.continuous[w]||w===0){if(w===0)p.set(e.normals[w*2+0],e.normals[w*2+1],0),f.set(0,y/(o.length-1));else{let S=w===e.count-1?e.start*2:_+2;c.set(r[S+0],r[S+1],0),p.copy(c).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,b,d,p,f),b++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),b=0;for(let w=0;w<e.count;w++){(!e.continuous[w]||w===0)&&b++;let _=w===e.count-1?0:b+1,S=y+b,P=y+_,O=g+_,x=g+b;e.isHole?s.push(S,O,P,S,x,O):s.push(S,P,O,S,O,x),b++}}}_closeEnd(e,r,o,i,a,s,l){let u=e.vertexCount,c=new Gt(0,0,l?-1:1).applyMatrix4(a),d=new Gt,p=new eb;for(let h=0;h<u;h++){let m=2*h;d.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,r+h,d,c,p)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,g=f[m+(l?1:2)]+r,b=f[m+(l?2:1)]+r;o.push(y,g,b)}}applyMatrix4OnRange(e,r,o){let i=e.elements,a=new nI().getNormalMatrix(e).elements,s,l,u,c,d=this.attributes.position,p=this.attributes.normal;if(!d||!p)return;let f=d.array,h=p.array,m=d.itemSize;for(let y=r*m,g=o*m;y<g;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],u=f[y+2],c=1/(i[3]*s+i[7]*l+i[11]*u+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*u+i[12])*c,f[y+1]=(i[1]*s+i[5]*l+i[9]*u+i[13])*c,f[y+2]=(i[2]*s+i[6]*l+i[10]*u+i[14])*c,s=h[y+0],l=h[y+1],u=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*u,h[y+1]=a[1]*s+a[4]*l+a[7]*u,h[y+2]=a[2]*s+a[5]*l+a[8]*u}d.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let i=e;i<r;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 ob,BufferGeometry as Pf}from"three";import{mergeBufferGeometries as cI}from"three/examples/jsm/utils/BufferGeometryUtils.js";function nb(){let n=new Pf;return n.setAttribute("position",new ob(new Float32Array([]),3)),n.setIndex(new ob(new Uint16Array([]),1)),n}var uI=nb().attributes,dI=12,pI=1,Fa=class extends Pf{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,uI),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,r).then(()=>{this.update(e),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let r=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!r?.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:u,textTransform:c}=e,d=eu.getDisplayedValue(u),p=c===2?d.toUpperCase():c===3?d.toLowerCase():d,f=fI(e,r,p),{shapes:h,charWidths:m,charCoords:y}=r.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,b=(typeof i=="number"?i:1)*.5,w=h.map(P=>new He().fromShape(P,!0));this.vectorShapes=w;let _=w.map(P=>ur.create({shape:P,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?je.NONZERO:je.ODD,subdivisions:this.isLowResolution&&a>0?pI:dI}})),S=_.length?cI(_):nb();S.translate(-g,b,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([P,O])=>{this.setAttribute(P,O)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=rr(new Pf,Fa.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function fI(n,t,e){let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
16
17
|
`?(r[r.length-1]+=o,o="",i===`
|
|
17
|
-
`&&r.push("")):t.getTextWidth(r[r.length-1]+o,n)>n.width&&(r[r.length-1].length&&r.push(""),t.getTextWidth(r[r.length-1]+o,n)>n.width&&(o.length===1?(r[r.length-1]+=o,o=""):(r[r.length-1]+=o.slice(0,-1),o=o[o.length-1],r.push(""))));return r[r.length-1]+=o,r}import{BufferGeometry as Hp,BufferAttribute as bx,Uint32BufferAttribute as qp,Float32BufferAttribute as Wp,Matrix4 as yM,Vector3 as Xs,Sphere as gM,Box3 as xM,BoxGeometry as bM}from"three";var gx,du=new Promise(n=>{gx=n}),yx=!1;var uu;function xx(){if(yx)return;if(uu)return uu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.0.22/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(u=>u.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});gx(l),yx=!0}return uu=n(),uu}import{BufferGeometryLoader as pM}from"three";var fM=["font"];function Go(n,t,e,r){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let u of a){let c=i;for(let d of u)c=c[d];for(o in c){let d=c[o];Dd(d)&&!fM.includes(o)&&(c[o]=t.getVariable(d,[r.uuid,"geometry",...u,o]),Dd(c[o])&&(c[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let u=Le.createFromState(i.shape,i.width,i.height);s.shape=u}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(u=>u.materialIndex=Math.max(u.materialIndex??0,0)),s.geometry=new pM().parse(i);else if(i.type==="SubdivGeometry"){let u=new pt(i,e);return u.data=n,u}else{if(i.type==="TextGeometry")return new wa(i,t);if(i.type==="UIGeometry")return va.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=Up(s)}catch(u){console.error(u)}if(!l){let u=Le.createFromState(Yi.defaultData(),100,100);s.shape=u,l=Up(s)}return l}import{Matrix4 as hM}from"three";var mM=new hM;function Ys(n,t,e,r){let o=n.position.array,i=n.normal.array,a=mM.makeScale(t,e,r).invert().elements,s,l,u;for(var c=0,d=o.length;c<d;c+=3)o[c]*=t,o[c+1]*=e,o[c+2]*=r,s=i[c],l=i[c+1],u=i[c+2],i[c]=a[0]*s+a[4]*l+a[8]*u,i[c+1]=a[1]*s+a[5]*l+a[9]*u,i[c+2]=a[2]*s+a[6]*l+a[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var pu=new xM,_a=new Xs,me;du.then(n=>{me=n});var vx=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Sx=new Uint32Array([0,1,2,3]),wx=new Uint8Array([4]),pt=class extends Hp{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,i=an.div(r,o);this.subdividedGeometry&&Ys(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ys(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(_a.fromArray(i));let s=_a.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=pt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new bM(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(pt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new gM,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;pu.setFromBufferAttribute(r),pu.getCenter(o),e.boundingSphere.radius=o.distanceTo(pu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),pu.getSize(_a);let i={width:_a.x,height:_a.y,depth:_a.z};return this.userData.parameters=i,i}static build(e,r,o,i){let a,s,l,u=e?.phongAngle??35;o===!1&&(u=-1),r&&(me.free_bvh(r),me.free_subdivision_surface(r));try{a=pt.allocate(e,i)}catch(c){console.error(c,e),a=pt.allocate({positionWASM:vx,indexWASM:Sx,verticesPerFaceWASM:wx},i)}if(me.set_destination_refinement_level(a,0),s=pt.buildLevel(a,!0,u),e.subdivisions>0)try{me.set_destination_refinement_level(a,e.subdivisions),l=pt.buildLevel(a,!1,u)}catch{try{me.set_destination_refinement_level(a,e.subdivisions-1),l=pt.buildLevel(a,!1,u)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?r.geometry:Go(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,u,c;({positions:s,triIndices:c}=Qp(i.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:l,verticesPerFace:u}=Kp(s,c,i,d),{positions:s,indices:l,verticesPerFace:u}}static allocate(e,r){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=vx,i=Sx,a=wx);let u=o.length,c=i.length,d=a.length,p=o.length+s.length+l.length,f=i.length+a.length,h=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=me._malloc(h),b=new Float32Array(me.HEAPF32.buffer,g,p),S=new Uint32Array(me.HEAPU32.buffer,g+m,f);b.set(o,0),b.set(s,o.length),b.set(l,o.length+s.length),S.set(i,0),S.set(a,i.length);let w;e?.scaleBaked?.some(_=>_!==1)&&(w=new yM().makeScale(...e.scaleBaked)),r&&(w?w.premultiply(r):w=r);let v=w?me.alloc_subdivision_surface2(g,u,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):me.alloc_subdivision_surface(g,u,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return me._free(g),v}static buildLevel(e,r,o,i,a){let s=a?me.get_mesh_data2(e,r?me.Level.CONTROL:me.Level.REFINED,o,a.elements):me.get_mesh_data(e,r?me.Level.CONTROL:me.Level.REFINED,o),l=8,u=me.HEAPU32.subarray(s>>2,(s>>2)+l),c=u.subarray(4,4+4),d=0,p=me.HEAPU32[u[d]>>2],f=me.HEAPF32.subarray(p>>2,(p>>2)+c[d]);d++;let h=me.HEAPU32[u[d]>>2],m=me.HEAPF32.subarray(h>>2,(h>>2)+c[d]);d++;let y=me.HEAPU32[u[d]>>2],g=me.HEAPU32.subarray(y>>2,(y>>2)+c[d]);d++;let b=me.HEAPU32[u[d]>>2],S=me.HEAPU32.subarray(b>>2,(b>>2)+c[d]);if(d++,i===void 0){let w=new Hp;if(w.setIndex(new qp(S,1)),w.setAttribute("position",new Wp(f,3)),w.setAttribute("normal",new Wp(m,3)),r){w.setAttribute("faceMap",new qp(g,1));let v=new Float32Array(m.length/3*4).fill(0);w.setAttribute("color",new bx(v,4))}return me.free_mesh_data(s),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,me.free_mesh_data(s)}static freeSubdivPointer(e){me.free_bvh(e),me.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let i=me.get_wireframe_data_for_base_level(e),a=4,s=me.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),u=0,c=me.HEAPU32[s[u]>>2],d=me.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let p=me.HEAPU32[s[u]>>2],f=me.HEAPU32.subarray(p>>2,(p>>2)+l[u]);if(r===void 0){let h=new Hp;h.setAttribute("position",new Wp(d,3));let m=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new bx(m,3)),h.setIndex(new qp(f,1)),me.free_wireframe_data_for_base_level(i),h}r.getAttribute("position").copyArray(d),r.attributes.position.needsUpdate=!0,me.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,r,o){let i=r===0;i||me.set_destination_refinement_level(e,r);let a=o?me.get_topological_data2(e,i?me.Level.CONTROL:me.Level.REFINED,o.elements):me.get_topological_data(e,i?me.Level.CONTROL:me.Level.REFINED),s=6,l=me.HEAPU32.subarray(a>>2,(a>>2)+s),u=l.subarray(3,3+3),c=0,d=me.HEAPU32[l[c]>>2],p=new Float32Array(me.HEAPF32.subarray(d>>2,(d>>2)+u[c]));c++;let f=me.HEAPU32[l[c]>>2],h=new Uint32Array(me.HEAPU32.subarray(f>>2,(f>>2)+u[c]));c++;let m=me.HEAPU32[l[c]>>2],y=new Uint8Array(me.HEAPU32.subarray(m>>2,(m>>2)+u[c]));return me.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var _x=["getX","getY","getZ"];function Qp(n,t){let e={},r=t?t.count:n.count,o=0,i=[],a=[],s=1e4;for(let u=0;u<r;u++){let c=t?t.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[_x[p]](c)*s)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)a.push(n[_x[p]](c));e[d]=o,i.push(o),o++}}let l=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||l.push(i[u],i[u+1],i[u+2]);return{positions:a,triIndices:l}}var fu=new Xs,$p=new Xs,Yp=new Xs,Xp=new Xs;function Kp(n,t,e,r){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([]),u=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&u<=24&&u%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/u;l=l.filter((f,h)=>Math.floor(h/2)%p===0)}let c=0;for(let p=0;p<l.length;p+=2)c+=(l[p]-l[(p===0?l.length:p)-2])*(l[p+1]+l[(p===0?l.length:p)-1]);n.length=0;let d=0;if(c<0)for(let p=0;p<l.length;p+=2)n.push(l[p],l[p+1],0),o.push(d++);else for(let p=l.length-2;p>=0;p-=2)n.push(l[p],l[p+1],0),o.push(d++);return i.push(d),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[t[s]*3+2]===a||n[t[s]*3+2]===0)&&l++,(n[t[s+1]*3+2]===a||n[t[s+1]*3+2]===0)&&l++,(n[t[s+2]*3+2]===a||n[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){fu.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),$p.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Yp.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Xp.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),$p.sub(fu).normalize(),Yp.sub(fu).normalize(),Xp.sub(fu).normalize();let l=$p.cross(Yp).dot(Xp);Math.abs(l)>.005||r&&r.some((u,c)=>c%2===1?!1:s>=r[c]&&s<r[c+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],u=[],c=0;for(let d=0,p=0;d<n.length;d+=3,p++)n[d+2]===0&&(l.push(p),c++),n[d+2]===a&&u.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=u[0];u[0]=u[1],u[1]=d}l.reverse(),o.push(...l,...u),i.push(c,c)}return{indices:o,verticesPerFace:i}}var br={};YS(br,{calcBoolean:()=>AM,calcBooleanTopological:()=>_M,freeMeshSet:()=>TM,getMeshSet:()=>PM,hasOpenEdges:()=>OM,transformMeshSet:()=>CM});var vM,Ax=new Promise(n=>{vM=n});import{Float32BufferAttribute as Px,Sphere as SM}from"three";var Ae,Aa;Ax.then(n=>Ae=n);function wM(n,t,e){let r,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=Qp(n.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:u}=Kp(i,a,n);s=u.length,r=[];for(let c=0,d=0;c<s;c++){r.push(u[c]);for(let p=0;p<u[c];p++)r.push(l[d++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let u=0,c=0;c<r.length;)r[c++]=3,s++,r[c++]=a[u++],r[c++]=a[u++],r[c++]=a[u++]}return{positions:i,faceIndices:r,nFaces:s}}function Ox(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=Ae._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Ae.HEAPU32.buffer,i,t):new Float32Array(Ae.HEAPF32.buffer,i,t)).set(n,0),i}function Cx(n){switch(n){case 0:return Ae.OP.UNION;case 1:return Ae.OP.INTERSECTION;case 2:return Ae.OP.A_MINUS_B;case 3:return Ae.OP.B_MINUS_A;case 4:return Ae.OP.SYMMETRIC_DIFFERENCE;case 5:return Ae.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function _M(n,t){Aa===void 0&&(Aa=Ae.init_csg());let e=Ox(n),r=Ae.csg_calc_topological(Aa,e,n.length,Cx(t));Ae._free(e);let o=6,i=Ae.HEAPU32.subarray(r>>2,(r>>2)+o),a=i.subarray(3,3+3),s=0,l=Ae.HEAPU32[i[s]>>2],u=new Float32Array(Ae.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=Ae.HEAPU32[i[s]>>2],d=new Uint32Array(Ae.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let p=Ae.HEAPU32[i[s]>>2],f=new Uint8Array(Ae.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return Ae.free_mesh_data(r),{positions:u,indices:d,verticesPerFace:f}}function AM(n,t,e,r){Aa===void 0&&(Aa=Ae.init_csg());let o=Ox(n),i=Ae.csg_calc(Aa,o,n.length,r,Cx(t));Ae._free(o);let a=5,s=Ae.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),u=0,c=Ae.HEAPU32[s[u]>>2],d=Ae.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let p=Ae.HEAPU32[s[u]>>2],f=Ae.HEAPF32.subarray(p>>2,(p>>2)+l[u]);u++;let h=l[u];e.setAttribute("position",new Px(d,3)),e.setAttribute("normal",new Px(f,3));let m=Ae.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new SM),e.boundingSphere.radius=-1,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ae.free_mesh_data(i),h}function PM(n,t,e){if(Ae===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((b,S)=>b+S,0)+i);for(let b=0,S=0,w=0;b<g.verticesPerFace.length;b++){o[w++]=g.verticesPerFace[b];for(let v=0;v<g.verticesPerFace[b];v++)o[w++]=g.indices[S++]}}else({positions:r,faceIndices:o,nFaces:i}=wM(n,t,e));let a=r.length,s=o.length,l=r.length,u=o.length,c=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=l*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=Ae._malloc(c),h=new Float32Array(Ae.HEAPF32.buffer,f,l),m=new Uint32Array(Ae.HEAPU32.buffer,f+d,u);h.set(r,0),m.set(o,0);let y=Ae.get_csg_mesh(f,a,f+d,s,i);return Ae._free(f),y}function OM(n){return Ae.has_open_edges(n)}function CM(n,t){Ae.transform_csg_mesh(n,t.elements)}function TM(n){Ae.free_csg_mesh(n)}var MM={ConeGeometry:a0,CubeGeometry:s0,CylinderGeometry:i0,DodecahedronGeometry:l0,EllipseGeometry:ya,HelixGeometry:j0,IcosahedronGeometry:U0,LatheGeometry:H0,NonParametricGeometry:ex,PolygonGeometry:su,PyramidGeometry:tx,RectangleGeometry:va,SphereGeometry:ox,PlaneGeometry:nx,BackdropGeometry:ix,StarGeometry:lu,TextFrameGeometry:ax,TorusGeometry:sx,TorusKnotGeometry:lx,TriangleGeometry:cx,PathGeometry:fx,VectorGeometry:Jt},Up=n=>MM[n.type].create(n);function Pa(n){return n!==null&&"booleanOp"in n}var Oa=class extends la(NM){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new IM}updateVisible(e){super.updateVisible(e),this.visible=!Pa(this.parent)&&this.visible,Pa(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(),Pa(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Oa&&(e.freeBooleanPointer(),Pa(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Pa(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Pa(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var hu=new DM;function Qs(n,t=0,e=n.count,r,o){let i=1/0,a=1/0,s=1/0,l=-1/0,u=-1/0,c=-1/0;for(let d=t;d<e;d++){let p=n.getX(d),f=n.getY(d),h=n.getZ(d);p<i&&(i=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>u&&(u=f),h>c&&(c=h)}hu.min.set(i,a,s),hu.max.set(l,u,c),hu.getCenter(r),hu.getSize(o).multiplyScalar(.5)}var LM=new EM,RM=new BM,bt=class extends Oa{constructor(t,e){super(LM,RM),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?Qs(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as XI,Matrix4 as QI,Sphere as hb,Vector3 as KI}from"three";import{BufferAttribute as WI,Float32BufferAttribute as fb,MathUtils as Of,Vector3 as Cf}from"three";import{ShaderMaterial as NI}from"three";import{CubeReflectionMapping as YM,CubeRefractionMapping as XM,CubeUVReflectionMapping as QM,LinearEncoding as Vx,sRGBEncoding as KM}from"three";var Ks=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as VM}from"three";var Mt=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=VM.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,a){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof Mt&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var Zp=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},vt=new Zp;import{Vector2 as Tx}from"three";import{MathUtils as zM}from"three";var ae=class extends Mt{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=zM.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,l,r);{u=super.generate(e,r,o,s.output,i);let c=this.generate(e,l,o);return e.addNodeCode(u+" = "+c+";"),e.format(u,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var Fe=class extends ae{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,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,r,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,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}};var rt=class extends Fe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Tx?e:new Tx(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as Mx}from"three";var Rt=class extends Fe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Mx?e:new Mx(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};import{Color as GM}from"three";var St=class extends GM{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,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,r="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,r);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,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var er=class extends Fe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof St?e:new St(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var FM=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Ix=/[a-z_0-9]+/gi,Q=class extends ae{constructor(e,r,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,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,a){let s,l=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let c=[];for(;s=Ix.exec(this.src);)c.push(s);for(let d=0;d<c.length;d++){let p=c[d],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&vt.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=vt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||vt.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&u[p.index+l-1]!=="."&&(u=u.substring(0,p.index+l)+m+u.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&vt.contains(m)&&e.include(vt.get(m))}return r==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=FM.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Ix);if(s){let l=0;for(;l<s.length;){let u=s[l++],c;u==="in"||u==="out"||u==="inout"?c=s[l++]:(c=u,u="");let d=s[l++];this.inputs.push({name:d,type:c,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var kM=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Jp=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Jp.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,a){this.src=e||"";let s,l,u="",c=kM.exec(e);this.useDefine=a??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],s=c[2],u=c[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=u}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,a){return e.format(this.name,this.getType(e),r)}},Be=Jp;Be.PI="PI",Be.PI2="PI2",Be.RECIPROCAL_PI="RECIPROCAL_PI",Be.RECIPROCAL_PI2="RECIPROCAL_PI2",Be.LOG2="LOG2",Be.EPSILON="EPSILON";var jM=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
18
|
-
)*?)}`,"gim"),
|
|
19
|
-
`)),sRGBToLinear:new
|
|
20
|
-
`)),LinearTosRGB:new
|
|
21
|
-
`))},
|
|
18
|
+
`&&r.push("")):t.getTextWidth(r[r.length-1]+o,n)>n.width&&(r[r.length-1].length&&r.push(""),t.getTextWidth(r[r.length-1]+o,n)>n.width&&(o.length===1?(r[r.length-1]+=o,o=""):(r[r.length-1]+=o.slice(0,-1),o=o[o.length-1],r.push(""))));return r[r.length-1]+=o,r}import{BufferGeometry as Cf,BufferAttribute as lb,Uint32BufferAttribute as Tf,Float32BufferAttribute as Mf,Matrix4 as xI,Vector3 as ml,Sphere as bI,Box3 as vI,BoxGeometry as SI}from"three";var ab,Lu=new Promise(n=>{ab=n}),ib=!1;var Bu;function sb(){if(ib)return;if(Bu)return Bu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.0.23/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(u=>u.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});ab(l),ib=!0}return Bu=n(),Bu}import{BufferGeometryLoader as hI}from"three";var mI=["font"];function Xo(n,t,e,r){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let u of a){let c=i;for(let d of u)c=c[d];for(o in c){let d=c[o];fp(d)&&!mI.includes(o)&&(c[o]=t.getVariable(d,[r.uuid,"geometry",...u,o]),fp(c[o])&&(c[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let u=He.createFromState(i.shape,i.width,i.height);s.shape=u}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(u=>u.materialIndex=Math.max(u.materialIndex??0,0)),s.geometry=new hI().parse(i);else if(i.type==="SubdivGeometry"){let u=new wt(i,e);return u.data=n,u}else{if(i.type==="TextGeometry")return new Fa(i,t);if(i.type==="UIGeometry")return Ga.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=Of(s)}catch(u){console.error(u)}if(!l){let u=He.createFromState(pa.defaultData(),100,100);s.shape=u,l=Of(s)}return l}import{Matrix4 as yI}from"three";var gI=new yI;function hl(n,t,e,r){let o=n.position.array,i=n.normal.array,a=gI.makeScale(t,e,r).invert().elements,s,l,u;for(var c=0,d=o.length;c<d;c+=3)o[c]*=t,o[c+1]*=e,o[c+2]*=r,s=i[c],l=i[c+1],u=i[c+2],i[c]=a[0]*s+a[4]*l+a[8]*u,i[c+1]=a[1]*s+a[5]*l+a[9]*u,i[c+2]=a[2]*s+a[6]*l+a[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Ru=new vI,ja=new ml,we;Lu.then(n=>{we=n});var cb=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),ub=new Uint32Array([0,1,2,3]),db=new Uint8Array([4]),wt=class extends Cf{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,i=yn.div(r,o);this.subdividedGeometry&&hl(this.subdividedGeometry.attributes,...i),this.originalGeometry&&hl(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(ja.fromArray(i));let s=ja.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=wt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new SI(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(wt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new bI,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Ru.setFromBufferAttribute(r),Ru.getCenter(o),e.boundingSphere.radius=o.distanceTo(Ru.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ru.getSize(ja);let i={width:ja.x,height:ja.y,depth:ja.z};return this.userData.parameters=i,i}static build(e,r,o,i){let a,s,l,u=e?.phongAngle??35;o===!1&&(u=-1),r&&(we.free_bvh(r),we.free_subdivision_surface(r));try{a=wt.allocate(e,i)}catch(c){console.error(c,e),a=wt.allocate({positionWASM:cb,indexWASM:ub,verticesPerFaceWASM:db},i)}if(we.set_destination_refinement_level(a,0),s=wt.buildLevel(a,!0,u),e.subdivisions>0)try{we.set_destination_refinement_level(a,e.subdivisions),l=wt.buildLevel(a,!1,u)}catch{try{we.set_destination_refinement_level(a,e.subdivisions-1),l=wt.buildLevel(a,!1,u)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?r.geometry:Xo(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,u,c;({positions:s,triIndices:c}=Ef(i.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:l,verticesPerFace:u}=Bf(s,c,i,d),{positions:s,indices:l,verticesPerFace:u}}static allocate(e,r){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=cb,i=ub,a=db);let u=o.length,c=i.length,d=a.length,p=o.length+s.length+l.length,f=i.length+a.length,h=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=we._malloc(h),b=new Float32Array(we.HEAPF32.buffer,g,p),w=new Uint32Array(we.HEAPU32.buffer,g+m,f);b.set(o,0),b.set(s,o.length),b.set(l,o.length+s.length),w.set(i,0),w.set(a,i.length);let _;e?.scaleBaked?.some(P=>P!==1)&&(_=new xI().makeScale(...e.scaleBaked)),r&&(_?_.premultiply(r):_=r);let S=_?we.alloc_subdivision_surface2(g,u,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,d,_.elements):we.alloc_subdivision_surface(g,u,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return we._free(g),S}static buildLevel(e,r,o,i,a){let s=a?we.get_mesh_data2(e,r?we.Level.CONTROL:we.Level.REFINED,o,a.elements):we.get_mesh_data(e,r?we.Level.CONTROL:we.Level.REFINED,o),l=8,u=we.HEAPU32.subarray(s>>2,(s>>2)+l),c=u.subarray(4,4+4),d=0,p=we.HEAPU32[u[d]>>2],f=we.HEAPF32.subarray(p>>2,(p>>2)+c[d]);d++;let h=we.HEAPU32[u[d]>>2],m=we.HEAPF32.subarray(h>>2,(h>>2)+c[d]);d++;let y=we.HEAPU32[u[d]>>2],g=we.HEAPU32.subarray(y>>2,(y>>2)+c[d]);d++;let b=we.HEAPU32[u[d]>>2],w=we.HEAPU32.subarray(b>>2,(b>>2)+c[d]);if(d++,i===void 0){let _=new Cf;if(_.setIndex(new Tf(w,1)),_.setAttribute("position",new Mf(f,3)),_.setAttribute("normal",new Mf(m,3)),r){_.setAttribute("faceMap",new Tf(g,1));let S=new Float32Array(m.length/3*4).fill(0);_.setAttribute("color",new lb(S,4))}return we.free_mesh_data(s),_.userData.type="SubdivGeometry",_}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,we.free_mesh_data(s)}static freeSubdivPointer(e){we.free_bvh(e),we.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let i=we.get_wireframe_data_for_base_level(e),a=4,s=we.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),u=0,c=we.HEAPU32[s[u]>>2],d=we.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let p=we.HEAPU32[s[u]>>2],f=we.HEAPU32.subarray(p>>2,(p>>2)+l[u]);if(r===void 0){let h=new Cf;h.setAttribute("position",new Mf(d,3));let m=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new lb(m,3)),h.setIndex(new Tf(f,1)),we.free_wireframe_data_for_base_level(i),h}r.getAttribute("position").copyArray(d),r.attributes.position.needsUpdate=!0,we.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,r,o){let i=r===0;i||we.set_destination_refinement_level(e,r);let a=o?we.get_topological_data2(e,i?we.Level.CONTROL:we.Level.REFINED,o.elements):we.get_topological_data(e,i?we.Level.CONTROL:we.Level.REFINED),s=6,l=we.HEAPU32.subarray(a>>2,(a>>2)+s),u=l.subarray(3,3+3),c=0,d=we.HEAPU32[l[c]>>2],p=new Float32Array(we.HEAPF32.subarray(d>>2,(d>>2)+u[c]));c++;let f=we.HEAPU32[l[c]>>2],h=new Uint32Array(we.HEAPU32.subarray(f>>2,(f>>2)+u[c]));c++;let m=we.HEAPU32[l[c]>>2],y=new Uint8Array(we.HEAPU32.subarray(m>>2,(m>>2)+u[c]));return we.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var pb=["getX","getY","getZ"];function Ef(n,t){let e={},r=t?t.count:n.count,o=0,i=[],a=[],s=1e4;for(let u=0;u<r;u++){let c=t?t.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[pb[p]](c)*s)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)a.push(n[pb[p]](c));e[d]=o,i.push(o),o++}}let l=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||l.push(i[u],i[u+1],i[u+2]);return{positions:a,triIndices:l}}var Vu=new ml,If=new ml,Nf=new ml,Df=new ml;function Bf(n,t,e,r){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([]),u=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&u<=24&&u%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/u;l=l.filter((f,h)=>Math.floor(h/2)%p===0)}let c=0;for(let p=0;p<l.length;p+=2)c+=(l[p]-l[(p===0?l.length:p)-2])*(l[p+1]+l[(p===0?l.length:p)-1]);n.length=0;let d=0;if(c<0)for(let p=0;p<l.length;p+=2)n.push(l[p],l[p+1],0),o.push(d++);else for(let p=l.length-2;p>=0;p-=2)n.push(l[p],l[p+1],0),o.push(d++);return i.push(d),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[t[s]*3+2]===a||n[t[s]*3+2]===0)&&l++,(n[t[s+1]*3+2]===a||n[t[s+1]*3+2]===0)&&l++,(n[t[s+2]*3+2]===a||n[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){Vu.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),If.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Nf.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Df.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),If.sub(Vu).normalize(),Nf.sub(Vu).normalize(),Df.sub(Vu).normalize();let l=If.cross(Nf).dot(Df);Math.abs(l)>.005||r&&r.some((u,c)=>c%2===1?!1:s>=r[c]&&s<r[c+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],u=[],c=0;for(let d=0,p=0;d<n.length;d+=3,p++)n[d+2]===0&&(l.push(p),c++),n[d+2]===a&&u.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=u[0];u[0]=u[1],u[1]=d}l.reverse(),o.push(...l,...u),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Nr={};Q1(Nr,{calcBoolean:()=>OI,calcBooleanTopological:()=>PI,freeMeshSet:()=>II,getMeshSet:()=>CI,hasOpenEdges:()=>TI,transformMeshSet:()=>MI});var wI,fb=new Promise(n=>{wI=n});import{Float32BufferAttribute as hb,Sphere as AI}from"three";var Ne,Ua;fb.then(n=>Ne=n);function _I(n,t,e){let r,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=Ef(n.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:u}=Bf(i,a,n);s=u.length,r=[];for(let c=0,d=0;c<s;c++){r.push(u[c]);for(let p=0;p<u[c];p++)r.push(l[d++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let u=0,c=0;c<r.length;)r[c++]=3,s++,r[c++]=a[u++],r[c++]=a[u++],r[c++]=a[u++]}return{positions:i,faceIndices:r,nFaces:s}}function mb(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=Ne._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Ne.HEAPU32.buffer,i,t):new Float32Array(Ne.HEAPF32.buffer,i,t)).set(n,0),i}function yb(n){switch(n){case 0:return Ne.OP.UNION;case 1:return Ne.OP.INTERSECTION;case 2:return Ne.OP.A_MINUS_B;case 3:return Ne.OP.B_MINUS_A;case 4:return Ne.OP.SYMMETRIC_DIFFERENCE;case 5:return Ne.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function PI(n,t){Ua===void 0&&(Ua=Ne.init_csg());let e=mb(n),r=Ne.csg_calc_topological(Ua,e,n.length,yb(t));Ne._free(e);let o=6,i=Ne.HEAPU32.subarray(r>>2,(r>>2)+o),a=i.subarray(3,3+3),s=0,l=Ne.HEAPU32[i[s]>>2],u=new Float32Array(Ne.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=Ne.HEAPU32[i[s]>>2],d=new Uint32Array(Ne.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let p=Ne.HEAPU32[i[s]>>2],f=new Uint8Array(Ne.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return Ne.free_mesh_data(r),{positions:u,indices:d,verticesPerFace:f}}function OI(n,t,e,r){Ua===void 0&&(Ua=Ne.init_csg());let o=mb(n),i=Ne.csg_calc(Ua,o,n.length,r,yb(t));Ne._free(o);let a=5,s=Ne.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),u=0,c=Ne.HEAPU32[s[u]>>2],d=Ne.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let p=Ne.HEAPU32[s[u]>>2],f=Ne.HEAPF32.subarray(p>>2,(p>>2)+l[u]);u++;let h=l[u];e.setAttribute("position",new hb(d,3)),e.setAttribute("normal",new hb(f,3));let m=Ne.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new AI),e.boundingSphere.radius=-1,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ne.free_mesh_data(i),h}function CI(n,t,e){if(Ne===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((b,w)=>b+w,0)+i);for(let b=0,w=0,_=0;b<g.verticesPerFace.length;b++){o[_++]=g.verticesPerFace[b];for(let S=0;S<g.verticesPerFace[b];S++)o[_++]=g.indices[w++]}}else({positions:r,faceIndices:o,nFaces:i}=_I(n,t,e));let a=r.length,s=o.length,l=r.length,u=o.length,c=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=l*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=Ne._malloc(c),h=new Float32Array(Ne.HEAPF32.buffer,f,l),m=new Uint32Array(Ne.HEAPU32.buffer,f+d,u);h.set(r,0),m.set(o,0);let y=Ne.get_csg_mesh(f,a,f+d,s,i);return Ne._free(f),y}function TI(n){return Ne.has_open_edges(n)}function MI(n,t){Ne.transform_csg_mesh(n,t.elements)}function II(n){Ne.free_csg_mesh(n)}var NI={ConeGeometry:X0,CubeGeometry:Q0,CylinderGeometry:Y0,DodecahedronGeometry:K0,EllipseGeometry:La,HelixGeometry:Nx,IcosahedronGeometry:Dx,LatheGeometry:Ex,NonParametricGeometry:Ux,PolygonGeometry:Nu,PyramidGeometry:Hx,RectangleGeometry:Ga,SphereGeometry:Wx,PlaneGeometry:$x,BackdropGeometry:Yx,StarGeometry:Du,TextFrameGeometry:Xx,TorusGeometry:Qx,TorusKnotGeometry:Kx,TriangleGeometry:Zx,PathGeometry:rb,VectorGeometry:ur},Of=n=>NI[n.type].create(n);function Ha(n){return n!==null&&"booleanOp"in n}var qa=class extends Ca(EI){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new DI}updateVisible(e){super.updateVisible(e),this.visible=!Ha(this.parent)&&this.visible,Ha(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Nr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ha(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof qa&&(e.freeBooleanPointer(),Ha(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Ha(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ha(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var zu=new BI;function yl(n,t=0,e=n.count,r,o){let i=1/0,a=1/0,s=1/0,l=-1/0,u=-1/0,c=-1/0;for(let d=t;d<e;d++){let p=n.getX(d),f=n.getY(d),h=n.getZ(d);p<i&&(i=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>u&&(u=f),h>c&&(c=h)}zu.min.set(i,a,s),zu.max.set(l,u,c),zu.getCenter(r),zu.getSize(o).multiplyScalar(.5)}var VI=new LI,zI=new RI,Nt=class extends qa{constructor(t,e){super(VI,zI),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?yl(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as K3,Matrix4 as Z3,Sphere as ov,Vector3 as J3}from"three";import{BufferAttribute as Y3,Float32BufferAttribute as rv,MathUtils as lh,Vector3 as ch}from"three";import{ShaderMaterial as E3}from"three";import{CubeReflectionMapping as QI,CubeRefractionMapping as KI,CubeUVReflectionMapping as ZI,LinearEncoding as Ob,sRGBEncoding as JI}from"three";var gl=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as GI}from"three";var kt=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=GI.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,a){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof kt&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var Lf=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},Dt=new Lf;import{Vector2 as gb}from"three";import{MathUtils as kI}from"three";var ye=class extends kt{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=kI.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,l,r);{u=super.generate(e,r,o,s.output,i);let c=this.generate(e,l,o);return e.addNodeCode(u+" = "+c+";"),e.format(u,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var Xe=class extends ye{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,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,r,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,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}};var pt=class extends Xe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof gb?e:new gb(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as xb}from"three";var $t=class extends Xe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof xb?e:new xb(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};import{Color as FI}from"three";var Et=class extends FI{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,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,r="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,r);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,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var dr=class extends Xe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Et?e:new Et(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var jI=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,bb=/[a-z_0-9]+/gi,re=class extends ye{constructor(e,r,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,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,a){let s,l=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let c=[];for(;s=bb.exec(this.src);)c.push(s);for(let d=0;d<c.length;d++){let p=c[d],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&Dt.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=Dt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||Dt.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&u[p.index+l-1]!=="."&&(u=u.substring(0,p.index+l)+m+u.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&Dt.contains(m)&&e.include(Dt.get(m))}return r==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=jI.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(bb);if(s){let l=0;for(;l<s.length;){let u=s[l++],c;u==="in"||u==="out"||u==="inout"?c=s[l++]:(c=u,u="");let d=s[l++];this.inputs.push({name:d,type:c,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var UI=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Rf=class extends ye{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Rf.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,a){this.src=e||"";let s,l,u="",c=UI.exec(e);this.useDefine=a??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],s=c[2],u=c[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=u}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,a){return e.format(this.name,this.getType(e),r)}},Ue=Rf;Ue.PI="PI",Ue.PI2="PI2",Ue.RECIPROCAL_PI="RECIPROCAL_PI",Ue.RECIPROCAL_PI2="RECIPROCAL_PI2",Ue.LOG2="LOG2",Ue.EPSILON="EPSILON";var HI=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
19
|
+
)*?)}`,"gim"),qI=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Wa=class extends ye{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,a){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=HI.exec(e);if(r){let o=r[2],i;for(;i=qI.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var $a=class extends ye{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),r)}};Dt.addKeyword("uv",function(){return new $a});Dt.addKeyword("uv2",function(){return new $a(1)});import{LinearEncoding as WI,sRGBEncoding as $I}from"three";var li=class extends ye{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??li.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case WI:return["Linear"];case $I:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),a=li.Nodes[this.method],s=e.include(a);if(s===li.LINEAR_TO_LINEAR)return e.format(o,i,r);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,r)}else return e.format(s+"( "+o+" )",i,r)}fromEncoding(e){let r=li.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=li.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},nr=li;nr.Nodes={LinearToLinear:new re(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
20
|
+
`)),sRGBToLinear:new re(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
21
|
+
`)),LinearTosRGB:new re(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
22
|
+
`))},nr.LINEAR_TO_LINEAR="LinearToLinear",nr.SRGB_TO_LINEAR="sRGBToLinear",nr.LINEAR_TO_SRGB="LinearTosRGB";var qe=class extends re{constructor(e="",r,o,i,a){super(e,a,i,o,r);this.nodeType="Expression"}};import{Texture as YI}from"three";var ir=class extends Xe{constructor(e=new YI,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new $a,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),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 u={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new nr(new qe("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,c),e.removeContext(),e.format(l,c,r)}};var se=class extends Xe{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var xl=class extends ye{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,r)+"( ",u=[];if(s.inputs){for(let c=0;c<s.inputs.length;c++){let d=s.inputs[c],p=this.inputs[c]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}l+=u.join(", ")+" )"}return e.format(l,i,r)}};var Vf=class extends ye{constructor(e,r,o=Vf.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,r)}},Ft=Vf;Ft.ADD="+",Ft.SUB="-",Ft.MUL="*",Ft.DIV="/";var Qe=class extends ye{constructor(e,r=Qe.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:i=r,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Qe.MIX:case Qe.CLAMP:case Qe.REFRACT:case Qe.SMOOTHSTEP:case Qe.FACEFORWARD:return 3;case Qe.MIN:case Qe.MAX:case Qe.MOD:case Qe.STEP:case Qe.REFLECT:case Qe.DISTANCE:case Qe.DOT:case Qe.CROSS:case Qe.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Qe.LENGTH:case Qe.DISTANCE:case Qe.DOT:return"f";case Qe.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,c=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Qe.NEGATE:return e.format("( -"+this.a.build(e,c)+" )",c,r);case Qe.INVERT:return e.format("( 1.0 - "+this.a.build(e,c)+" )",c,r);case Qe.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Qe.STEP:o=this.a.build(e,s===1?"f":c),i=this.b.build(e,c);break;case Qe.MIN:case Qe.MAX:case Qe.MOD:o=this.a.build(e,c),i=this.b.build(e,l===1?"f":c);break;case Qe.REFRACT:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,"f");break;case Qe.MIX:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,u===1?"f":c);break;default:o=this.a.build(e,c),this.b&&(i=this.b.build(e,c)),this.c&&(a=this.c.build(e,c));break}let p=[];p.push(o),i&&p.push(i),a&&p.push(a);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,r)}},Pe=Qe;Pe.RAD="radians",Pe.DEG="degrees",Pe.EXP="exp",Pe.EXP2="exp2",Pe.LOG="log",Pe.LOG2="log2",Pe.SQRT="sqrt",Pe.INV_SQRT="inversesqrt",Pe.FLOOR="floor",Pe.CEIL="ceil",Pe.NORMALIZE="normalize",Pe.FRACT="fract",Pe.SATURATE="saturate",Pe.SIN="sin",Pe.COS="cos",Pe.TAN="tan",Pe.ASIN="asin",Pe.ACOS="acos",Pe.ARCTAN="atan",Pe.ABS="abs",Pe.SIGN="sign",Pe.LENGTH="length",Pe.NEGATE="negate",Pe.INVERT="invert",Pe.MIN="min",Pe.MAX="max",Pe.MOD="mod",Pe.STEP="step",Pe.REFLECT="reflect",Pe.DISTANCE="distance",Pe.DOT="dot",Pe.CROSS="cross",Pe.POW="pow",Pe.MIX="mix",Pe.CLAMP="clamp",Pe.REFRACT="refract",Pe.SMOOTHSTEP="smoothstep",Pe.FACEFORWARD="faceforward";var Ya=class extends ye{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){let a=new xl(Ya.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new nr(new qe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new nr(new qe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new nr(new qe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new nr(new qe("","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 qe(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new qe(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new qe(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new qe(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new qe("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new xl(Ya.Nodes.roughnessToMip,[i]),s=new Pe(a,Ya.Nodes.m0,Ya.Nodes.cubeUV_maxMipLevel,Pe.CLAMP),l=new Pe(s,Pe.FLOOR),u=new Pe(s,Pe.FRACT),c=this.bilinearCubeUV(e,this.value,o,l),d=this.bilinearCubeUV(e,this.value,o,new Ft(l,new se(1).setReadonly(!0),Ft.ADD)),p=new Pe(c,d,u,Pe.MIX);return e.format(p.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},Xa=Ya;Xa.Nodes=function(){let e=new Wa(`struct TextureCubeUVData {
|
|
22
23
|
vec4 tl;
|
|
23
24
|
vec4 tr;
|
|
24
25
|
vec4 br;
|
|
25
26
|
vec4 bl;
|
|
26
27
|
vec2 f;
|
|
27
|
-
}`),r=new
|
|
28
|
+
}`),r=new Ue("float cubeUV_maxMipLevel 8.0",!0),o=new Ue("float cubeUV_minMipLevel 4.0",!0),i=new Ue("float cubeUV_maxTileSize 256.0",!0),a=new Ue("float cubeUV_minTileSize 16.0",!0),s=new re(`float getFace(vec3 direction) {
|
|
28
29
|
vec3 absDirection = abs(direction);
|
|
29
30
|
float face = -1.0;
|
|
30
31
|
if (absDirection.x > absDirection.z) {
|
|
@@ -39,7 +40,7 @@ var jS=Object.create;var Al=Object.defineProperty;var US=Object.getOwnPropertyDe
|
|
|
39
40
|
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
40
41
|
}
|
|
41
42
|
return face;
|
|
42
|
-
}`);s.useKeywords=!1;let l=new
|
|
43
|
+
}`);s.useKeywords=!1;let l=new re(`vec2 getUV(vec3 direction, float face) {
|
|
43
44
|
vec2 uv;
|
|
44
45
|
if (face == 0.0) {
|
|
45
46
|
uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
|
|
@@ -55,7 +56,7 @@ var jS=Object.create;var Al=Object.defineProperty;var US=Object.getOwnPropertyDe
|
|
|
55
56
|
uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
|
|
56
57
|
}
|
|
57
58
|
return 0.5 * (uv + 1.0);
|
|
58
|
-
}`);l.useKeywords=!1;let u=new
|
|
59
|
+
}`);l.useKeywords=!1;let u=new re(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
|
|
59
60
|
float face = getFace(direction);
|
|
60
61
|
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
|
|
61
62
|
mipInt = max(mipInt, cubeUV_minMipLevel);
|
|
@@ -83,7 +84,7 @@ var jS=Object.create;var Al=Object.defineProperty;var US=Object.getOwnPropertyDe
|
|
|
83
84
|
uv.x -= texelSize;
|
|
84
85
|
vec4 bl = texture2D(envMap, uv);
|
|
85
86
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
86
|
-
}`,[e,s,l,r,o,i,a]);u.useKeywords=!1;let c=new
|
|
87
|
+
}`,[e,s,l,r,o,i,a]);u.useKeywords=!1;let c=new Ue("float r0 1.0",!0),d=new Ue("float v0 0.339",!0),p=new Ue("float m0 -2.0",!0),f=new Ue("float r1 0.8",!0),h=new Ue("float v1 0.276",!0),m=new Ue("float m1 -1.0",!0),y=new Ue("float r4 0.4",!0),g=new Ue("float v4 0.046",!0),b=new Ue("float m4 2.0",!0),w=new Ue("float r5 0.305",!0),_=new Ue("float v5 0.016",!0),S=new Ue("float m5 3.0",!0),P=new Ue("float r6 0.21",!0),O=new Ue("float v6 0.0038",!0),x=new Ue("float m6 4.0",!0),D=[c,d,p,f,h,m,y,g,b,w,_,S,P,O,x],N=new re(`float roughnessToMip(float roughness) {
|
|
87
88
|
float mip = 0.0;
|
|
88
89
|
if (roughness >= r1) {
|
|
89
90
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -97,7 +98,7 @@ var jS=Object.create;var Al=Object.defineProperty;var US=Object.getOwnPropertyDe
|
|
|
97
98
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
98
99
|
}
|
|
99
100
|
return mip;
|
|
100
|
-
}`,
|
|
101
|
+
}`,D);return{bilinearCubeUV:u,roughnessToMip:N,m0:p,cubeUV_maxMipLevel:r}}();var ci=class extends ye{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??ci.VIEW}getShared(){return this.scope===ci.WORLD}build(e,r,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,a){let s;switch(this.scope){case ci.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case ci.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case ci.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),r)}},jt=ci;jt.LOCAL="local",jt.WORLD="world",jt.VIEW="view",jt.NORMAL="normal";Dt.addKeyword("viewNormal",function(){return new jt(jt.VIEW)});Dt.addKeyword("localNormal",function(){return new jt(jt.NORMAL)});Dt.addKeyword("worldNormal",function(){return new jt(jt.WORLD)});var bo=class extends ye{constructor(e){super("v3");this.nodeType="Position";this.scope=e??bo.LOCAL}getType(){switch(this.scope){case bo.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case bo.LOCAL:case bo.WORLD:return!1}return!0}generate(e,r,o,i,a){let s;switch(this.scope){case bo.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case bo.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case bo.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case bo.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),r)}},pr=bo;pr.LOCAL="local",pr.WORLD="world",pr.VIEW="view",pr.PROJECTION="projection";Dt.addKeyword("position",function(){return new pr});Dt.addKeyword("worldPosition",function(){return new pr(pr.WORLD)});Dt.addKeyword("viewPosition",function(){return new pr(pr.VIEW)});var Qr=class extends ye{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Qr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Qr.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Qr.VECTOR:{let a=new jt(jt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),u=new pr(pr.VIEW).build(e,"v3"),c=s?s.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${l} )`;c&&(d=`normalize( mix( ${d}, ${l}, ${c} * ${c} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case Qr.CUBE:{let a=new Qr(Qr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case Qr.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new Qr(Qr.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(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}},vo=Qr;vo.CUBE="cube",vo.SPHERE="sphere",vo.VECTOR="vector";var Gu=class extends ye{constructor(e=new ir,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Xa(this.value,r??new vo(vo.VECTOR),o),this.irradianceNode=new Xa(this.value,new jt(jt.WORLD),new se(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}};import{CubeTexture as XI}from"three";var ku=class extends Xe{constructor(e=new XI,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new vo,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),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},u=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new nr(new qe("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,u),e.removeContext(),e.format(s,u,r)}};var vb=`
|
|
101
102
|
uniform int frameIndex;
|
|
102
103
|
uniform vec2 resolution;
|
|
103
104
|
uniform mat4 previousModelViewMatrix;
|
|
@@ -105,7 +106,7 @@ uniform mat4 previousProjectionMatrix;
|
|
|
105
106
|
|
|
106
107
|
varying vec4 vCurrentPosition;
|
|
107
108
|
varying vec4 vPreviousPosition;
|
|
108
|
-
`,
|
|
109
|
+
`,Sb=`
|
|
109
110
|
layout(location = 1) out vec4 gVelocity;
|
|
110
111
|
|
|
111
112
|
uniform int frameIndex;
|
|
@@ -147,7 +148,7 @@ float getNoiseInterleavedGradient(vec2 screenPos) {
|
|
|
147
148
|
return fract(magic.z * fract(dot(screenPos, magic.xy)));
|
|
148
149
|
}
|
|
149
150
|
|
|
150
|
-
`,
|
|
151
|
+
`,wb=`
|
|
151
152
|
// TODO: This could be generated CPU side and passed to the shader every frame
|
|
152
153
|
const vec2 haltonSequence[16] = vec2[16](
|
|
153
154
|
vec2( 0.000000,-0.333334),
|
|
@@ -184,7 +185,7 @@ vPreviousPosition.xy += OUTLINE_COMPENSATION;
|
|
|
184
185
|
#endif
|
|
185
186
|
gl_Position = currentPositionJittered;
|
|
186
187
|
|
|
187
|
-
`,
|
|
188
|
+
`,Ab=`
|
|
188
189
|
vec2 oldPos = vPreviousPosition.xy;
|
|
189
190
|
oldPos /= vPreviousPosition.w;
|
|
190
191
|
oldPos.xy = (oldPos.xy+1.)/2.0;
|
|
@@ -199,14 +200,14 @@ vec2 velocity = (newPos - oldPos);
|
|
|
199
200
|
if (gl_FragColor.a <= 0.0) discard;
|
|
200
201
|
|
|
201
202
|
gVelocity = vec4(velocity, 0.0, 1.0);
|
|
202
|
-
`,
|
|
203
|
+
`,_b=`
|
|
203
204
|
layout(location = 1) out vec4 gVelocity;
|
|
204
|
-
`,
|
|
205
|
+
`,Pb=`
|
|
205
206
|
// Discard fully transparent pixels
|
|
206
207
|
if (gl_FragColor.a <= 0.0) discard;
|
|
207
208
|
|
|
208
209
|
gVelocity = vec4(0.0, 0.0, 0.0, 1.0);
|
|
209
|
-
`;var
|
|
210
|
+
`;var Cb=["x","y","z","w"],e3=["float","vec2","vec3","vec4"],t3={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},r3={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[]"},Qa=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let a="";i=i.sort(t);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
|
|
210
211
|
`);return a}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
|
|
211
212
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
212
213
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -244,20 +245,20 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
244
245
|
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
245
246
|
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
246
247
|
}`,""].join(`
|
|
247
|
-
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.addVertexParsCode(
|
|
248
|
+
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.addVertexParsCode(vb),this.addFragmentParsCode(Sb),this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let o=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),r>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("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(wb),this.addFragmentFinalCode(Ab)),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.defines={},this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
|
|
248
249
|
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
|
|
249
250
|
`}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
|
|
250
251
|
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
|
|
251
252
|
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",a=""){let s=this.getVars(o),l=s[t];if(!l){let u=s.length;l={name:r||"node"+i+u+(a?"_"+a:""),type:e},s.push(l),s[t]=l}return l}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
|
|
252
253
|
`)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,i=t.length;o<i;++o){let a=t[o],s=a.type,l=a.name,u=a.size,c=this.getFormatByType(s);if(c===void 0)throw new Error("Node pars "+c+" not found.");c.includes("[]")?r+=e+" "+c.substring(0,c.length-2)+" "+l+`[${u}];
|
|
253
254
|
`:r+=e+" "+c+" "+l+`;
|
|
254
|
-
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof
|
|
255
|
+
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof kt?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,u=new gl({type:e,size:r.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(u),s[t].push(u),s[t][u.name]=u,this.uniforms[u.name]=u,u}else{let s=this.inputs.uniforms,l=s.list.length,u=new gl({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(u),s[t].push(u),s[t][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?Dt.get(t):t,this.context.include===!1)return t.name;t instanceof re?o=this.includes.functions:t instanceof Ue?o=this.includes.consts:t instanceof Wa&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let a=i[t.name];if(a||(a=i[t.name]={node:t,deps:[]},i.push(a),a.src=t.build(this,"source")),t instanceof re&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let s=0;do this.include(t.includes[s++],e);while(s<t.includes.length)}return r&&(a.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return e3[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case QI:case KI:return new ku(r);case ZI:return new Gu(new ir(r));default:return new ir(r)}else{if(r.isVector2)return new pt(r);if(r.isVector3)return new $t(r);if(r.isVector4)return new dr(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return t3[t]||t}getFormatByType(t){return r3[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return Cb[t]}getIndexByElement(t){return Cb.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=Ob,e===Ob&&this.context.gamma&&(e=JI),e}};import{Vector2 as eo,Vector3 as Ao,Vector4 as fs}from"three";var $e=class extends Xe{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Et?e:new Et(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let c=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${c};`)}return u?this.generateReadonly(e,r,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,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}generateReadonly(e,r,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var Be=class extends Xe{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,a,s){return e.format(this.value.toString(),i,r)}};import{UniformsLib as s3,UniformsUtils as l3}from"three";var xt=class extends Xe{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}};var Kr=class extends Xe{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}};import{Vector3 as o3}from"three";var Mn=class extends Xe{};var Fu=class extends Mn{constructor(e){super("v3");this.image=e;this._value=new o3}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 ui=class extends Mn{constructor(e,r,o=1008){super("t");this.image=e;this.wrap=r;this.minFilter=o}get value(){return this.image.getTexture(this.wrap,this.minFilter)}};import{Matrix3 as n3}from"three";var Ka=class extends Xe{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new n3}generateReadonly(e,r,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as i3}from"three";var Yt=class extends Xe{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new i3}generateReadonly(e,r,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix3 as a3}from"three";function Tb(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var ju=class extends Ka{constructor(e,r){super(new a3);this.repeat=e;this.offset=r;Tb(this.value,e,r)}updateMatrix(){Tb(this.value,this.repeat,this.offset)}};import{Vector4 as Mb}from"three";var Zr=class extends Xe{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Mb?new Array(e).fill(r):new Array(e).fill(new Mb(0))}};var Za=class extends ye{constructor(e,r,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=i}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var zf=class extends ye{constructor(e,r){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(zf.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),r)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},di=zf;di.Nodes=function(){return{customColor:new re(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
|
|
255
256
|
float lalpha = alpha * mask;
|
|
256
257
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
257
258
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
258
259
|
|
|
259
260
|
return color;
|
|
260
|
-
}`)}}();var
|
|
261
|
+
}`)}}();var Gf=class extends ye{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(Gf.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),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ja=Gf;Ja.Nodes=function(){return{customNormal:new re(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
|
|
261
262
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
262
263
|
normal *= step( vec3(0.5), cnormal );
|
|
263
264
|
|
|
@@ -266,7 +267,7 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
266
267
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
267
268
|
|
|
268
269
|
return normal;
|
|
269
|
-
}`)}}();var
|
|
270
|
+
}`)}}();var es=class extends ye{constructor(e,r,o,i,a,s,l,u,c,d,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=a,this.side=s,this.size=l,this.blending=u,this.mat=c,this.isMask=f,this.alpha=d,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(es.Nodes.cylindrical);break;case 2:i=e.include(es.Nodes.spherical);break;case 1:let s=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=["zy","xz","xy"][this.axis.value],u=new re(`
|
|
270
271
|
vec3 ${o}_planarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
271
272
|
vec2 projected = (1. + (position.${l})) / 2.;
|
|
272
273
|
vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -290,7 +291,7 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
290
291
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
291
292
|
|
|
292
293
|
return col;
|
|
293
|
-
}`);i=e.include(u);break;case 4:i=e.include(
|
|
294
|
+
}`);i=e.include(u);break;case 4:i=e.include(es.Nodes.triplanar);break;default:i=e.include(es.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let a=[];if(a.push("normal"),a.push(this.texture.generate(e,"t")),a.push(this.textureSize.build(e,"v2")),a.push(this.crop.build(e,"f")),a.push(this.mat.build(e,"mat3")),a.push(this.size.build(e,"v2")),a.push(this.blending.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),this.projection.value===4){let s=`${o}_writeUvs`,l=s+"0",u=s+"1",c=s+"2",d=`${o}_triplanarWeights`;e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(d,"vec3"),a.push(l),a.push(u),a.push(c),a.push(d)}else{let s=`${o}_writeUvs`;e.addFragmentVariable(s,"vec2"),a.push(s)}return e.format(i+"("+a.join(",")+")",this.getType(e),r)}},In=es;In.Nodes=function(){let e=new re(`
|
|
294
295
|
vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
295
296
|
vec3 posN = normalize(position);
|
|
296
297
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -325,7 +326,7 @@ vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop
|
|
|
325
326
|
|
|
326
327
|
return col;
|
|
327
328
|
}
|
|
328
|
-
`),r=new
|
|
329
|
+
`),r=new re(`
|
|
329
330
|
vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
330
331
|
vec3 posN = normalize(vPosition);
|
|
331
332
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -358,7 +359,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
358
359
|
|
|
359
360
|
return col;
|
|
360
361
|
}
|
|
361
|
-
`),o=new
|
|
362
|
+
`),o=new re(`vec3 uvTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
362
363
|
vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
363
364
|
writeUv = uvs;
|
|
364
365
|
|
|
@@ -379,7 +380,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
379
380
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
380
381
|
|
|
381
382
|
return col;
|
|
382
|
-
}`),i=new
|
|
383
|
+
}`),i=new re(`vec3 triplanarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUvs0, out vec2 writeUvs1, out vec2 writeUvs2, out vec3 writeWeights) {
|
|
383
384
|
vec3 p = position;
|
|
384
385
|
vec2 uv0 = (1.0 + p.xy) / 2.0;
|
|
385
386
|
vec2 uv1 = (1.0 + p.zy) / 2.0;
|
|
@@ -445,7 +446,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
445
446
|
|
|
446
447
|
return col;//n * 0.5 + 0.5;
|
|
447
448
|
}
|
|
448
|
-
`);return{cylindrical:e,spherical:r,uv:o,triplanar:i}}();var
|
|
449
|
+
`);return{cylindrical:e,spherical:r,uv:o,triplanar:i}}();var ts=class extends ye{constructor(e,r,o,i,a,s,l,u,c,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=u,this.colors=c,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new re(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
|
|
449
450
|
vec4 color = colors[0];
|
|
450
451
|
#ifdef ${o}_IS_VECTOR
|
|
451
452
|
#ifdef ${o}_LINEAR
|
|
@@ -485,21 +486,21 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
485
486
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
486
487
|
|
|
487
488
|
return color.rgb;
|
|
488
|
-
}`,[
|
|
489
|
+
}`,[ts.Nodes.vectorLinearWorldSpaceDepth,ts.Nodes.vectorLinearObjectSpaceDepth,ts.Nodes.vectorSphericalObjectSpaceDepth,ts.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let a=e.include(i),s=[];return s.push(this.near.build(e,"f")),s.push(this.far.build(e,"f")),s.push(this.origin.build(e,"v3")),s.push(this.direction.build(e,"v3")),s.push(this.colors.build(e,"v4[]")),s.push(this.steps.build(e,"f[]")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),e.format(a+"("+s.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},rs=ts;rs.Nodes=function(){let e=new re(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
489
490
|
vec3 n = normalize(direction);
|
|
490
491
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
491
492
|
return ( dist - near ) / ( far - near );
|
|
492
|
-
}`),r=new
|
|
493
|
+
}`),r=new re(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
493
494
|
vec3 n = normalize(direction);
|
|
494
495
|
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
495
496
|
return ( dist - near ) / ( far - near );
|
|
496
|
-
}`),o=new
|
|
497
|
+
}`),o=new re(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
497
498
|
float dist = length(vWPosition - origin);
|
|
498
499
|
return ( dist - near ) / ( far - near );
|
|
499
|
-
}`),i=new
|
|
500
|
+
}`),i=new re(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
500
501
|
float dist = length(position - origin);
|
|
501
502
|
return ( dist - near ) / ( far - near );
|
|
502
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var
|
|
503
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var bl=class extends ye{constructor(e,r,o,i,a,s,l,u){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=a,this.isMask=u,this.alpha=s,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new re(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
|
|
503
504
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
504
505
|
|
|
505
506
|
float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
|
|
@@ -507,7 +508,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
507
508
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
508
509
|
|
|
509
510
|
return color;
|
|
510
|
-
}`),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),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var
|
|
511
|
+
}`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var kf=class extends ye{constructor(e,r,o,i,a,s,l,u,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=a,this.morph=s,this.angle=l,this.isMask=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(kf.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},os=kf;os.Nodes=function(){return{gradient:new re(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
|
|
511
512
|
vec4 color = colors[0];
|
|
512
513
|
vec2 m = morph / vUv.xy;
|
|
513
514
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -549,7 +550,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
549
550
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
550
551
|
|
|
551
552
|
return color.xyz;
|
|
552
|
-
}`)}}();var
|
|
553
|
+
}`)}}();var Ff=class extends ye{constructor(e,r,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Ff.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),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ns=Ff;ns.Nodes=function(){return{matcap:new re(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
|
|
553
554
|
vec3 viewDir = normalize( vViewPosition );
|
|
554
555
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
555
556
|
vec3 y = cross( viewDir, x );
|
|
@@ -561,7 +562,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
561
562
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
562
563
|
|
|
563
564
|
return matcapColor.rgb;
|
|
564
|
-
}`)}}();var
|
|
565
|
+
}`)}}();var vl=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(vl||{}),Ut=function(){let t=new re(`vec3 random3(vec3 c) {
|
|
565
566
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
566
567
|
vec3 r;
|
|
567
568
|
r.z = fract(512.0*j);
|
|
@@ -570,7 +571,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
570
571
|
j *= .125;
|
|
571
572
|
r.y = fract(512.0*j);
|
|
572
573
|
return r-0.5;
|
|
573
|
-
}`),e=new
|
|
574
|
+
}`),e=new re(`float simplex3d(vec3 p) {
|
|
574
575
|
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
575
576
|
vec3 x = p - s + dot(s, vec3(G3));
|
|
576
577
|
|
|
@@ -601,7 +602,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
601
602
|
d *= w;
|
|
602
603
|
|
|
603
604
|
return dot(d, vec4(52.0));
|
|
604
|
-
}`,[t]);e.keywords.F3=new
|
|
605
|
+
}`,[t]);e.keywords.F3=new Ue("float F3 0.3333333"),e.keywords.G3=new Ue("float G3 0.1666667");let r=new re(`float simplex3dFractal(vec3 m) {
|
|
605
606
|
mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
|
|
606
607
|
mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
|
|
607
608
|
mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
|
|
@@ -609,7 +610,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
609
610
|
+ 0.2666667 * simplex3d(2.0 * m * rot2)
|
|
610
611
|
+ 0.1333333 * simplex3d(4.0 * m * rot3)
|
|
611
612
|
+ 0.0666667 * simplex3d(8.0 * m);
|
|
612
|
-
}`,[e]),o=new
|
|
613
|
+
}`,[e]),o=new re("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new re("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),a=new re(`float simplexAshima(vec3 v) {
|
|
613
614
|
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
|
|
614
615
|
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
|
|
615
616
|
vec3 i = floor(v + dot(v, C.yyy) );
|
|
@@ -654,7 +655,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
654
655
|
m = m * m;
|
|
655
656
|
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
|
|
656
657
|
dot(p2,x2), dot(p3,x3) ) );
|
|
657
|
-
}`,[o,i]),s=new
|
|
658
|
+
}`,[o,i]),s=new re("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new re("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[s]),u=new re(`float noise(vec3 p){
|
|
658
659
|
vec3 a = floor(p);
|
|
659
660
|
vec3 d = p - a;
|
|
660
661
|
d = d * d * (3.0 - 2.0 * d);
|
|
@@ -669,7 +670,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
669
670
|
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
670
671
|
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
671
672
|
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
672
|
-
}`,[l]),c=new
|
|
673
|
+
}`,[l]),c=new re(`float fbm(vec3 x) {
|
|
673
674
|
float v = 0.0;
|
|
674
675
|
float a = 0.5;
|
|
675
676
|
vec3 shift = vec3(100);
|
|
@@ -679,7 +680,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
679
680
|
a *= 0.5;
|
|
680
681
|
}
|
|
681
682
|
return v;
|
|
682
|
-
}`,[u]);c.keywords.NUM_OCTAVES=new
|
|
683
|
+
}`,[u]);c.keywords.NUM_OCTAVES=new Ue(`int NUM_OCTAVES ${5}`);let d=new re("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new re(`float perlin(vec3 P){
|
|
683
684
|
vec3 Pi0 = floor(P);
|
|
684
685
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
685
686
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -738,17 +739,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
738
739
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
739
740
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
740
741
|
return 2.2 * n_xyz;
|
|
741
|
-
}`,[o,i,d]),f=new
|
|
742
|
+
}`,[o,i,d]),f=new re(`float hashwithoutsine13(vec3 p3)
|
|
742
743
|
{
|
|
743
744
|
p3 = fract(p3 * .1031);
|
|
744
745
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
745
746
|
return fract((p3.x + p3.y) * p3.z);
|
|
746
|
-
}`),h=new
|
|
747
|
+
}`),h=new re(`vec3 hashwithoutsine33(vec3 p3)
|
|
747
748
|
{
|
|
748
749
|
p3 = fract(p3 * vec3(.1031, .1030, .0973));
|
|
749
750
|
p3 += dot(p3, p3.yxz+33.33);
|
|
750
751
|
return fract((p3.xxy + p3.yxx)*p3.zyx);
|
|
751
|
-
}`),m=new
|
|
752
|
+
}`),m=new re(`float metric(in vec3 p)
|
|
752
753
|
{
|
|
753
754
|
// L2
|
|
754
755
|
return length(p);
|
|
@@ -756,17 +757,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
756
757
|
// Chebyshev
|
|
757
758
|
// vec3 a = abs(p);
|
|
758
759
|
// return max(a.x, max(a.y, a.z));
|
|
759
|
-
}`),y=new
|
|
760
|
+
}`),y=new re(`float smin( float a, float b, float k )
|
|
760
761
|
{
|
|
761
762
|
float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
|
|
762
763
|
float correction = k * h * (1.0 - h);
|
|
763
764
|
return mix(b, a, h) - correction;
|
|
764
|
-
}`),g=new
|
|
765
|
+
}`),g=new re(`float smax( float a, float b, float k )
|
|
765
766
|
{
|
|
766
767
|
float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
|
|
767
768
|
float correction = k * h * (1.0 - h);
|
|
768
769
|
return mix(a, b, h) + correction;
|
|
769
|
-
}`),b=new
|
|
770
|
+
}`),b=new re(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
|
|
770
771
|
// Compute width of each interval
|
|
771
772
|
float input_width = input_max - input_min;
|
|
772
773
|
float output_width = output_max - output_min;
|
|
@@ -776,7 +777,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
776
777
|
|
|
777
778
|
// Convert the 0-1 range into a value in output range
|
|
778
779
|
return output_min + (scaled * output_width);
|
|
779
|
-
}`),
|
|
780
|
+
}`),w=new re(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
|
|
780
781
|
{
|
|
781
782
|
// Integer and fractional parts of this point's coordinates
|
|
782
783
|
ivec3 p = ivec3(floor(x));
|
|
@@ -914,7 +915,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
914
915
|
return hashwithoutsine13(vec3(p + mb) + seed);
|
|
915
916
|
}
|
|
916
917
|
}
|
|
917
|
-
`,[f,h,m,y,g,b]);return{simplex:e,simplexFractal:r,simplexAshima:a,fbm:c,perlin:p,voronoi:
|
|
918
|
+
`,[f,h,m,y,g,b]);return{simplex:e,simplexFractal:r,simplexAshima:a,fbm:c,perlin:p,voronoi:w}}();var is=class extends ye{constructor(e,r,o,i,a,s,l,u,c,d,p,f,h,m,y,g,b,w,_){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=i,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=u,this.colorC=c,this.colorD=d,this.noiseType=f,this.voronoiStyle=m,this.highCut=y,this.lowCut=g,this.smoothness=b,this.seed=w,this.quality=_,this.isMask=h,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let s=Object.values(vl)[this.noiseType.value],l=s=="voronoi"?`
|
|
918
919
|
float v = ${s}(st + move, voronoiStyle, smoothness, seed, quality);
|
|
919
920
|
|
|
920
921
|
// Apply clipping to colors
|
|
@@ -936,7 +937,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
936
937
|
color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
|
|
937
938
|
color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
|
|
938
939
|
color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
|
|
939
|
-
`,u=new
|
|
940
|
+
`,u=new re(`vec3 ${s}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
|
|
940
941
|
{
|
|
941
942
|
// Prevent scale of zero
|
|
942
943
|
scale = max(abs(scale), 0.001);
|
|
@@ -951,7 +952,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
951
952
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
952
953
|
|
|
953
954
|
return clamp(color, 0.0, 1.0).rgb;
|
|
954
|
-
}`,[
|
|
955
|
+
}`,[Ut.simplex,Ut.simplexFractal,Ut.simplexAshima,Ut.fbm,Ut.perlin,Ut.voronoi]),c=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(c+"("+d.join(",")+")",this.getType(e),r)}};is.numOctaves=5;var jf=class extends ye{constructor(e,r,o,i,a,s,l,u,c,d,p,f,h,m,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=u,this.contourDirection=c,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=h,this.depthMap=m,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let 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(`
|
|
955
956
|
vID = randomColor.r;
|
|
956
957
|
vec2 ${o}_offset = vec2(0.0);
|
|
957
958
|
if (${s}) {
|
|
@@ -966,7 +967,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
966
967
|
// if this offset is the biggest of all the potential offsets
|
|
967
968
|
gl_Position = ${o}_clipPosition;
|
|
968
969
|
}
|
|
969
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(
|
|
970
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(jf.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),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},as=jf;as.Nodes=function(){let e=new re(`
|
|
970
971
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
971
972
|
{
|
|
972
973
|
vec2 halton = haltonSequence[frameIndex];
|
|
@@ -1072,7 +1073,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1072
1073
|
float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
|
|
1073
1074
|
return edgeNormal;
|
|
1074
1075
|
}
|
|
1075
|
-
`);return{outline:new
|
|
1076
|
+
`);return{outline:new re(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
|
|
1076
1077
|
vec3 result = outlineColor;
|
|
1077
1078
|
float resultAlpha = 0.0;
|
|
1078
1079
|
|
|
@@ -1115,12 +1116,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1115
1116
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1116
1117
|
|
|
1117
1118
|
return result;
|
|
1118
|
-
}`,[e])}}();var
|
|
1119
|
+
}`,[e])}}();var So=class extends ye{constructor(e,r,o,i,a,s,l,u,c,d,p,f,h,m,y,g,b,w){super("v3");this.nodeType="Pattern";this.style=e,this.projection=r,this.axis=o,this.blending=i,this.offset=a,this.colorA=s,this.colorB=l,this.frequency=u,this.size=c,this.variation=d,this.smoothness=p,this.zigzag=f,this.rotation=h,this.vertical=m,this.horizontal=y,this.sides=g,this.isMask=w,this.alpha=b,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let i=`g${this.uuid.toString().replace(/-/g,"")}`,a=new re(`float hashwithoutsine12(vec2 p)
|
|
1119
1120
|
{
|
|
1120
1121
|
vec3 p3 = fract(vec3(p.xyx) * .1031);
|
|
1121
1122
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
1122
1123
|
return fract((p3.x + p3.y) * p3.z);
|
|
1123
|
-
}`),s=new
|
|
1124
|
+
}`),s=new re(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
|
|
1124
1125
|
{
|
|
1125
1126
|
const float mid = 0.5;
|
|
1126
1127
|
float radians = a * (PI / 180.0);
|
|
@@ -1177,7 +1178,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1177
1178
|
custom_uv = rotate_uv(custom_uv, rotation, true);
|
|
1178
1179
|
|
|
1179
1180
|
float draw = ${p};
|
|
1180
|
-
`}let u=new
|
|
1181
|
+
`}let u=new re(`vec3 ${i}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
|
|
1181
1182
|
const float TWO_PI = PI * 2.0;
|
|
1182
1183
|
float smoothness_remapped = pow(smoothness, 5.0);
|
|
1183
1184
|
|
|
@@ -1201,11 +1202,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1201
1202
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1202
1203
|
|
|
1203
1204
|
return clamp(color, 0.0, 1.0).rgb;
|
|
1204
|
-
}`,[s,a,
|
|
1205
|
+
}`,[s,a,So.DrawFunctions.circle,So.DrawFunctions.ring,So.DrawFunctions.polygon,So.DrawFunctions.cross,So.DrawFunctions.diamond,So.DrawFunctions.checkerboard,So.DrawFunctions.line,So.DrawFunctions.wave]),c=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(c+"("+d.join(",")+")",this.getType(e),r)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),r)}},ss=So;ss.DrawFunctions=function(){let e=new re(`float hashwithoutsine12(vec2 p) {
|
|
1205
1206
|
vec3 p3 = fract(vec3(p.xyx) * 0.1031);
|
|
1206
1207
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
1207
1208
|
return fract((p3.x + p3.y) * p3.z);
|
|
1208
|
-
}`),r=new
|
|
1209
|
+
}`),r=new re(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
|
|
1209
1210
|
// Create tiles in UV-space
|
|
1210
1211
|
uv *= frequency;
|
|
1211
1212
|
|
|
@@ -1234,14 +1235,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1234
1235
|
f *= jitter;
|
|
1235
1236
|
|
|
1236
1237
|
return f;
|
|
1237
|
-
}`,[e]),o=new
|
|
1238
|
+
}`,[e]),o=new re(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1238
1239
|
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1239
1240
|
return smoothstep(
|
|
1240
1241
|
-smoothness,
|
|
1241
1242
|
smoothness,
|
|
1242
1243
|
length(f) - size
|
|
1243
1244
|
);
|
|
1244
|
-
}`,[r]),i=new
|
|
1245
|
+
}`,[r]),i=new re(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1245
1246
|
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1246
1247
|
|
|
1247
1248
|
float d = length(f);
|
|
@@ -1250,7 +1251,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1250
1251
|
float outer = smoothstep(-smoothness, smoothness, d - size);
|
|
1251
1252
|
float inner = smoothstep(-smoothness, smoothness, d - size * inner_width);
|
|
1252
1253
|
return outer + (1.0 - inner);
|
|
1253
|
-
}`,[r]),a=new
|
|
1254
|
+
}`,[r]),a=new re(`float sdf_ngon(in vec2 p, in float r, in int n) {
|
|
1254
1255
|
float an = (PI * 2.0) / float(n);
|
|
1255
1256
|
float he = r * tan(0.5 * an);
|
|
1256
1257
|
|
|
@@ -1267,7 +1268,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1267
1268
|
float polygon(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation, in int sides) {
|
|
1268
1269
|
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1269
1270
|
return smoothstep(-smoothness, smoothness, sdf_ngon(f, size, sides));
|
|
1270
|
-
}`,[r]),s=new
|
|
1271
|
+
}`,[r]),s=new re(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
|
|
1271
1272
|
p = abs(p);
|
|
1272
1273
|
p = (p.y > p.x) ? p.yx : p.xy;
|
|
1273
1274
|
vec2 q = p - b;
|
|
@@ -1280,7 +1281,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1280
1281
|
float xcross(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1281
1282
|
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1282
1283
|
return smoothstep(-smoothness, smoothness, sdf_cross(f, vec2(size, size * 0.25), smoothness));
|
|
1283
|
-
}`,[r]),l=new
|
|
1284
|
+
}`,[r]),l=new re(`float ndot(vec2 a, vec2 b) {
|
|
1284
1285
|
return a.x*b.x - a.y*b.y;
|
|
1285
1286
|
}
|
|
1286
1287
|
|
|
@@ -1294,7 +1295,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1294
1295
|
float diamond(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1295
1296
|
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1296
1297
|
return smoothstep(-smoothness, smoothness, sdf_diamond(f, vec2(size)));
|
|
1297
|
-
}`,[r]),u=new
|
|
1298
|
+
}`,[r]),u=new re(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1298
1299
|
uv *= frequency;
|
|
1299
1300
|
vec2 i = floor(uv);
|
|
1300
1301
|
|
|
@@ -1304,7 +1305,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1304
1305
|
float x = floor(uv.x);
|
|
1305
1306
|
|
|
1306
1307
|
return mod(x, 2.0);
|
|
1307
|
-
}`),c=new
|
|
1308
|
+
}`),c=new re(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1308
1309
|
vec2 f = tile_and_center(uv, frequency, 0.0, zigzag, rotation);
|
|
1309
1310
|
|
|
1310
1311
|
// Different approach for variation param here
|
|
@@ -1317,7 +1318,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1317
1318
|
s + smoothness,
|
|
1318
1319
|
abs(f.y)
|
|
1319
1320
|
);
|
|
1320
|
-
}`,[r]),d=new
|
|
1321
|
+
}`,[r]),d=new re(`// Uses bisection
|
|
1321
1322
|
float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
|
|
1322
1323
|
// Convert all data to a primitive cosine wave
|
|
1323
1324
|
p = c * (p - vec2(d, a));
|
|
@@ -1366,7 +1367,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1366
1367
|
float s = mix(size, size * rand, variation);
|
|
1367
1368
|
|
|
1368
1369
|
return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
|
|
1369
|
-
}`);return{tileAndCenter:r,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:u,line:c,wave:d}}();var
|
|
1370
|
+
}`);return{tileAndCenter:r,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:u,line:c,wave:d}}();var Uf=class extends ye{constructor(e,r,o,i,a,s,l,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=u,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Uf.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),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ls=Uf;ls.Nodes=function(){let e=new re(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
1370
1371
|
vec3 st = position / noiseScale;
|
|
1371
1372
|
vec3 q = vec3(simplex3d(st),
|
|
1372
1373
|
simplex3d(st + vec3(1.0)),
|
|
@@ -1379,7 +1380,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1379
1380
|
float noise = simplex3d(st + r);
|
|
1380
1381
|
|
|
1381
1382
|
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);
|
|
1382
|
-
}`,[
|
|
1383
|
+
}`,[Ut.simplex]);return{rainbow:new re(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
|
|
1383
1384
|
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
1384
1385
|
|
|
1385
1386
|
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
@@ -1389,14 +1390,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1389
1390
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1390
1391
|
|
|
1391
1392
|
return res;
|
|
1392
|
-
}`,[e])}}();var
|
|
1393
|
+
}`,[e])}}();var Hf=class extends ye{constructor(e,r,o,i,a,s,l,u,c,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=u,this.offset=c,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Hf.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),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},cs=Hf;cs.Nodes=function(){let e=new re(`float rand(float n) {
|
|
1393
1394
|
return fract(sin(n) * 43758.5453123);
|
|
1394
|
-
}`),r=new
|
|
1395
|
+
}`),r=new re(`float hash1(float p) {
|
|
1395
1396
|
p = fract(p * 0.011);
|
|
1396
1397
|
p *= p + 7.5;
|
|
1397
1398
|
p *= p + p;
|
|
1398
1399
|
return fract(p);
|
|
1399
|
-
}`),o=new
|
|
1400
|
+
}`),o=new re(`float valueNoise(vec3 x) {
|
|
1400
1401
|
const vec3 step = vec3(110, 241, 171);
|
|
1401
1402
|
|
|
1402
1403
|
vec3 i = floor(x);
|
|
@@ -1411,13 +1412,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1411
1412
|
mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
|
|
1412
1413
|
mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
|
|
1413
1414
|
mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
|
|
1414
|
-
}`,[r]),i=new
|
|
1415
|
+
}`,[r]),i=new re(`vec3 hash3(vec3 x) {
|
|
1415
1416
|
x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
|
|
1416
1417
|
dot(x,vec3(269.5, 183.3, 246.1)),
|
|
1417
1418
|
dot(x,vec3(113.5, 271.9, 124.6)));
|
|
1418
1419
|
|
|
1419
1420
|
return fract(sin(x)*43758.5453123);
|
|
1420
|
-
}`),a=new
|
|
1421
|
+
}`),a=new re(`vec3 voronoiNoise(in vec3 x)
|
|
1421
1422
|
{
|
|
1422
1423
|
vec3 p = floor(x);
|
|
1423
1424
|
vec3 f = fract(x);
|
|
@@ -1448,7 +1449,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1448
1449
|
|
|
1449
1450
|
return vec3(sqrt(res), abs(id));
|
|
1450
1451
|
}
|
|
1451
|
-
`,[i]);return{toon:new
|
|
1452
|
+
`,[i]);return{toon:new re(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
|
|
1452
1453
|
float t = 0.0;
|
|
1453
1454
|
float shadow = 1.0;
|
|
1454
1455
|
|
|
@@ -1625,7 +1626,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1625
1626
|
|
|
1626
1627
|
return color.xyz;
|
|
1627
1628
|
|
|
1628
|
-
}`,[
|
|
1629
|
+
}`,[Ut.simplex,e,o,a])}}();import{Vector2 as Nb}from"three";var Ib=function(){return{textureBicubic:new re(`float w0( float a ) {
|
|
1629
1630
|
return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
|
|
1630
1631
|
}
|
|
1631
1632
|
|
|
@@ -1689,7 +1690,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1689
1690
|
vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
|
|
1690
1691
|
vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
|
|
1691
1692
|
return mix( fSample, cSample, fract( lod ) );
|
|
1692
|
-
}`)}}();function
|
|
1693
|
+
}`)}}();function Db(n,t){return n>=t?new Nb(t/n,1):new Nb(1,n/t)}var qf=class extends ye{constructor(e,r,o,i,a,s,l,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,Te.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(qf.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),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},us=qf;us.Nodes=function(){let e=new re(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
1693
1694
|
// Slightly modified version of this:
|
|
1694
1695
|
// https://www.shadertoy.com/view/ltScRG
|
|
1695
1696
|
|
|
@@ -1722,7 +1723,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1722
1723
|
res += textureLod(sp, uv, lod).rgb;
|
|
1723
1724
|
}
|
|
1724
1725
|
return res / float(NUM_SAMPLES);
|
|
1725
|
-
}`),r=new
|
|
1726
|
+
}`),r=new re(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
1726
1727
|
// Direction of refracted light.
|
|
1727
1728
|
vec3 refractionVector = refract( -v, n, 1.0 / ior );
|
|
1728
1729
|
|
|
@@ -1734,11 +1735,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1734
1735
|
|
|
1735
1736
|
// The thickness is specified in local space
|
|
1736
1737
|
return normalize( refractionVector ) * thickness * modelScale;
|
|
1737
|
-
}`),o=new
|
|
1738
|
+
}`),o=new re(`float applyIorToRoughness( float roughness, float ior ) {
|
|
1738
1739
|
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
1739
1740
|
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
1740
1741
|
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
1741
|
-
}`),i=new
|
|
1742
|
+
}`),i=new re(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
|
|
1742
1743
|
// Threejs exports do not pass a depth map to this shader, so we have to fallback to the "Threejs method of blurring" - see
|
|
1743
1744
|
// also the code in convertTransmission.ts, which runs during export
|
|
1744
1745
|
#ifdef IS_THREEJS_EXPORT
|
|
@@ -1749,7 +1750,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1749
1750
|
float lod = applyIorToRoughness(roughness, ior);
|
|
1750
1751
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
1751
1752
|
#endif
|
|
1752
|
-
}`,[
|
|
1753
|
+
}`,[Ib.textureBicubic,o,e]),a=new re(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
|
|
1753
1754
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
1754
1755
|
vec3 refractedRayExit = position + transmissionRay;
|
|
1755
1756
|
|
|
@@ -1766,7 +1767,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1766
1767
|
|
|
1767
1768
|
// Sample framebuffer to get pixel the refracted ray hits.
|
|
1768
1769
|
return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
|
|
1769
|
-
}`,[i,r]);return{transmission:new
|
|
1770
|
+
}`,[i,r]);return{transmission:new re(`vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
|
|
1770
1771
|
vec3 v = vec3(0.);
|
|
1771
1772
|
if (isOrthographic) {
|
|
1772
1773
|
v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
|
|
@@ -1780,7 +1781,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1780
1781
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1781
1782
|
|
|
1782
1783
|
return transmission;
|
|
1783
|
-
}`,[a])}}();var
|
|
1784
|
+
}`,[a])}}();var Wf=(e=>(e.NOISE="noise",e.MAP="map",e))(Wf||{}),$f=class extends ye{constructor(e,r,o,i,a,s,l,u,c,d,p){super("v3");this.displacementTypeIndex=new Be(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(Wf)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Ka(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=u,this.quality=c}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Wf)[this.displacementTypeIndex.value]){case"map":{o=e.include($f.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(vl)[this.noiseFunctionIndex.value],l=new re(`vec3 orthogonal(vec3 v) {
|
|
1784
1785
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1785
1786
|
}`),u=s=="voronoi"?`
|
|
1786
1787
|
float v = ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
|
|
@@ -1791,9 +1792,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1791
1792
|
return p + n * v * intensity;
|
|
1792
1793
|
`:`
|
|
1793
1794
|
return p + n * ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
1794
|
-
`,c=new
|
|
1795
|
+
`,c=new re(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
|
|
1795
1796
|
${u}
|
|
1796
|
-
}`,[
|
|
1797
|
+
}`,[Ut.simplex,Ut.simplexFractal,Ut.simplexAshima,Ut.fbm,Ut.perlin,Ut.voronoi]),d=new re(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
|
|
1797
1798
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1798
1799
|
vec3 tangent1 = orthogonal(normal);
|
|
1799
1800
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -1809,9 +1810,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1809
1810
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1810
1811
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1811
1812
|
return displaced_position;
|
|
1812
|
-
}`,[c,l]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},
|
|
1813
|
+
}`,[c,l]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ds=$f;ds.Nodes=function(){let e=new re(`vec3 orthogonal(vec3 v) {
|
|
1813
1814
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1814
|
-
}`),r=new
|
|
1815
|
+
}`),r=new re(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
1815
1816
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
1816
1817
|
vec4 tmp = texture2D(tex, uvs);
|
|
1817
1818
|
vec3 col = tmp.rgb;
|
|
@@ -1821,7 +1822,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1821
1822
|
}
|
|
1822
1823
|
}
|
|
1823
1824
|
return col.r;
|
|
1824
|
-
}`);return{map:new
|
|
1825
|
+
}`);return{map:new re(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
|
|
1825
1826
|
vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
|
|
1826
1827
|
vec3 tangent1 = normalize(orthogonal(normal));
|
|
1827
1828
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -1831,7 +1832,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1831
1832
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
1832
1833
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1833
1834
|
return displaced_position;
|
|
1834
|
-
}`,[e,r])}}();var
|
|
1835
|
+
}`,[e,r])}}();var Te={normalRenderTarget:new ir,normalRenderTargetDepth:new ir,transmissionRenderTarget:new ir,aspectRatio:new pt,transmissionSize:new pt(2048,2048),transmissionRenderTargetDepth:new ir,aoRenderTarget:new ir,aoEnabled:new xt,pixelRatioNode:new se(1),resolution:new pt,penumbraSize:new Kr(5,.5),frameIndex:new Be(0),transmissionLod:new Be(2)};for(let n of Object.values(Te))n.isRenderGlobal=!0;var Eb={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.0.23/build/ui.wasm"};var Qo=class extends kt{constructor(){super("basic");this.nodeType="Basic";this.color=new $e(St),this.shadingAlpha=new se(1),this.shadingBlend=new Be(0),this.previousModelViewMatrix=new Yt,this.previouseProjectionMatrix=new Yt}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Te.frameIndex}),e.mergeUniform({resolution:Te.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(l3.merge([s3.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
1835
1836
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1836
1837
|
#if !defined( USE_LAYER_DISPLACE )
|
|
1837
1838
|
#include <defaultnormal_vertex>
|
|
@@ -1849,9 +1850,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1849
1850
|
#include <begin_vertex>
|
|
1850
1851
|
#endif /* !USE_LAYER_DISPLACE */
|
|
1851
1852
|
`];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;"),r=i.join(`
|
|
1852
|
-
`)}else{this.color===void 0&&(this.color=new
|
|
1853
|
+
`)}else{this.color===void 0&&(this.color=new $e(St)),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(`
|
|
1853
1854
|
`));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 u="1.0";this.mask&&(this.mask.analyze(e),u=`luminance(${this.mask.flow(e,"v3").result})`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${u} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a&&l.push(`gl_FragColor.a *= ${a.result};`),l.push("#include <fog_fragment>","#include <dithering_fragment>"),r=l.join(`
|
|
1854
|
-
`)}return r}};import{UniformsLib as
|
|
1855
|
+
`)}return r}};import{UniformsLib as Bb,UniformsUtils as c3}from"three";var Sl=class extends kt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new $e(St),this.emissive=new $e(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new Yt,this.previouseProjectionMatrix=new Yt,this.shadingAlpha=new se(1),this.shadingBlend=new Be(0),this.occlusion=new xt(!0)}get category(){return"lambert"}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Te.frameIndex}),e.mergeUniform({resolution:Te.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(c3.merge([Bb.fog,Bb.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 <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1855
1856
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1856
1857
|
#ifndef USE_LAYER_DISPLACE
|
|
1857
1858
|
#include <defaultnormal_vertex>
|
|
@@ -1944,7 +1945,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1944
1945
|
#pragma unroll_loop_end
|
|
1945
1946
|
#endif
|
|
1946
1947
|
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
1947
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
1948
|
+
`)}else{e.mergeUniform({penumbraSize:Te.penumbraSize}),e.mergeUniform({frameIndex:Te.frameIndex}),e.mergeUniform({aoMap:Te.aoRenderTarget}),e.mergeUniform({aoEnabled:Te.aoEnabled}),this.color===void 0&&(this.color=new $e(St)),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"),u=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
1948
1949
|
`));let f=["#include <normal_fragment_begin>",`
|
|
1949
1950
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1950
1951
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -1960,7 +1961,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1960
1961
|
outgoingLight *= ao;
|
|
1961
1962
|
}
|
|
1962
1963
|
`),c&&f.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
1963
|
-
`)}return r}};import{UniformsLib as
|
|
1964
|
+
`)}return r}};import{UniformsLib as Lb,UniformsUtils as u3}from"three";var Ko=function(){let n=new re(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
|
|
1964
1965
|
|
|
1965
1966
|
// Gradient of UVs w.r.t. X coordinate (in screen-space)
|
|
1966
1967
|
vec2 dSTdx = dFdx(bumpMapUv);
|
|
@@ -1974,7 +1975,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1974
1975
|
float dBy = bumpScale * luminance(texture(bumpMap, bumpMapUv + dSTdy).rgb) - Hll;
|
|
1975
1976
|
|
|
1976
1977
|
return vec2( dBx, dBy );
|
|
1977
|
-
}`),t=new
|
|
1978
|
+
}`),t=new re(`vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
|
|
1978
1979
|
vec3 vSigmaX = dFdx( surf_pos.xyz );
|
|
1979
1980
|
vec3 vSigmaY = dFdy( surf_pos.xyz );
|
|
1980
1981
|
vec3 vN = surf_norm; // normalized
|
|
@@ -1991,7 +1992,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1991
1992
|
|
|
1992
1993
|
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
|
|
1993
1994
|
return normalize( abs( fDet ) * vN - vGrad );
|
|
1994
|
-
}`);return{dHdxy:n,perturbNormalArb:t}}();var
|
|
1995
|
+
}`);return{dHdxy:n,perturbNormalArb:t}}();var wl=class extends kt{constructor(){super("phong");this.nodeType="Phong";this.color=new $e(St),this.specular=new $e(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new Yt,this.previouseProjectionMatrix=new Yt,this.shadingAlpha=new se(1),this.shadingBlend=new Be(0),this.occlusion=new xt(!0)}get category(){return"phong"}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Te.frameIndex}),e.mergeUniform({resolution:Te.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(u3.merge([Lb.fog,Lb.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(`
|
|
1995
1996
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1996
1997
|
#include <skinbase_vertex>
|
|
1997
1998
|
#include <skinnormal_vertex>
|
|
@@ -2012,7 +2013,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2012
2013
|
#include <begin_vertex>
|
|
2013
2014
|
#endif
|
|
2014
2015
|
`];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;"),r=i.join(`
|
|
2015
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
2016
|
+
`)}else{e.mergeUniform({penumbraSize:Te.penumbraSize}),e.mergeUniform({frameIndex:Te.frameIndex}),e.mergeUniform({aoMap:Te.aoRenderTarget}),e.mergeUniform({aoEnabled:Te.aoEnabled}),this.color===void 0&&(this.color=new $e(St)),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"),u=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
2016
2017
|
`));let f=["#include <normal_fragment_begin>",`
|
|
2017
2018
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2018
2019
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2021,7 +2022,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2021
2022
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2022
2023
|
normal *= -1.0;
|
|
2023
2024
|
}
|
|
2024
|
-
`," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(
|
|
2025
|
+
`," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(Ko.dHdxy),e.include(Ko.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),g=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",b="";this.bumpMap.projection.value===4?b=`
|
|
2025
2026
|
vec3 bumpNormal = vec3(0.0);
|
|
2026
2027
|
{
|
|
2027
2028
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2059,7 +2060,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2059
2060
|
outgoingLight *= ao;
|
|
2060
2061
|
}
|
|
2061
2062
|
`),c&&f.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result});`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
2062
|
-
`)}return r}};import{UniformsLib as
|
|
2063
|
+
`)}return r}};import{UniformsLib as Yf,UniformsUtils as d3}from"three";var Al=class extends kt{constructor(){super("standard");this.nodeType="Standard";this.color=new $e(St),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new Yt,this.previouseProjectionMatrix=new Yt,this.shadingAlpha=new se(1),this.shadingBlend=new Be(0),this.occlusion=new xt(!0)}get category(){return"physical"}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Te.frameIndex}),e.mergeUniform({resolution:Te.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(d3.merge([Yf.fog,Yf.lights])),Yf.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 <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2063
2064
|
`));let i=["#include <beginnormal_vertex>",`
|
|
2064
2065
|
#if !defined( USE_LAYER_DISPLACE )
|
|
2065
2066
|
#include <defaultnormal_vertex>
|
|
@@ -2077,7 +2078,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2077
2078
|
#include <begin_vertex>
|
|
2078
2079
|
#endif /* !USE_LAYER_DISPLACE */
|
|
2079
2080
|
`];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>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
2080
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
2081
|
+
`)}else{e.mergeUniform({penumbraSize:Te.penumbraSize}),e.mergeUniform({frameIndex:Te.frameIndex}),e.mergeUniform({aoMap:Te.aoRenderTarget}),e.mergeUniform({aoEnabled:Te.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new $e(St)),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"),u=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,h=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
2081
2082
|
`));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
2082
2083
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2083
2084
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2086,7 +2087,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2086
2087
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2087
2088
|
normal *= -1.0;
|
|
2088
2089
|
}
|
|
2089
|
-
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(
|
|
2090
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(Ko.dHdxy),e.include(Ko.perturbNormalArb);let g=this.bumpMap.texture.flow(e,"t"),b=this.bumpMap.flow(e,"v3"),w=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",_="";this.bumpMap.projection.value===4?_=`
|
|
2090
2091
|
vec3 bumpNormal = vec3(0.0);
|
|
2091
2092
|
{
|
|
2092
2093
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2094,13 +2095,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2094
2095
|
vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
|
|
2095
2096
|
vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
|
|
2096
2097
|
|
|
2097
|
-
vec2 grad0 = dHdxy(${g.result}, uv0, ${
|
|
2098
|
+
vec2 grad0 = dHdxy(${g.result}, uv0, ${w});
|
|
2098
2099
|
vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
|
|
2099
2100
|
|
|
2100
|
-
vec2 grad1 = dHdxy(${g.result}, uv1, ${
|
|
2101
|
+
vec2 grad1 = dHdxy(${g.result}, uv1, ${w});
|
|
2101
2102
|
vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
|
|
2102
2103
|
|
|
2103
|
-
vec2 grad2 = dHdxy(${g.result}, uv2, ${
|
|
2104
|
+
vec2 grad2 = dHdxy(${g.result}, uv2, ${w});
|
|
2104
2105
|
vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
|
|
2105
2106
|
|
|
2106
2107
|
bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
|
|
@@ -2108,14 +2109,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2108
2109
|
}
|
|
2109
2110
|
|
|
2110
2111
|
normal = bumpNormal;
|
|
2111
|
-
`:
|
|
2112
|
+
`:_=`
|
|
2112
2113
|
vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2113
|
-
vec2 grad = dHdxy(${g.result}, bumpMapCachedUv, ${
|
|
2114
|
+
vec2 grad = dHdxy(${g.result}, bumpMapCachedUv, ${w});
|
|
2114
2115
|
normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
|
|
2115
2116
|
`,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2116
2117
|
${b.result};
|
|
2117
|
-
${
|
|
2118
|
-
`)}if(m.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float metalnessFactor = "+l.result+";"),this.roughnessMap){let g=this.roughnessMap.texture.flow(e,"t"),b=this.roughnessMap.flow(e,"v3"),
|
|
2118
|
+
${_}
|
|
2119
|
+
`)}if(m.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float metalnessFactor = "+l.result+";"),this.roughnessMap){let g=this.roughnessMap.texture.flow(e,"t"),b=this.roughnessMap.flow(e,"v3"),w="";this.roughnessMap.projection.value===4?w=`
|
|
2119
2120
|
float roughnessChange = 1.0;
|
|
2120
2121
|
{
|
|
2121
2122
|
vec2 uv0 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2130,7 +2131,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2130
2131
|
roughnessChange = (r0 * weights.z + r1 * weights.x + r2 * weights.y);
|
|
2131
2132
|
}
|
|
2132
2133
|
float roughnessFactor = roughnessChange * ${s.result};
|
|
2133
|
-
`:
|
|
2134
|
+
`:w=`
|
|
2134
2135
|
vec2 roughnessMapCachedUv = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2135
2136
|
|
|
2136
2137
|
vec4 vals = texture(${g.result}, roughnessMapCachedUv);
|
|
@@ -2140,7 +2141,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2140
2141
|
|
|
2141
2142
|
const float roughnessScale = 1.0;
|
|
2142
2143
|
|
|
2143
|
-
${
|
|
2144
|
+
${w}
|
|
2144
2145
|
`)}else m.push(s.code," float roughnessFactor = "+s.result+";");p&&m.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),h?m.push(h.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+h.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let y="1.0";this.mask&&(this.mask.analyze(e),y=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
|
|
2145
2146
|
if (outgoingLight != diffuseColor) {
|
|
2146
2147
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
@@ -2150,7 +2151,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2150
2151
|
outgoingLight *= ao;
|
|
2151
2152
|
}
|
|
2152
2153
|
`),d&&m.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),p?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f&&m.push(`gl_FragColor.a *= ${f.result};`),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
|
|
2153
|
-
`)}return r}};import{UniformsLib as
|
|
2154
|
+
`)}return r}};import{UniformsLib as Rb,UniformsUtils as p3}from"three";var _l=class extends kt{constructor(){super("toon");this.nodeType="Toon";this.color=new $e(St),this.specular=new $e(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new Yt,this.previouseProjectionMatrix=new Yt,this.shadingAlpha=new se(1),this.shadingBlend=new Be(0)}get category(){return"toon"}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Te.frameIndex}),e.mergeUniform({resolution:Te.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(p3.merge([Rb.fog,Rb.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2154
2155
|
`));let i=["#include <beginnormal_vertex>",`
|
|
2155
2156
|
#ifndef USE_LAYER_DISPLACE
|
|
2156
2157
|
#include <defaultnormal_vertex>
|
|
@@ -2168,7 +2169,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2168
2169
|
#include <begin_vertex>
|
|
2169
2170
|
#endif
|
|
2170
2171
|
`];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>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
2171
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
2172
|
+
`)}else{e.mergeUniform({penumbraSize:Te.penumbraSize}),e.mergeUniform({frameIndex:Te.frameIndex}),e.mergeUniform({aoMap:Te.aoRenderTarget}),e.mergeUniform({aoEnabled:Te.aoEnabled}),this.color===void 0&&(this.color=new $e(St)),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"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,c=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=c!==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>",`
|
|
2172
2173
|
varying vec3 vViewPosition;
|
|
2173
2174
|
struct ToonMaterial {
|
|
2174
2175
|
vec3 diffuseColor;
|
|
@@ -2197,7 +2198,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2197
2198
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2198
2199
|
normal *= -1.0;
|
|
2199
2200
|
}
|
|
2200
|
-
`," ToonMaterial material;"];if(this.bumpMap){e.include(
|
|
2201
|
+
`," ToonMaterial material;"];if(this.bumpMap){e.include(Ko.dHdxy),e.include(Ko.perturbNormalArb);let h=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",g="";this.bumpMap.projection.value===4?g=`
|
|
2201
2202
|
vec3 bumpNormal = vec3(0.0);
|
|
2202
2203
|
{
|
|
2203
2204
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2233,11 +2234,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2233
2234
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
|
|
2234
2235
|
}
|
|
2235
2236
|
`),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&p.push(`gl_FragColor.a *= ${d.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
2236
|
-
`)}return r}};import{VideoTexture as dI,Texture as pI,CanvasTexture as fI}from"three";var bu=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var hf=class extends bu{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},ff;function Yx(n){return typeof n=="string"?n:(ff||(ff=new hf),ff.load(n))}var vu=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Su=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var $a=class extends vu{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isCanvas=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isCanvas=e.nodeName==="CANVAS",this.updateSrc(this.isCanvas?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))a&&(a.image=this.img,a.needsUpdate=!0);this.shared.requestRender()};if(this.isCanvas)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=Yx(e),this.img.onload=r}getTexture(e,r=1008){let o=this._cache[e][r];if(o)return o;{let i;return this.isCanvas&&(i=new fI(this.img,void 0,e,e,void 0,r)),this.isVideo?i=new dI(this.img,void 0,e,e):i=new pI(this.img,void 0,e,e,void 0,r),this.loaded&&(i.needsUpdate=!0),this._cache[e][r]=i,i}}setNeedsUpdate(e){for(let r of Object.values(this._cache))for(let o of Object.values(r))o&&(o.needsUpdate=e)}disposeTextures(){for(let[e,r]of Object.entries(this._cache))for(let[o,i]of Object.entries(r))i?.dispose(),this._cache[e][o]=void 0}dispose(){super.dispose(),this.disposeTextures()}};var pr=class extends $a{};import{Vector2 as jo,Vector3 as uo,Vector4 as wu}from"three";function zt(n,t){return t.color(n)}function Xx(n,t){switch(n.type){case"fresnel":return yI(n,t);case"gradient":return gI(n,t);case"depth":return xI(n,t);case"normal":return bI(n,t);case"noise":return vI(n,t);case"rainbow":return SI(n,t);case"toon":return wI(n,t);case"outline":return _I(n,t);case"transmission":return AI(n,t);case"color":return mI(n,t);case"pattern":return PI(n,t)}}function hI(n){return{type:n.type}}function kr(n,t){let{alpha:e,mode:r,isMask:o}=n,i=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...hI(n),alpha:i,mode:r,isMask:o}}function mI(n,t){return{...kr(n,t),color:zt(n.color,t)}}function yI(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:a}=n;return{...kr(n,t),color:zt(a,t),bias:e,scale:r,intensity:o,factor:i}}function gI(n,t){let{gradientType:e,smooth:r,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...kr(n,t),gradientType:e,smooth:r,colors:o.map(u=>new wu(u[0],u[1],u[2],u[3])),num:o.length,steps:i,offset:new jo(...s),morph:new jo(...l),angle:a}}function xI(n,t){let{gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:u,steps:c,smooth:d}=n;return{...kr(n,t),gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:new uo(...s),direction:l?new uo(...l):new uo(1,0,0),colors:u.map(p=>p!==void 0?new wu(p[0],p[1],p[2],p[3]):new wu(0,0,0,0)),steps:c.slice(0,u.length),smooth:d}}function bI(n,t){let{cnormal:e}=n;return{...kr(n,t),cnormal:new uo(e[0],e[1],e[2])}}function vI(n,t){return{...kr(n,t),scale:n.scale,move:n.move,fA:new jo(...n.fA),fB:new jo(...n.fB),size:new uo(...n.size),distortion:new jo(...n.distortion),colorA:zt(n.colorA,t),colorB:zt(n.colorB,t),colorC:zt(n.colorC,t),colorD:zt(n.colorD,t),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function SI(n,t){return{...kr(n,t),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new uo(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new uo(...n.offset)}}function wI(n,t){return{...kr(n,t),positioning:n.positioning,colors:n.colors.map(e=>new wu(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new uo(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:zt(n.shadowColor,t),offset:new uo(...n.offset)}}function _I(n,t){return{...kr(n,t),outlineColor:zt(n.outlineColor,t),contourColor:zt(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new uo(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function AI(n,t){return{...kr(n,t),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function PI(n,t){return{...kr(n,t),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new jo(...n.offset),colorA:zt(n.colorA,t),colorB:zt(n.colorB,t),frequency:new jo(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new jo(...n.vertical),horizontal:new jo(...n.horizontal),sides:n.sides}}var Sn=class extends St{};import{Vector4 as OI}from"three";var mf={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},yf={depth:["colors"]};function CI(n,t,e){if(t==="isMask")return!0;let r=mf[n.type],o=yf[n.type];if(o!==void 0){let i=n.color;if(o.includes(t)){let a=i[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function gf(n,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=t.image(a),l=r;l.image instanceof pr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=t.video(a),l=r;l.image instanceof pr||l.image.deref(),l.image=s}if("wrapping"in i){let a=r;a.wrap=i.wrapping}if("minFilter"in i){let a=r;a.minFilter=i.minFilter}if("repeat"in i||"offset"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),s.updateMatrix()}return o}function Qx(n,t,e,r){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(xf(i,e,r,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof bn))switch(o=o||CI(e,i,a),s.constructor){case ze:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Sn?s.value=new St(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case er:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Sn?s.value=new St(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case rt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Rt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case qt:{gf(a,t,e);break}case Fr:{s.value=a.map(l=>new OI(...l));break}default:{s.value=a;break}}}return o}var wn=(n,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,fo=class{constructor(t,e,r,o,i){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)xf(a,this,r,i)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Wt.createLigherLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let i=r.type==="texture"?o.canvas(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new Qn(i,r.texture.wrapping,r.texture.minFilter??1008),s=new gu(i),l=new xu(r.texture.repeat,r.texture.offset),u=new J(r.crop?1:0),c=new Pe(r.projection??0),d=new Pe(["x","y","z"].indexOf(r.axis)??0),p=new Pe(r.side??0),f=new rt(r.size?new jr(r.size[0],r.size[1]):new jr(100,100)),h=new J(r.blending??0),m=new J(wn(r.alpha,o)),y=new Pe(r.mode??0),g=new st(r.isMask??!1),b=new vn(a,s,u,c,d,p,f,h,l,m,y,g),S=new Re(b.calpha,"f");return new Ke(t,e,r,{texture:a,textureSize:s,crop:u,projection:c,axis:d,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:g},b,y,S,g,o)}else if(r.type==="matcap"){let i=o.image(r.texture.image),a=new Qn(i,r.texture.wrapping,r.texture.minFilter??1008),s=new J(wn(r.alpha,o)),l=new Pe(r.mode??0),u=new st(r.isMask??!1),c=new Ga(a,s,l,u),d=new Re(c.calpha,"f");return new Ke(t,e,r,{texture:a,alpha:s,mode:l,isMask:u},c,l,d,u,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Rt(new po(...r.offset)),a=new J(r.scale??10),s=new J(r.intensity??8),l=new J(r.movement??1),u=new Pe(r.noiseType??0),c=new Pe(r.voronoiStyle??0),d=new J(r.smoothness??.5),p=new J(r.seed??0),f=new J(r.highCut??1),h=new J(r.lowCut??0),m=new Pe(r.quality??1),y=new Wa(s,l,i,c,d,p,f,h,m,a,u);return new il(t,e,r,{offset:i,scale:a,intensity:s,movement:l,noiseType:u,voronoiStyle:c,smoothness:d,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return II(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):Qx(o.props,r.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?gf(o.props,r.shared,this):!0;return!1}dispose(){if(TI(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof pr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},Ke=class extends fo{constructor(e,r,o,i,a,s,l,u,c){super(e,r,o,i,c);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=u}},il=class extends fo{constructor(e,r,o,i,a,s){super(e,r,o,i,s);this.position=a}},Wt=class extends fo{constructor(e,r,o,i,a,s){super(e,r,o,a,s);this.node=i}static createLigherLayer(e,r,o,i){let a,s=new J(wn(o.alpha,i)),l=new Pe(o.mode),u=new J(o.bumpMapIntensity),c=new J(wn(o.alphaOverride,i)),d;if(!o.visible)a=new Fo,d={};else if(o.category==="lambert"){a=new tl;let p=new ze(i.color(o.emissive)??0),f=new st(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new nl;let p=new J(o.shininess??30),f=new ze(i.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new ol;let p=new J(o.roughness??.3),f=new J(o.metalness??0),h=new J(o.reflectivity??.5),m=new st(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new rl;let p=new J(o.shininess??30),f=new ze(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new st(o.occlusion??!0);d={shininess:p,specular:f,occlusion:h},a.shininess=p,a.specular=f,a.occlusion=h}return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=u,a.alphaOverride=c,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new Wt(e,r,o,a,d,i)}get category(){return this.node.category}};function TI(n){let t=n instanceof fo?n.type:n;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function vr(n){return{alpha:new J(n.alpha??1),mode:new Pe(n.mode??0),isMask:new st(n.isMask??!1)}}function MI(n,t,e,r,o){switch(n.type){case"color":{let i=new ze(r.color??dt),a=vr(r),s=new Kn(i,a.alpha),l=new Re(s.calpha,"f");return new Ke(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new ze(r.color??16777215),a=new J(r.bias??.1),s=new J(r.scale??1),l=new J(r.intensity??2),u=new J(r.factor??1),c=vr(r),d=new Js(i,a,s,l,u,c.alpha,c.mode,c.isMask),p=new Re(d.calpha,"f");return new Ke(t,e,n,{color:i,bias:a,scale:s,intensity:l,factor:u,...c},d,c.mode,p,c.isMask,o)}case"rainbow":{let i=new J(r.filmThickness??30),a=new J(r.movement??0),s=new Rt(r.wavelengths??new po(0,0,0)),l=new J(r.noiseStrength??0),u=new J(r.noiseScale??1),c=new Rt(r.offset??new po(0,0,0)),d=vr(r),p=new Ua(i,a,s,l,u,c,d.alpha,d.isMask),f=new Re(p.calpha,"f");return new Ke(t,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:u,offset:c,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let i=new J(r.thickness??10),a=new J(r.ior??1.5),s=new J(r.roughness??.5),l=Se.transmissionSize,u=Se.transmissionRenderTarget,c=Se.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new rt(p/d,1):new rt(1,d/p),h=vr(r),m=new qa(i,a,s,l,u,c,f,h.alpha),y=new Re(m.calpha,"f");return new Ke(t,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new Pe(r.positioning??0),a;r.colors?a=new Fr(r.colors.length,r.colors):(a=new Fr(10,new Ya(0,0,0,1)),a.value[1]=new Ya(1,1,1,1));let s;r.steps?s=new Gr(r.steps.length,r.steps):(s=new Gr(10,1),s.value[0]=0);let l=new Rt(r.source??new po(0,0,0)),u=new st(r.isWorldSpace??!0),c=new J(r.noiseStrength??0),d=new J(r.noiseScale??1),p=new er(r.shadowColor),f=new Rt(r.offset??new po(0,0,0)),h=vr(r),m=new Ha(i,a,s,l,u,c,d,p,f,h.alpha),y=new Re(m.calpha,"f");return new Ke(t,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:u,noiseStrength:c,noiseScale:d,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let i=new ze(r.outlineColor??16777215),a=new ze(r.contourColor??16777215),s=new J(r.outlineWidth??.1),l=new J(r.contourWidth??.1),u=new J(r.outlineThreshold??.1),c=new J(r.contourThreshold??.1),d=new J(r.outlineSmoothing??.1),p=new J(r.contourFrequency??.1),f=new Rt(r.contourDirection??new po(0,1,0)),h=new st(r.positionalLines??!1),m=new st(r.compensation??!0),y=Se.normalRenderTarget,g=Se.normalRenderTargetDepth,b=Se.pixelRatioNode,S=Se.resolution,w=vr(r),v=new ka(i,a,s,l,u,c,d,p,f,h,m,S,y,g,b,w.alpha),_=new Re(v.calpha,"f");return new Ke(t,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:u,contourThreshold:c,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...w},v,w.mode,_,w.isMask,o)}case"depth":{let i=new Pe(r.gradientType??0),a=new st(r.smooth??!1),s=new J(r.near??50),l=new J(r.far??200),u=new J(r.isVector??1),c=new J(r.isWorldSpace??0),d=new Rt(r.origin??new po),p=new Rt(r.direction??new po),f;r.colors?f=new Fr(r.colors.length,r.colors):(f=new Fr(2,new Ya(0,0,0,1)),f.value[1]=new Ya(1,1,1,1));let h;r.steps?h=new Gr(r.steps.length,r.steps):(h=new Gr(2,1),h.value[0]=0);let m=vr(r),y=new Va(i,a,s,l,u,c,d,p,f,h,m.alpha,m.isMask),g=new Re(y.calpha,"f");return new Ke(t,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:u,isWorldSpace:c,origin:d,direction:p,colors:f,steps:h,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new J(r.scale??1),a=new Rt(r.size??new po(100,100,100)),s=new J(r.move??1),l=new rt(r.fA??new jr(1.7,9.2)),u=new rt(r.fB??new jr(8.3,2.8)),c=new rt(r.distortion??new jr(1,1)),d=new er(r.colorA),p=new er(r.colorB),f=new er(r.colorC),h=new er(r.colorD),m=new Pe(r.noiseType??0),y=new Pe(r.voronoiStyle??0),g=new J(r.highCut??1),b=new J(r.lowCut??0),S=new J(r.smoothness??.5),w=new J(r.seed??.5),v=new Pe(r.quality??1),_=vr(r),A=new Fa(i,a,s,l,u,c,d,p,f,h,_.alpha,m,_.isMask,y,g,b,S,w,v),x=new Re(A.calpha,"f");return new Ke(t,e,n,{scale:i,size:a,move:s,fA:l,fB:u,distortion:c,colorA:d,colorB:p,colorC:f,colorD:h,noiseType:m,..._,voronoiStyle:y,highCut:g,lowCut:b,smoothness:S,seed:w,quality:v},A,_.mode,x,_.isMask,o)}case"normal":{let i=new Rt(r.cnormal??new po(1,1,1)),a=vr(r),s=new Ba(i,a.alpha),l=new Re(s.calpha,"f");return new Ke(t,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Pe(r.gradientType??0),a=new st(r.smooth??!1),s;r.colors?s=new Fr(r.colors.length,r.colors):(s=new Fr(10,new Ya(0,0,0,1)),s.value[1]=new Ya(1,1,1,1));let l;r.steps?l=new Gr(r.steps.length,r.steps):(l=new Gr(10,1),l.value[0]=0);let u=new rt(r.offset??new jr(0,0)),c=new rt(r.morph??new jr(0,0)),d=new J(r.angle??0),p=vr(r),f=new za(i,a,s,l,u,c,d,p.alpha,p.isMask),h=new Re(f.calpha,"f");return new Ke(t,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:u,morph:c,angle:d,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let i=new Pe(r.style??0),a=new Pe(r.projection??0),s=new Pe(["x","y","z"].indexOf(r.axis)??0),l=new J(r.blending??0),u=new rt(r.offset??new jr(0,0)),c=new er(r.colorA),d=new er(r.colorB),p=new rt(r.frequency??new jr(10,10)),f=new J(r.size??.5),h=new J(r.variation??0),m=new J(r.smoothness??.5),y=new J(r.zigzag??0),g=new J(r.rotation??0),b=new rt(r.vertical??new jr(0,1)),S=new rt(r.horizontal??new jr(0,1)),w=new Pe(r.sides??6),v=vr(r),_=new ja(i,a,s,l,u,c,d,p,f,h,m,y,g,b,S,w,v.alpha,v.isMask),A=new Re(_.calpha,"f");return new Ke(t,e,n,{style:i,projection:a,axis:s,blending:l,offset:u,colorA:c,colorB:d,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:g,vertical:b,horizontal:S,sides:w,...v},_,v.mode,A,v.isMask,o)}default:{let i=new ze(1,0,0,1),a=vr(r),s=new Kn(i,a.alpha),l=new Re(s.calpha,"f");return new Ke(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function II(n,t,e,r){let o=Xx(e,r);return MI(e,n,t,o,r)}function xf(n,t,e,r){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=wn(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=t.uniforms[`f${t.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function _u(n,t){let e=0,r=n.layers.find(o=>o.data.type==="light");if(r){let o=r.data,i=Number(t.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(t.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=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,u=t.color(o.data.colorD).a,c=Math.min(a,Math.min(s,Math.min(l,u)));c<1&&(i=c)}e+=(1-e)*i}}return e<1}var rr=class extends NI{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Au=class extends rr{constructor(e,r,o,i){super();this.flatShading=e;this.side=r;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,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o){return this.root.getFlavor(e,r,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,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Jn=class extends rr{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,r)}get nodeMaterial(){return this}getFlavor(e,r,o){let i=o?6:(e?3:0)+r;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Au(e,r,o,this),this.flavors[i]=a,a.flatShading=e,a.side=r,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,r,o=!1){(this.data!==e||o)&&this.reset0(e,r)}reset0(e,r){this.data=e;let o=e.layers??Bt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>fo.create(this.layerIdGen++,i.id,i.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=_u(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=_u(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/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=_u(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)))):s.setValue(a,r))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(r=>r instanceof Wt),this.lightLayer===void 0&&(this.lightLayer=new Wt(0,"",{...ht.defaultData("light","phong"),visible:!1},new Fo,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Wt);if(!e)return;let r=e.data,o=r.bumpMap,i=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof Ke&&s.color instanceof vn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(r!==void 0?this.data=r:r=this.data,this.transparent=_u(r,o.shared),e.path[0]==="layers"){this.data=r;let i=o.shared,a=e.path[1];if(a===void 0){if(this.layers.reverse(),e.type===4){let s=fo.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,s),o.scene.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene.markNeedsUpdateRendererDirty();else if(e.type===6){let s=this.layers.findIndex(u=>u.uuid===e.id),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate(o.shared)}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),u;if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?u={...e.props,alpha:wn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:u={...e.props,alphaOverride:wn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...u?{props:u}:{},path:e.path.slice(2)},l,o)){let d=fo.create(this.layerIdGen++,a,l,i);this.layers.splice(this.layers.findIndex(p=>p.uuid===a),1,d),this.onUpdate(o.shared)}}}}else this.reset(r,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof Ke?r.color.mask=void 0:r instanceof Wt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof Ke&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Wt?i.node.mask=new It(r.color,r.alpha,It.MUL):i instanceof Ke&&(i.isMask.value||(i.color.mask=new It(r.color,r.alpha,It.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof Ke),r=this.layers.findIndex(o=>o instanceof Wt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let a=this.layers[i];if(a instanceof Ke){if(a.isMask.value)continue;o=new Ea(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Re("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Wt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof Ke){if(i.isMask.value)continue;e=new Ea(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof il);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new It(r,e[o].position,It.ADD),r=new It(r,new J(.5).setReadonly(!0),It.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),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,r){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,r);i.uniforms[`f${i.id}_intensity`].value=a}}computeCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.visible?r.category.toUpperCase():"Basic"}"`;else{let o=(mf[r.type]??[]).map(u=>r[u]),i=(yf[r.type]??[]).map(u=>r[u]?.length??0),a=[...o,...i],s="isMask"in r&&r.isMask,l=`"${r.type}-${r.visible}-${s}"`;a.length?e+=`[${l}, "${a.join('","')}"],`:e+=l}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new Na;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this}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 Ke){let r=e.params.texture;if(r instanceof Qn&&!r.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(rr.prototype,{properties:{get:function(){return this.fragment.properties}}});var ei=class extends Jn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var eb=kt(Kx());var Zx=new Map;function Jx(n){if(typeof n=="string")return n;let t=Zx.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},Zx.set(n,t)),t.url}var ti=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof t=="string"?i={src:t}:i={src:Jx(t),format:"wav"},this.sound=new eb.Howl(i),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as DI,Vector2 as ri,Path as tb,Shape as EI,ShapeUtils as BI,Color as LI}from"three";var Ou=class{constructor(){this.type="ShapePath";this.color=new LI;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new tb,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,i,a){return this.currentPath?.bezierCurveTo(t,e,r,o,i,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,g,b){let S=m.x,w=y.x,v=g.x,_=b.x,A=m.y,x=y.y,T=g.y,C=b.y,P=(_-v)*(A-T)-(C-T)*(S-v),O=(w-S)*(A-T)-(x-A)*(S-v),M=(C-T)*(w-S)-(_-v)*(x-A),I=P/M,N=O/M;if(M===0&&P!==0||I<=0||I>=1||N<0||N>1)return null;if(P===0&&M===0){for(let B=0;B<2;B++)if(i(B===0?g:b,m,y),r.loc===e.ORIGIN){let D=B===0?g:b;return{x:D.x,y:D.y,t:r.t}}else if(r.loc===e.BETWEEN){let D=+(S+r.t*(w-S)).toPrecision(10),G=+(A+r.t*(x-A)).toPrecision(10);return{x:D,y:G,t:r.t}}return null}else{for(let G=0;G<2;G++)if(i(G===0?g:b,m,y),r.loc===e.ORIGIN){let L=G===0?g:b;return{x:L.x,y:L.y,t:r.t}}let B=+(S+I*(w-S)).toPrecision(10),D=+(A+I*(x-A)).toPrecision(10);return{x:B,y:D,t:I}}}function i(m,y,g){let b=g.x-y.x,S=g.y-y.y,w=m.x-y.x,v=m.y-y.y,_=b*v-w*S;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===g.x&&m.y===g.y){r.loc=e.DESTINATION,r.t=1;return}if(_<-Number.EPSILON){r.loc=e.LEFT;return}if(_>Number.EPSILON){r.loc=e.RIGHT;return}if(b*w<0||S*v<0){r.loc=e.BEHIND;return}if(Math.sqrt(b*b+S*S)<Math.sqrt(w*w+v*v)){r.loc=e.BEYOND;return}let A;b!==0?A=w/b:A=v/S,r.loc=e.BETWEEN,r.t=A}function a(m,y){let g=[],b=[];for(let S=1;S<m.length;S++){let w=m[S-1],v=m[S];for(let _=1;_<y.length;_++){let A=y[_-1],x=y[_],T=o(w,v,A,x);T!==null&&g.find(C=>C.t<=T.t+Number.EPSILON&&C.t>=T.t-Number.EPSILON)===void 0&&(g.push(T),b.push(new ri(T.x,T.y)))}}return b}function s(m,y,g){let b=new ri;y.getCenter(b);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(b)&&a(m,w.points).forEach(_=>{S.push({identifier:w.identifier,isCW:w.isCW,point:_})})}),S.sort((w,v)=>w.point.x-v.point.x),S}function l(m,y,g,b,S){(S==null||S==="")&&(S="nonzero");let w=new ri;m.boundingBox.getCenter(w);let v=[new ri(g,w.y),new ri(b,w.y)],_=s(v,m.boundingBox,y);_.sort((O,M)=>O.point.x-M.point.x);let A=[],x=[];_.forEach(O=>{O.identifier===m.identifier?A.push(O):x.push(O)});let T=A[0].point.x,C=[],P=0;for(;P<x.length&&x[P].point.x<T;)C.length>0&&C[C.length-1]===x[P].identifier?C.pop():C.push(x[P].identifier),P++;if(C.push(m.identifier),S==="evenodd"){let O=C.length%2===0,M=C[C.length-2];return{identifier:m.identifier,isHole:O,for:M}}else if(S==="nonzero"){let O=!0,M=null,I=null;for(let N=0;N<C.length;N++){let B=C[N];y[B]&&(O?(I=y[B].isCW,O=!1,M=B):I!==y[B].isCW&&(I=y[B].isCW,O=!0))}return{identifier:m.identifier,isHole:O,for:M}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let u=0,c=999999999,d=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,b=999999999,S=-999999999,w=999999999;for(let v=0;v<y.length;v++){let _=y[v];_.y>g&&(g=_.y),_.y<b&&(b=_.y),_.x>S&&(S=_.x),_.x<w&&(w=_.x)}d<=S&&(d=S+1),c>=w&&(c=w-1),y.length&&p.push({curves:m.curves,points:y,isCW:BI.isClockWise(y),identifier:u++,boundingBox:new DI(new ri(w,b),new ri(S,g))})});let f=p.map(m=>l(m,p,c,d,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let g=new EI;g.curves=m.curves,f.filter(S=>S?.isHole&&S.for===m.identifier).forEach(S=>{if(S){let w=p[S.identifier],v=new tb;v.curves=w.curves,g.holes.push(v)}}),h.push(g)}}),h}};var bf=!1,ob,vf=new Promise(n=>{ob=n}),rb=!1;var Cu;function nb(){if(bf=!0,rb)return;if(Cu)return Cu;async function n(){let e=await import("./opentype.js");ob(e),rb=!0}return Cu=n(),Cu}var al=class{async load(t,e,r=()=>{}){let{load:o}=await vf;o(t,(i,a)=>{i||!a?r(i??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await vf;try{let o=e(t),i=new r,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 RI(n){return await(await fetch(n)).arrayBuffer()}var VI=new al;async function Sf(n){let t,e,r=!1;if(n.url?(t=await RI(n.url),e=n.url,r=n.url.startsWith("/")):n.data&&(t=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),t)if(bf){let o=await VI.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as zI,LineCurve as GI,QuadraticBezierCurve as FI}from"three";function kI(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var Tu=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=Sf(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=Sf(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=r.length===i.length;for(let u=0;u<r.length;u++){let c=r[u].index,d=String.fromCharCode(r[u].unicode),p=i[s];if(kI(c,p)||l)a.push({char:d,index:c,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,h="",m=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===c&&(g=!0),s>e.length&&(g=!0);a.push({char:d,index:c,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e){if(!this._isLoaded)return;let r=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=t.map(b=>this.getTextWidth(b,e)),s=e.width,l=this.getCharWidth(`
|
|
2237
|
-
`,e),u=e.horizontalAlign===1?l:0,c=this.computeSpaceWidthForLine(t,0,e),d=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,t[0],l),p=this.getLineInitialOffsetY(i,t.length,e.height,o,e.verticalAlign),f=[],h=t.map(b=>[]),m=t.map(b=>[]),y;for(let b=0;b<t.length;b++){let
|
|
2238
|
-
`:x.unicode?String.fromCharCode(x.unicode):void 0,
|
|
2239
|
-
`)
|
|
2240
|
-
`)>=0&&(t-=i),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,i){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,u=-this.ascender*o-l/2;return i===3?-(r-a-u):i===2?-(r*.5-a*.5-u):u}createPath(t,e,r,o,i){let a=t.getPath(r,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new Ou,l=(t.advanceWidth??1)*e;if(t)for(let u of a.commands){let c=s.currentPath?.currentPoint;if(!(c&&u.type!=="Z"&&c.x===u.x&&-c.y===u.y))switch(u.type){case"M":s.moveTo(u.x,-u.y);break;case"L":s.lineTo(u.x,-u.y);break;case"Q":s.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":s.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return s.subPaths.forEach(u=>{let c=jI(u.curves);c!==void 0&&u.currentPoint.distanceTo(c)>0&&u.lineTo(c.x,c.y)}),{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r){let o=this.getCharWidth(" ",r),i=t[e];if(i){let a=this.countSpaces(i.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&a){let s=r.width,l=this.getTextWidth(i,r);return(s-(l-a*o))/a}}return o}countSpaces(t){return(t.match(/ /g)||[]).length}};function jI(n){if(n.length){let t=n[0];if(t instanceof GI)return t.v1;if(t instanceof zI||t instanceof FI)return t.v0}}var wf=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},sl=class extends wf{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let i=Go(e,r,this.flatShading,o);return i.computeBoundingSphere(),i}};var ib={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as ab}from"three";var _f=class extends Su{constructor(e){super();this.shared=e}create(e){return new $a(e,this.shared)}},oi=class{constructor(t,e={}){this.data=t;this.geometryCache=new sl(!0);this.geometryCache2=new sl(!1);this.imageHolderCache=new _f(this);this.thisContext={scene:ib,shared:this};this.deletedMaterial=new ei(Bt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new pr(ta.emptyImage,this);this.deletedVideo=new pr($i.defaultVideo,this);this.materials={};this.images={};this.canvases={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.variables={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.videos)for(let[r,o]of Object.entries(e.videos))this.addVideo(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o);if(e.particles)for(let[r,o]of Object.entries(e.particles))this.addParticle(r,o);this.reset(t)}setRequestRender(t){this._requestRender=t}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1){this.resetLib(t.lib);for(let{id:r,data:o}of t.variables)this.addVariableHolder(r,o),e&&this.updateVariableHolder(r,o);for(let[r,o]of Object.entries(t.images))this.addImage(r,o);for(let[r,o]of Object.entries(t.videos))this.addVideo(r,o);for(let[r,o]of Object.entries(t.colors))this.addColor(r,o);for(let[r,o]of Object.entries(t.materials))this.addMaterial(r,o);for(let[r,o]of Object.entries(t.audios))this.addAudio(r,o);for(let[r,o]of Object.entries(t.particles))this.addParticle(r,o);for(let[r,o]of Object.entries(t.fonts))this.addFont(r,o)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new ei(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new Jn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new pr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addCanvas(t,e){return this.canvases[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.canvases[t].updateSrc(e),!0):(this.canvases[t]=new pr(e,this),!1)}canvas(t){return this.canvases[t]}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new pr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Sn(e.r,e.g,e.b,e.a):this.colors[t]=new Sn(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new St(0,0,0,0))}else return"a"in t?new St(t.r,t.g,t.b,t.a):new St(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof ti)return e;{let r=new ti({src:e.data});return this.audios[t]=r,r}}addParticle(t,e){this.particles[t]=e}getParticle(t){return this.particles[t]}deleteParticle(t){this.particles[t]&&delete this.particles[t]}deleteAudio(t){let e=this.audios[t];e&&(e instanceof ti&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new Tu(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof ti&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){return this.variables[t]===void 0?(this.variables[t]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0):(this.variables[t].value=e.value,!1)}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e;let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let i=this.variables[t].locations.length-1;i>=0;i--){let a=this.variables[t].locations[i];if(a[0]==="material"){let s=a[1],l=r,u={scene:o,shared:this},c=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(c,l,u)});let d=this.materials[s];d&&d.onVariableUpdate(c,l,u)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].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]]=r*ab.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(r,a),Ce.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 u=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(u.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.instances.forEach(c=>{let d=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(d.geometry),c.createGeometryDelayed(this.entityOpContext),c.onVariableUpdate(!0)})}}}}return!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=ab.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],i=o.locations?.findIndex(a=>Ze.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;r=this.variables[r].value}while(typeof r=="string");return e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r}else return t}getVariables(){return this.variables}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.particles))this.addParticle(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===1&&t.type===1?this.addParticle(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){this.data=e,t.path[0]==="images"?t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===2&&t.type===0?t.props.data&&this.addParticle(t.path[1],e.particles[t.path[1]]):t.path.length===1&&t.type===1?this.addParticle(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(Je.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r}):t.path[0]==="fonts"?t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===2&&t.type===0&&"value"in t.props?this.updateVariable(t.path[1],t.props.value):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id):t.path[0]==="lib"&&this.updateLibByOp(Je.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),i={...this.data.fonts[t],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}},sb=new oi(xr.emptyData());var or=class extends bt{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Hy(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(Oe(e.path,["material"])&&this.material instanceof rr)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(Je.drop(e,1),r.material,o);else if(Oe(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in r&&i<this.material.length){let a=r.materials[i];typeof a!="string"&&this.material[i].updateByOp(Je.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),r.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>r.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.scene.markNeedsUpdateRendererDirty())),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&&Ol(this.material).forEach(e=>{e instanceof rr&&(e instanceof ei||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as HI,Matrix4 as Af,Vector3 as pb,Vector4 as Pf}from"three";var lb=new pb,cb=new Pf,ub=new Pf,qI=new pb,db=new Af,ot=class extends or{constructor(e,r,o){super(e,r);this.data=r;this.isSkinnedMesh=!1;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.bindMode=r.bindMode,this.bindMatrix=new Af().fromArray(r.bindMatrix),this.bindMatrixInverse=new Af)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof HI&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof oi){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Cs.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Cs.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Oe(e.path,["geometry"])&&this.updateByPatchedOpGeometry(Je.drop(e,1),r.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let c={...this.data.geometry,...i};this.localGeometry=Go(c,r,this.data.flatShading,this)}let a,s,l;i.scaleBaked?[a,s,l]=i.scaleBaked:{width:a,height:s,depth:l}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Ys(this.localGeometry.attributes,a/u.sxPrev,s/u.syPrev,l/u.szPrev),u.sxPrev=a,u.syPrev=s,u.szPrev=l}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Go(i,r,this.data.flatShading,this)}}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof pt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r),super.updateState(e,r)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,this.isSkinnedMesh=!0,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new Pf,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){r.fromBufferAttribute(o,i);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(i,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;cb.fromBufferAttribute(i.attributes.skinIndex,e),ub.fromBufferAttribute(i.attributes.skinWeight,e),lb.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=ub.getComponent(a);if(s!==0){let l=cb.getComponent(a);db.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(qI.copy(lb).applyMatrix4(db),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function $I(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let t=new Map,e=n.geometry.attributes,r=e.position.array,o=e.normal.array,i=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new Cf(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Cf})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(i[a]=l.x,i[a+1]=l.y,i[a+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new fb(i,3))}function YI(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=new Cf;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),r[i]=o.x,r[i+1]=o.y,r[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new fb(r,3))}function Xa(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof rr)||n.material.getLayersOfType("outline").length===0)return;n instanceof ot&&n.is2DAndNoDepth?YI(n):$I(n)}function Qa(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Of.seededRandom(o),Of.seededRandom(o+1e4),Of.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=i[a%3];n.geometry.setAttribute("randomColor",new WI(r,3))}var ho=new XI,ll=new KI;function mb(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var ni=class extends ot{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new QI;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=pt.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,Xa(this),Qa(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(i=>i.getFlavor(!1,i.side,i.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){pt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&pt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=pt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=pt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,bt.prototype.raycast.call(this,e,r),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new hb,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;ho.setFromBufferAttribute(r),ho.getCenter(o),e.boundingSphere.radius=o.distanceTo(ho.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ho.getSize(ll),this.hasNonUniformScale&&ll.divide(this.scale);let i={width:ll.x,height:ll.y,depth:ll.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let r=this.originalGeometry;ho.min.set(e[0],e[2],e[4]),ho.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(ho.min.applyMatrix4(this.shearScaleInv),ho.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new hb);let o=r.boundingSphere.center;ho.getCenter(o),r.boundingSphere.radius=o.distanceTo(ho.max)}freeSubdivPointer(){this.subdivPointer&&(pt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as ZI,Vector3 as ai}from"three";var yb=-1,JI=1,gb={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},xb={polygon_center:0,edge:1,vertex:2},cl=(n,t)=>(e,r)=>!t||e===0||n===0?0:n*r/100,ve=(n,t)=>{let e=Math.abs(t),r=e*-1;return(n-yb)*(e-r)/(JI-yb)+r};function bb(n){let t=[],e={};for(var r=0,o=n.length;r<o;r++){var i=JSON.stringify(n[r].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(t.push(n[r]),e[i]=!0)}return t}var eN=new ai,Mu=new ai,tN=new ai,rN=new ai;function Ka(n,t){let e=tN.fromArray(n),r=rN.fromArray(t);Mu.copy(r).sub(e);let o=Mu.length();return Mu.normalize().multiplyScalar(o*.5),eN.copy(e).add(Mu).toArray()}var Sr=new ZI,Iu=new ai,Nu=new ai,ii=new ai;function vb(n){let t=[];for(let e=0;e<=n.index.count;e++)if(Iu.fromArray(n.index.array,e*3),Sr.setFromAttributeAndIndices(n.attributes.position,Iu.x,Iu.y,Iu.z),Sr.getNormal(Nu),Sr.getMidpoint(ii),!(isNaN(ii.x)||isNaN(ii.y)||isNaN(ii.z))){let{a:r,b:o,c:i}=Sr,a=r.toArray(),s=o.toArray(),l=i.toArray(),u=r.distanceTo(o),c=o.distanceTo(i),d=i.distanceTo(r),p=Ka(a,s),f=Ka(s,l),h=Ka(l,a),m=[u,c,d],y=Math.max(...m),g=m.filter(w=>Math.round(w)===Math.round(y)).length>1,b=[],S=Sr.getMidpoint(ii).toArray();y===u&&!g&&(b=[f,h,h],S=p),y===c&&!g&&(b=[p,h,h],S=f),y===d&&!g&&(b=[p,f,f],S=h),g&&(b=[p,f,h]),t.push({vertices:[a,s,l],faceCenters:b,midpoint:S,norm:Sr.getNormal(Nu).toArray()})}return t}function Sb(n){let t=[],{position:e}=n.attributes;for(let r=0;r<e.count;r++){Sr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Sr.getNormal(Nu),Sr.getMidpoint(ii);let o=Sr.a.toArray(),i=Sr.b.toArray(),a=Sr.c.toArray();t.push({vertices:[o,i,a],faceCenters:[Ka(o,i),Ka(i,a),Ka(a,o)],midpoint:ii.toArray(),norm:Nu.toArray()})}return t}var oN=4,nN=.5,Tf=n=>.5*(1-Math.cos(n*Math.PI)),Mf=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),i=Math.floor(e),a=Math.floor(r),s=t-o,l=e-i,u=r-a,c,d,p=0,f=.5,h,m,y;for(let g=0;g<oN;g++){let b=o+(i<<4)+(a<<8);c=Tf(s),d=Tf(l),h=this.perlin[b&4095],h+=c*(this.perlin[b+1&4095]-h),m=this.perlin[b+16&4095],m+=c*(this.perlin[b+16+1&4095]-m),h+=d*(m-h),b+=256,m=this.perlin[b&4095],m+=c*(this.perlin[b+1&4095]-m),y=this.perlin[b+16&4095],y+=c*(this.perlin[b+16+1&4095]-y),m+=d*(y-m),h+=Tf(u)*(m-h),p+=h*f,f*=nN,o<<=1,s*=2,i<<=1,l*=2,a<<=1,u*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),u>=1&&(a++,u--)}return p}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},wb=Mf;import{Vector3 as iN,Matrix4 as aN,Ray as sN}from"three";var _b=new iN,Ab=new aN,Pb=new sN;function Ob(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var Za=class extends ot{constructor(e,r,o){super(e,r,o);this.data=r}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Ab.copy(o).invert(),Pb.copy(e.ray).applyMatrix4(Ab),Pb.intersectBox(this.singleBBox,_b))){let i=_b.applyMatrix4(o),a=e.ray.origin.distanceTo(i);r.push({distance:a,point:i.clone(),object:this})}}};var $t=1e-4,mo,Ib,Nb,Db,Tb=new fr,Mb=new fr;du.then(n=>{mo=n,Ib=[mo.get_face_center,mo.get_edge_midpoint,mo.get_vertex_position],Nb=[mo.get_face_normal,mo.get_edge_normal,mo.get_vertex_normal],Db=[mo.face_count,mo.edge_count,mo.vertex_count]});var cN=new li,uN=new li,_n=new fr,si=new fr,ul=new fr,Nf=new fr,dN=new fr,pN=new fr;var Uo=new wb,es=class extends ia(lN){constructor(e,r){super();this.parameters=r;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 r of this.children)r instanceof Lo&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof Lo&&r.object===e&&(r.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(r=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===r)return;if(o.length<r)for(let i=0,a=r-o.length;i<a;++i){let s=new Lo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-r;i<a;++i)this.remove(o[i])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,i=r-this.children.length;o<i;++o){let a=new Lo(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-r;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let r=e.radial,o=r.start*Cb.DEG2RAD,i=r.end*Cb.DEG2RAD,a=o-i,s=new If(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new fr(0,0,1);break;case"y":l=new fr(0,1,0);break;default:case"x":l=new fr(1,0,0);break}let u=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,c=u.noiseType==="perlin";Uo.noiseSeed(u.seed);let d=Gc((0,Ja.default)(u.seed)),p=cl(u.strength,this.parameters.randomness);for(let[f,h]of this.children.entries()){let m=f*(u.freqScale/10)+u.movement,y=c?Uo.noise(m):d(m,m),g=f+1;h.scale.x=r.scale[0]+p(g,ve(y,u.scale[0]))||$t,h.scale.y=r.scale[1]+p(g,ve(y,u.scale[1]))||$t,h.scale.z=r.scale[2]+p(g,ve(y,u.scale[2]))||$t,h.position.setScalar(0);let b=a/e.count*f-o;switch(r.axis){case"x":h.rotation.set(0,b,0);break;case"y":h.rotation.set(0,0,b);break;case"z":h.rotation.set(b,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0]+p(g,ve(y,u.position[0])),h.position.y+=r.position[1]+p(g,ve(y,u.position[1])),h.position.z+=r.position[2]+p(g,ve(y,u.position[2]));let S=p(g,ve(y,u.rotation[0])),w=p(g,ve(y,u.rotation[1])),v=p(g,ve(y,u.rotation[2]));r.alignment===!0?(h.rotation.x+=s.x+S,h.rotation.y+=s.y+w,h.rotation.z+=s.z+v):h.rotation.set(s.x+S,s.y+w,s.z+v)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new If(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Uo.noiseSeed(i.seed);let s=Gc((0,Ja.default)(i.seed)),l=cl(i.strength,this.parameters.randomness);for(let[u,c]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=a?Uo.noise(d):s(d,d),f=u+1,h=l(f,ve(p,i.rotation[0])),m=l(f,ve(p,i.rotation[1])),y=l(f,ve(p,i.rotation[2]));c.scale.x=1+(r.scale[0]-1)*u+l(f,ve(p,i.scale[0]))||$t,c.scale.y=1+(r.scale[1]-1)*u+l(f,ve(p,i.scale[1]))||$t,c.scale.z=1+(r.scale[2]-1)*u+l(f,ve(p,i.scale[2]))||$t,c.rotation.x=o.x*u+h,c.rotation.y=o.y*u+m,c.rotation.z=o.z*u+y,c.position.x=r.position[0]*u+l(f,ve(p,i.position[0])),c.position.y=r.position[1]*u+l(f,ve(p,i.position[1])),c.position.z=r.position[2]*u+l(f,ve(p,i.position[2]))}}_updateGrid(e){let r=0,o=e.grid,i=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,a=cl(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Uo.noiseSeed(i.seed);let l=Xg((0,Ja.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new fr(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let h=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],m=s?Uo.noise(...h):l(...h),y=this.children[r++];y.scale.x=1+a(r,ve(m,i.scale[0]))||$t,y.scale.y=1+a(r,ve(m,i.scale[1]))||$t,y.scale.z=1+a(r,ve(m,i.scale[2]))||$t;let g=a(r,ve(m,i.rotation[0])),b=a(r,ve(m,i.rotation[1])),S=a(r,ve(m,i.rotation[2]));y.rotation.set(g,b,S),y.position.x=o.size[0]*d-c.x+a(r,ve(m,i.position[0])),y.position.y=o.size[1]*p-c.y+a(r,ve(m,i.position[1])),y.position.z=o.size[2]*f-c.z+a(r,ve(m,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let c=0;c<o.count[1];c++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=s?Uo.noise(...p):l(...p),h=this.children[r++];h.scale.x=1+a(r,ve(f,i.scale[0]))||$t,h.scale.y=1+a(r,ve(f,i.scale[1]))||$t,h.scale.z=1+a(r,ve(f,i.scale[2]))||$t;let m=a(r,ve(f,i.rotation[0])),y=a(r,ve(f,i.rotation[1])),g=a(r,ve(f,i.rotation[2]));h.rotation.set(m,y,g),h.position.x=o.size[0]*u+a(r,ve(f,i.position[0])),h.position.y=-o.size[1]*c+a(r,ve(f,i.position[1])),h.position.z=-o.size[2]*d+a(r,ve(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new If(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Uo.noiseSeed(i.seed);let s=Gc((0,Ja.default)(i.seed)),l=cl(i.strength,this.parameters.randomness);if(!r.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 Za)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 u=this.getSubdivData(),c=[],d=g=>{let b=g.length,S=g.map(_=>_[0]).reduce((_,A)=>_+A,0),w=g.map(_=>_[1]).reduce((_,A)=>_+A,0),v=g.map(_=>_[2]).reduce((_,A)=>_+A,0);return[S/b,w/b,v/b]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let b=u.filter(S=>p(g.pos[0])===p(S.pos[0])&&p(g.pos[1])===p(S.pos[1])&&p(g.pos[2])===p(S.pos[2]));b.length>1?c.push({pos:g.pos,norm:d(b.map(S=>S.norm))}):c.push(g)});let f=bb(c);if(f.length>0){let g=Math.round(f.length*r.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 h=new Fc(this.objectForSample).build(),m=gb[r.axis],y=this.children;h.setRandomGenerator((0,Ja.default)(this.object.uuid+r.seed));for(let[g,b]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?Uo.noise(S):s(S,S),v=g+1,_=l(v,ve(w,i.rotation[0])),A=l(v,ve(w,i.rotation[1])),x=l(v,ve(w,i.rotation[2]));r.spreadType==="random"?h.sample(ul,Nf):(f.length&&(ul.fromArray(f[g].pos),Nf.fromArray(f[g].norm)),this.objectForSample instanceof ni&&ul.applyMatrix4(cN.copy(this.objectForSample.matrixWorld).invert())),ul.applyMatrix4(this.object.hiddenMatrix.clone().invert()),b.position.copy(ul),_n.fromArray(m);let T=r.align==="normal"?Nf:this.object.getWorldDirection(pN),C=si.fromArray(r.position);si.x+=si.x+l(v,ve(w,i.position[0])),si.y+=si.y+l(v,ve(w,i.position[1])),si.z+=si.z+l(v,ve(w,i.position[2]));let P=Math.acos(T.dot(_n)),O=dN.crossVectors(_n,T).normalize(),M=uN.makeRotationAxis(O,P),I=T.clone().cross(this.object.up).normalize(),N=I.clone().cross(T).normalize(),B=new li().makeBasis(I,T,N),D=new fr(_n.y,_n.z,_n.x).normalize(),G=D.clone().cross(_n).normalize(),L=new li().makeBasis(D,_n,G).invert(),V=new li().multiplyMatrices(B,L);b.rotation.setFromRotationMatrix(V),C.applyMatrix4(M),b.position.add(C),b.rotation.x=b.rotation.x+o.x+_,b.rotation.y=b.rotation.y+o.y+A,b.rotation.z=b.rotation.z+o.z+x,b.scale.setScalar(1),b.scale.x=b.scale.x+r.scale[0]+l(v,ve(w,i.scale[0]))||$t,b.scale.y=b.scale.y+r.scale[1]+l(v,ve(w,i.scale[1]))||$t,b.scale.z=b.scale.z+r.scale[2]+l(v,ve(w,i.scale[2]))||$t,b.scale.multiply(this.object.scale),b.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof ni){let r=this.objectForSample,o=xb[e],i=Db[o],a=Ib[o],s=Nb[o],l=[],u=i(r.subdivPointerNew);for(let c=0;c<=u-1;c++){let d=a(r.subdivPointerNew,c),p=s(r.subdivPointerNew,c);Tb.fromArray(d).applyMatrix4(r.matrixWorld),Mb.fromArray(p),l.push({pos:Tb.toArray(),norm:Mb.toArray()})}return l}else return(this.objectForSample.geometry.index?vb(this.objectForSample.geometry):Sb(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,r){if(this.parameters=Oo(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=r.find(this.parameters.toObject.object);o instanceof bt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new li,this.hiddenMatrix=new li,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as ED,Vector3 as BD,Matrix4 as LD,Box3 as RD,MeshBasicMaterial as VD,Skeleton as zD}from"three";import{Camera as AN,OrthographicCamera as PN,PerspectiveCamera as ON,Vector3 as Hr,Object3D as Rb,Quaternion as CN,Matrix4 as TN}from"three";import{Camera as xN,LineSegments as bN,BufferGeometry as vN,LineBasicMaterial as SN,Color as Ef,Vector3 as wN,Float32BufferAttribute as Bb}from"three";import{BoxGeometry as fN}from"three";var yo=n=>{var t;return t=class extends n{},t.geometryHelper=new fN(30,30,30),t};import{Ray as hN,Sphere as mN,Matrix4 as yN,Vector3 as Ho}from"three";var Du=new hN,Df=new mN,Eb=new yN,go=(n,t,e,r,o=!1)=>{let i=t,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Df.copy(i.boundingSphere),Df.applyMatrix4(a),e.ray.intersectsSphere(Df)===!1||(Eb.copy(a).invert(),Du.copy(e.ray).applyMatrix4(Eb),i.boundingBox!==null&&Du.intersectsBox(i.boundingBox)===!1))return;let s,l,u,c,d=i.index,p=i.attributes.position,f=i.drawRange,h,m;if(o===!1){let g=Math.max(0,f.start),b=Math.min(d.count,f.start+f.count);for(h=g,m=b;h<m;h+=3)if(l=d.getX(h),u=d.getX(h+1),c=d.getX(h+2),s=y(n,e,Du,p,l,u,c),s){s.faceIndex=Math.floor(h/3),r.push(s);return}}else{let b=i.attributes.position,S=new Ho,w=new Ho,v=new Ho,_=new Ho,A=2,T=1/((n.scale.x+n.scale.y+n.scale.z)/3),C=T*T,P=Math.max(0,f.start),O=Math.min(b.count,f.start+f.count);for(let M=P,I=O-1;M<I;M+=A){if(S.fromBufferAttribute(b,M),w.fromBufferAttribute(b,M+1),Du.distanceSqToSegment(S,w,_,v)>C)continue;_.applyMatrix4(n.matrixWorld);let B=e.ray.origin.distanceTo(_);B<e.near||B>e.far||r.push({distance:B,point:v.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,b,S,w,v,_,A){let x=new Ho,T=new Ho,C=new Ho,P=new Ho,O=new Ho;if(x.fromBufferAttribute(w,v),T.fromBufferAttribute(w,_),C.fromBufferAttribute(w,A),S.intersectTriangle(x,T,C,!1,P)===null)return null;O.copy(P),O.applyMatrix4(g.matrixWorld);let I=b.ray.origin.distanceTo(O);return I<b.near||I>b.far?null:{faceIndex:1,distance:I,point:O.clone(),object:g}}};var Eu=new wN,wr=new xN,Bf=class extends bN{constructor(e){let r=new vN,o=new SN({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new Ef(15711266),u=new Ef(15711266),c=new Ef(2857471);d("n1","n2",l),d("n2","n4",l),d("n4","n3",l),d("n3","n1",l),d("f1","f2",l),d("f2","f4",l),d("f4","f3",l),d("f3","f1",l),d("n1","f1",l),d("n2","f2",l),d("n3","f3",l),d("n4","f4",l),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",c),d("u2","u3",c),d("u3","u1",c);function d(f,h,m){p(f,m),p(h,m)}function p(f,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}r.setAttribute("position",new Bb(i,3)),r.setAttribute("color",new Bb(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;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;Ur("n1",r,e,wr,-i,-a,s),Ur("n2",r,e,wr,i,-a,s),Ur("n3",r,e,wr,-i,a,s),Ur("n4",r,e,wr,i,a,s);let l=s;Ur("f1",r,e,wr,-i,-a,l),Ur("f2",r,e,wr,i,-a,l),Ur("f3",r,e,wr,-i,a,l),Ur("f4",r,e,wr,i,a,l);let u=l,c=.5;Ur("u1",r,e,wr,i*.7*c,a*1.1,u),Ur("u2",r,e,wr,-i*.7*c,a*1.1,u),Ur("u3",r,e,wr,0,a*(1.1+.9*c),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Ur(n,t,e,r,o,i,a){Eu.set(o,i,a).unproject(r);let s=t[n];if(s!==void 0){let l=e.getAttribute("position");for(let u=0,c=s.length;u<c;u++)l.setXYZ(s[u],Eu.x,Eu.y,Eu.z)}}var Bu=class extends yo(Bf){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){go(this.object,this.geometry,e,r,!0)}};import{Box3Helper as Lb,BoxGeometry as _N}from"three";var Lu;(t=>t.is=e=>"objectHelper"in e)(Lu||(Lu={}));var _r=(n,t)=>class extends la(n){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Lb&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof _N?(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 Lb&&(i.visible=!1)}}};var Ru=790,ts=new Hr,Lf=new Hr,Rf=new CN,Vf=new Hr,dl=new Hr,zf=new Hr,qo=class extends _r(AN,Bu){constructor(e="",r={...jn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=un.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new TN,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new PN(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new ON(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,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new Hr(e,r,o)),super.lookAt(e),this.getWorldPosition(ts),this.targetOffset=ts.distanceTo(e)}getTarget(e=new Hr){return this.getWorldDirection(Lf),this.getWorldPosition(ts),Lf.multiplyScalar(this.targetOffset),e.copy(ts).add(Lf),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(ts),ts.distanceTo(e)}updateUp(){this.getWorldQuaternion(Rf),Vf.set(0,0,1).applyQuaternion(Rf),dl.copy(Rb.DEFAULT_UP),this.isUpVectorFlipped&&dl.negate(),dl.applyQuaternion(Rf),zf.copy(Rb.DEFAULT_UP).projectOnPlane(Vf),this.angleOffsetFromUp=zf.angleTo(dl),this.angleOffsetFromUp*=zf.cross(dl).dot(Vf)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new Hr),i=e.getWorldDirection(new Hr).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Hr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Hr,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let i=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-Ru*.5*i,this.right=Ru*.5*i,this.top=Ru*.5*(1/a),this.bottom=-Ru*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,a,s):this.orthoCamera.setViewOffset(e,r,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,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Vi(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{MathUtils as Vre}from"three";import{BufferGeometry as Vb,Matrix4 as Gf,Float32BufferAttribute as MN,Vector3 as Fb}from"three";var rs=new Gf,IN=new Gf,Vu=new Gf,zb=new Fb,Gb=new Fb;var nr=class extends or{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Vb;this.onAfterRender=(e,r,o,i,a,s)=>{super.onAfterRender(e,r,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,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof nr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof bt&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){rs.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,r)),a.booleanMeshSetAddress===-1)return;br.transformMeshSet(a.booleanMeshSetAddress,rs),a.booleanMatrixInvOld.copy(rs).invert(),a.booleanWasTransformed=!1}else a instanceof nr&&a.needsTransformForDownstream===!0?(br.transformMeshSet(a.booleanMeshSetAddress,rs),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(br.transformMeshSet(a.booleanMeshSetAddress,IN.multiplyMatrices(rs,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(rs).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 MN([],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 Vb,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,Xa(this),Qa(this)}dispose(){super.dispose(),this.geometry.dispose()}get recursiveBBox(){let e=super.recursiveBBox;return this.geometry.boundingSphere?.radius===-1&&(e.getCenter(this.geometry.boundingSphere.center),Vu.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(Vu),zb.copy(e.max).applyMatrix4(Vu),Gb.copy(e.min).applyMatrix4(Vu),this.geometry.boundingSphere.radius=zb.distanceTo(Gb)/2),e}};import{Light as NN}from"three";var kb;(t=>{function n(e){return Ce.is(e)&&e instanceof NN}t.is=n})(kb||(kb={}));var os=(n,t)=>class extends _r(n,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var An=n=>n instanceof bt,pl=n=>n!==null&&n instanceof nr;var fl=n=>Lu.is(n);import{Group as EN}from"three";import{AxesHelper as DN}from"three";var Ar=class extends yo(DN){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){go(this.object,Ar.geometryHelper,e,r)}update(){}};var Pn=class extends _r(EN,Ar){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Group as BN}from"three";var zu=class extends _r(BN,Ar){constructor(e,r,o){super();this.super_Entity(e,r),this.context=o,this.objectHelper.update()}updateState(e,r){this.updateState_Entity(e,r)}};import{Color as t3,Fog as r3,HemisphereLight as o3}from"three";import{ShaderChunk as hl}from"three";var LN=n=>`
|
|
2237
|
+
`)}return r}};import{VideoTexture as f3,Texture as h3,CanvasTexture as m3}from"three";var Uu=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var Qf=class extends Uu{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},Xf;function Vb(n){return typeof n=="string"?n:(Xf||(Xf=new Qf),Xf.load(n))}var Hu=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},qu=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var ps=class extends Hu{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isCanvas=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isCanvas=e.nodeName==="CANVAS",this.updateSrc(this.isCanvas?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))a&&(a.image=this.img,a.needsUpdate=!0);this.shared.requestRender()};if(this.isCanvas)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=Vb(e),this.img.onload=r}getTexture(e,r=1008){let o=this._cache[e][r];if(o)return o;{let i;return this.isCanvas&&(i=new m3(this.img,void 0,e,e,void 0,r)),this.isVideo?i=new f3(this.img,void 0,e,e):i=new h3(this.img,void 0,e,e,void 0,r),this.loaded&&(i.needsUpdate=!0),this._cache[e][r]=i,i}}setNeedsUpdate(e){for(let r of Object.values(this._cache))for(let o of Object.values(r))o&&(o.needsUpdate=e)}disposeTextures(){for(let[e,r]of Object.entries(this._cache))for(let[o,i]of Object.entries(r))i?.dispose(),this._cache[e][o]=void 0}dispose(){super.dispose(),this.disposeTextures()}};var Ar=class extends ps{};import{Vector2 as Zo,Vector3 as wo,Vector4 as Wu}from"three";function Xt(n,t){return t.color(n)}function zb(n,t){switch(n.type){case"fresnel":return x3(n,t);case"gradient":return b3(n,t);case"depth":return v3(n,t);case"normal":return S3(n,t);case"noise":return w3(n,t);case"rainbow":return A3(n,t);case"toon":return _3(n,t);case"outline":return P3(n,t);case"transmission":return O3(n,t);case"color":return g3(n,t);case"pattern":return C3(n,t)}}function y3(n){return{type:n.type}}function Jr(n,t){let{alpha:e,mode:r,isMask:o}=n,i=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...y3(n),alpha:i,mode:r,isMask:o}}function g3(n,t){return{...Jr(n,t),color:Xt(n.color,t)}}function x3(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:a}=n;return{...Jr(n,t),color:Xt(a,t),bias:e,scale:r,intensity:o,factor:i}}function b3(n,t){let{gradientType:e,smooth:r,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...Jr(n,t),gradientType:e,smooth:r,colors:o.map(u=>new Wu(u[0],u[1],u[2],u[3])),num:o.length,steps:i,offset:new Zo(...s),morph:new Zo(...l),angle:a}}function v3(n,t){let{gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:u,steps:c,smooth:d}=n;return{...Jr(n,t),gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:new wo(...s),direction:l?new wo(...l):new wo(1,0,0),colors:u.map(p=>p!==void 0?new Wu(p[0],p[1],p[2],p[3]):new Wu(0,0,0,0)),steps:c.slice(0,u.length),smooth:d}}function S3(n,t){let{cnormal:e}=n;return{...Jr(n,t),cnormal:new wo(e[0],e[1],e[2])}}function w3(n,t){return{...Jr(n,t),scale:n.scale,move:n.move,fA:new Zo(...n.fA),fB:new Zo(...n.fB),size:new wo(...n.size),distortion:new Zo(...n.distortion),colorA:Xt(n.colorA,t),colorB:Xt(n.colorB,t),colorC:Xt(n.colorC,t),colorD:Xt(n.colorD,t),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function A3(n,t){return{...Jr(n,t),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new wo(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new wo(...n.offset)}}function _3(n,t){return{...Jr(n,t),positioning:n.positioning,colors:n.colors.map(e=>new Wu(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new wo(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Xt(n.shadowColor,t),offset:new wo(...n.offset)}}function P3(n,t){return{...Jr(n,t),outlineColor:Xt(n.outlineColor,t),contourColor:Xt(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new wo(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function O3(n,t){return{...Jr(n,t),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function C3(n,t){return{...Jr(n,t),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Zo(...n.offset),colorA:Xt(n.colorA,t),colorB:Xt(n.colorB,t),frequency:new Zo(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Zo(...n.vertical),horizontal:new Zo(...n.horizontal),sides:n.sides}}var Nn=class extends Et{};import{Vector4 as T3}from"three";var Kf={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},Zf={depth:["colors"]};function M3(n,t,e){if(t==="isMask")return!0;let r=Kf[n.type],o=Zf[n.type];if(o!==void 0){let i=n.color;if(o.includes(t)){let a=i[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function Jf(n,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=t.image(a),l=r;l.image instanceof Ar||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=t.video(a),l=r;l.image instanceof Ar||l.image.deref(),l.image=s}if("wrapping"in i){let a=r;a.wrap=i.wrapping}if("minFilter"in i){let a=r;a.minFilter=i.minFilter}if("repeat"in i||"offset"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),s.updateMatrix()}return o}function Gb(n,t,e,r){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(eh(i,e,r,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof Mn))switch(o=o||M3(e,i,a),s.constructor){case $e:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Nn?s.value=new Et(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case dr:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Nn?s.value=new Et(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case pt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case $t:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case ir:{Jf(a,t,e);break}case Zr:{s.value=a.map(l=>new T3(...l));break}default:{s.value=a;break}}}return o}var Dn=(n,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,_o=class{constructor(t,e,r,o,i){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)eh(a,this,r,i)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return ar.createLigherLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let i=r.type==="texture"?o.canvas(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new ui(i,r.texture.wrapping,r.texture.minFilter??1008),s=new Fu(i),l=new ju(r.texture.repeat,r.texture.offset),u=new se(r.crop?1:0),c=new Be(r.projection??0),d=new Be(["x","y","z"].indexOf(r.axis)??0),p=new Be(r.side??0),f=new pt(r.size?new eo(r.size[0],r.size[1]):new eo(100,100)),h=new se(r.blending??0),m=new se(Dn(r.alpha,o)),y=new Be(r.mode??0),g=new xt(r.isMask??!1),b=new In(a,s,u,c,d,p,f,h,l,m,y,g),w=new qe(b.calpha,"f");return new at(t,e,r,{texture:a,textureSize:s,crop:u,projection:c,axis:d,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:g},b,y,w,g,o)}else if(r.type==="matcap"){let i=o.image(r.texture.image),a=new ui(i,r.texture.wrapping,r.texture.minFilter??1008),s=new se(Dn(r.alpha,o)),l=new Be(r.mode??0),u=new xt(r.isMask??!1),c=new ns(a,s,l,u),d=new qe(c.calpha,"f");return new at(t,e,r,{texture:a,alpha:s,mode:l,isMask:u},c,l,d,u,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new $t(new Ao(...r.offset)),a=new se(r.scale??10),s=new se(r.intensity??8),l=new se(r.movement??1),u=new Be(r.noiseType??0),c=new Be(r.voronoiStyle??0),d=new se(r.smoothness??.5),p=new se(r.seed??0),f=new se(r.highCut??1),h=new se(r.lowCut??0),m=new Be(r.quality??1),y=new ds(s,l,i,c,d,p,f,h,m,a,u);return new Pl(t,e,r,{offset:i,scale:a,intensity:s,movement:l,noiseType:u,voronoiStyle:c,smoothness:d,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return D3(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):Gb(o.props,r.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Jf(o.props,r.shared,this):!0;return!1}dispose(){if(I3(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof Ar||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},at=class extends _o{constructor(e,r,o,i,a,s,l,u,c){super(e,r,o,i,c);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=u}},Pl=class extends _o{constructor(e,r,o,i,a,s){super(e,r,o,i,s);this.position=a}},ar=class extends _o{constructor(e,r,o,i,a,s){super(e,r,o,a,s);this.node=i}static createLigherLayer(e,r,o,i){let a,s=new se(Dn(o.alpha,i)),l=new Be(o.mode),u=new se(o.bumpMapIntensity),c=new se(Dn(o.alphaOverride,i)),d;if(!o.visible)a=new Qo,d={};else if(o.category==="lambert"){a=new Sl;let p=new $e(i.color(o.emissive)??0),f=new xt(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new _l;let p=new se(o.shininess??30),f=new $e(i.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new Al;let p=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new xt(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new wl;let p=new se(o.shininess??30),f=new $e(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new xt(o.occlusion??!0);d={shininess:p,specular:f,occlusion:h},a.shininess=p,a.specular=f,a.occlusion=h}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=u,a.alphaOverride=c,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new ar(e,r,o,a,d,i)}get category(){return this.node.category}};function I3(n){let t=n instanceof _o?n.type:n;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function Dr(n){return{alpha:new se(n.alpha??1),mode:new Be(n.mode??0),isMask:new xt(n.isMask??!1)}}function N3(n,t,e,r,o){switch(n.type){case"color":{let i=new $e(r.color??St),a=Dr(r),s=new di(i,a.alpha),l=new qe(s.calpha,"f");return new at(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new $e(r.color??16777215),a=new se(r.bias??.1),s=new se(r.scale??1),l=new se(r.intensity??2),u=new se(r.factor??1),c=Dr(r),d=new bl(i,a,s,l,u,c.alpha,c.mode,c.isMask),p=new qe(d.calpha,"f");return new at(t,e,n,{color:i,bias:a,scale:s,intensity:l,factor:u,...c},d,c.mode,p,c.isMask,o)}case"rainbow":{let i=new se(r.filmThickness??30),a=new se(r.movement??0),s=new $t(r.wavelengths??new Ao(0,0,0)),l=new se(r.noiseStrength??0),u=new se(r.noiseScale??1),c=new $t(r.offset??new Ao(0,0,0)),d=Dr(r),p=new ls(i,a,s,l,u,c,d.alpha,d.isMask),f=new qe(p.calpha,"f");return new at(t,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:u,offset:c,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let i=new se(r.thickness??10),a=new se(r.ior??1.5),s=new se(r.roughness??.5),l=Te.transmissionSize,u=Te.transmissionRenderTarget,c=Te.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new pt(p/d,1):new pt(1,d/p),h=Dr(r),m=new us(i,a,s,l,u,c,f,h.alpha),y=new qe(m.calpha,"f");return new at(t,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new Be(r.positioning??0),a;r.colors?a=new Zr(r.colors.length,r.colors):(a=new Zr(10,new fs(0,0,0,1)),a.value[1]=new fs(1,1,1,1));let s;r.steps?s=new Kr(r.steps.length,r.steps):(s=new Kr(10,1),s.value[0]=0);let l=new $t(r.source??new Ao(0,0,0)),u=new xt(r.isWorldSpace??!0),c=new se(r.noiseStrength??0),d=new se(r.noiseScale??1),p=new dr(r.shadowColor),f=new $t(r.offset??new Ao(0,0,0)),h=Dr(r),m=new cs(i,a,s,l,u,c,d,p,f,h.alpha),y=new qe(m.calpha,"f");return new at(t,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:u,noiseStrength:c,noiseScale:d,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let i=new $e(r.outlineColor??16777215),a=new $e(r.contourColor??16777215),s=new se(r.outlineWidth??.1),l=new se(r.contourWidth??.1),u=new se(r.outlineThreshold??.1),c=new se(r.contourThreshold??.1),d=new se(r.outlineSmoothing??.1),p=new se(r.contourFrequency??.1),f=new $t(r.contourDirection??new Ao(0,1,0)),h=new xt(r.positionalLines??!1),m=new xt(r.compensation??!0),y=Te.normalRenderTarget,g=Te.normalRenderTargetDepth,b=Te.pixelRatioNode,w=Te.resolution,_=Dr(r),S=new as(i,a,s,l,u,c,d,p,f,h,m,w,y,g,b,_.alpha),P=new qe(S.calpha,"f");return new at(t,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:u,contourThreshold:c,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,..._},S,_.mode,P,_.isMask,o)}case"depth":{let i=new Be(r.gradientType??0),a=new xt(r.smooth??!1),s=new se(r.near??50),l=new se(r.far??200),u=new se(r.isVector??1),c=new se(r.isWorldSpace??0),d=new $t(r.origin??new Ao),p=new $t(r.direction??new Ao),f;r.colors?f=new Zr(r.colors.length,r.colors):(f=new Zr(2,new fs(0,0,0,1)),f.value[1]=new fs(1,1,1,1));let h;r.steps?h=new Kr(r.steps.length,r.steps):(h=new Kr(2,1),h.value[0]=0);let m=Dr(r),y=new rs(i,a,s,l,u,c,d,p,f,h,m.alpha,m.isMask),g=new qe(y.calpha,"f");return new at(t,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:u,isWorldSpace:c,origin:d,direction:p,colors:f,steps:h,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new se(r.scale??1),a=new $t(r.size??new Ao(100,100,100)),s=new se(r.move??1),l=new pt(r.fA??new eo(1.7,9.2)),u=new pt(r.fB??new eo(8.3,2.8)),c=new pt(r.distortion??new eo(1,1)),d=new dr(r.colorA),p=new dr(r.colorB),f=new dr(r.colorC),h=new dr(r.colorD),m=new Be(r.noiseType??0),y=new Be(r.voronoiStyle??0),g=new se(r.highCut??1),b=new se(r.lowCut??0),w=new se(r.smoothness??.5),_=new se(r.seed??.5),S=new Be(r.quality??1),P=Dr(r),O=new is(i,a,s,l,u,c,d,p,f,h,P.alpha,m,P.isMask,y,g,b,w,_,S),x=new qe(O.calpha,"f");return new at(t,e,n,{scale:i,size:a,move:s,fA:l,fB:u,distortion:c,colorA:d,colorB:p,colorC:f,colorD:h,noiseType:m,...P,voronoiStyle:y,highCut:g,lowCut:b,smoothness:w,seed:_,quality:S},O,P.mode,x,P.isMask,o)}case"normal":{let i=new $t(r.cnormal??new Ao(1,1,1)),a=Dr(r),s=new Ja(i,a.alpha),l=new qe(s.calpha,"f");return new at(t,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Be(r.gradientType??0),a=new xt(r.smooth??!1),s;r.colors?s=new Zr(r.colors.length,r.colors):(s=new Zr(10,new fs(0,0,0,1)),s.value[1]=new fs(1,1,1,1));let l;r.steps?l=new Kr(r.steps.length,r.steps):(l=new Kr(10,1),l.value[0]=0);let u=new pt(r.offset??new eo(0,0)),c=new pt(r.morph??new eo(0,0)),d=new se(r.angle??0),p=Dr(r),f=new os(i,a,s,l,u,c,d,p.alpha,p.isMask),h=new qe(f.calpha,"f");return new at(t,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:u,morph:c,angle:d,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let i=new Be(r.style??0),a=new Be(r.projection??0),s=new Be(["x","y","z"].indexOf(r.axis)??0),l=new se(r.blending??0),u=new pt(r.offset??new eo(0,0)),c=new dr(r.colorA),d=new dr(r.colorB),p=new pt(r.frequency??new eo(10,10)),f=new se(r.size??.5),h=new se(r.variation??0),m=new se(r.smoothness??.5),y=new se(r.zigzag??0),g=new se(r.rotation??0),b=new pt(r.vertical??new eo(0,1)),w=new pt(r.horizontal??new eo(0,1)),_=new Be(r.sides??6),S=Dr(r),P=new ss(i,a,s,l,u,c,d,p,f,h,m,y,g,b,w,_,S.alpha,S.isMask),O=new qe(P.calpha,"f");return new at(t,e,n,{style:i,projection:a,axis:s,blending:l,offset:u,colorA:c,colorB:d,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:g,vertical:b,horizontal:w,sides:_,...S},P,S.mode,O,S.isMask,o)}default:{let i=new $e(1,0,0,1),a=Dr(r),s=new di(i,a.alpha),l=new qe(s.calpha,"f");return new at(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function D3(n,t,e,r){let o=zb(e,r);return N3(e,n,t,o,r)}function eh(n,t,e,r){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=Dn(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=t.uniforms[`f${t.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function $u(n,t){let e=0,r=n.layers.find(o=>o.data.type==="light");if(r){let o=r.data,i=Number(t.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(t.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=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,u=t.color(o.data.colorD).a,c=Math.min(a,Math.min(s,Math.min(l,u)));c<1&&(i=c)}e+=(1-e)*i}}return e<1}var fr=class extends E3{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Yu=class extends fr{constructor(e,r,o,i){super();this.flatShading=e;this.side=r;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,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o){return this.root.getFlavor(e,r,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,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},fi=class extends fr{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,r)}get nodeMaterial(){return this}getFlavor(e,r,o){let i=o?6:(e?3:0)+r;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Yu(e,r,o,this),this.flavors[i]=a,a.flatShading=e,a.side=r,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,r,o=!1){(this.data!==e||o)&&this.reset0(e,r)}reset0(e,r){this.data=e;let o=e.layers??qt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>_o.create(this.layerIdGen++,i.id,i.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=$u(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=$u(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/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=$u(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)))):s.setValue(a,r))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(r=>r instanceof ar),this.lightLayer===void 0&&(this.lightLayer=new ar(0,"",{...Pt.defaultData("light","phong"),visible:!1},new Qo,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(a=>a instanceof ar);if(!e)return;let r=e.data,o=r.bumpMap,i=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof at&&s.color instanceof In&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(r!==void 0?this.data=r:r=this.data,this.transparent=$u(r,o.shared),e.path[0]==="layers"){this.data=r;let i=o.shared,a=e.path[1];if(a===void 0){if(this.layers.reverse(),e.type===4){let s=_o.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,s),o.scene.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene.markNeedsUpdateRendererDirty();else if(e.type===6){let s=this.layers.findIndex(u=>u.uuid===e.id),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate(o.shared)}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),u;if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?u={...e.props,alpha:Dn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:u={...e.props,alphaOverride:Dn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...u?{props:u}:{},path:e.path.slice(2)},l,o)){let d=_o.create(this.layerIdGen++,a,l,i);this.layers.splice(this.layers.findIndex(p=>p.uuid===a),1,d),this.onUpdate(o.shared)}}}}else this.reset(r,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof at?r.color.mask=void 0:r instanceof ar&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof at&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof ar?i.node.mask=new Ft(r.color,r.alpha,Ft.MUL):i instanceof at&&(i.isMask.value||(i.color.mask=new Ft(r.color,r.alpha,Ft.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof at),r=this.layers.findIndex(o=>o instanceof ar);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let a=this.layers[i];if(a instanceof at){if(a.isMask.value)continue;o=new Za(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new qe("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof ar);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof at){if(i.isMask.value)continue;e=new Za(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof Pl);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Ft(r,e[o].position,Ft.ADD),r=new Ft(r,new se(.5).setReadonly(!0),Ft.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),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,r){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,r);i.uniforms[`f${i.id}_intensity`].value=a}}computeCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.visible?r.category.toUpperCase():"Basic"}"`;else{let o=(Kf[r.type]??[]).map(u=>r[u]),i=(Zf[r.type]??[]).map(u=>r[u]?.length??0),a=[...o,...i],s="isMask"in r&&r.isMask,l=`"${r.type}-${r.visible}-${s}"`;a.length?e+=`[${l}, "${a.join('","')}"],`:e+=l}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new Qa;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this}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 at){let r=e.params.texture;if(r instanceof ui&&!r.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(fr.prototype,{properties:{get:function(){return this.fragment.properties}}});var hi=class extends fi{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var Ub=Zt(kb());var Fb=new Map;function jb(n){if(typeof n=="string")return n;let t=Fb.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},Fb.set(n,t)),t.url}var mi=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof t=="string"?i={src:t}:i={src:jb(t),format:"wav"},this.sound=new Ub.Howl(i),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as B3,Vector2 as yi,Path as Hb,Shape as L3,ShapeUtils as R3,Color as V3}from"three";var Qu=class{constructor(){this.type="ShapePath";this.color=new V3;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new Hb,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,i,a){return this.currentPath?.bezierCurveTo(t,e,r,o,i,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,g,b){let w=m.x,_=y.x,S=g.x,P=b.x,O=m.y,x=y.y,D=g.y,N=b.y,T=(P-S)*(O-D)-(N-D)*(w-S),I=(_-w)*(O-D)-(x-O)*(w-S),E=(N-D)*(_-w)-(P-S)*(x-O),B=T/E,R=I/E;if(E===0&&T!==0||B<=0||B>=1||R<0||R>1)return null;if(T===0&&E===0){for(let k=0;k<2;k++)if(i(k===0?g:b,m,y),r.loc===e.ORIGIN){let V=k===0?g:b;return{x:V.x,y:V.y,t:r.t}}else if(r.loc===e.BETWEEN){let V=+(w+r.t*(_-w)).toPrecision(10),q=+(O+r.t*(x-O)).toPrecision(10);return{x:V,y:q,t:r.t}}return null}else{for(let q=0;q<2;q++)if(i(q===0?g:b,m,y),r.loc===e.ORIGIN){let F=q===0?g:b;return{x:F.x,y:F.y,t:r.t}}let k=+(w+B*(_-w)).toPrecision(10),V=+(O+B*(x-O)).toPrecision(10);return{x:k,y:V,t:B}}}function i(m,y,g){let b=g.x-y.x,w=g.y-y.y,_=m.x-y.x,S=m.y-y.y,P=b*S-_*w;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===g.x&&m.y===g.y){r.loc=e.DESTINATION,r.t=1;return}if(P<-Number.EPSILON){r.loc=e.LEFT;return}if(P>Number.EPSILON){r.loc=e.RIGHT;return}if(b*_<0||w*S<0){r.loc=e.BEHIND;return}if(Math.sqrt(b*b+w*w)<Math.sqrt(_*_+S*S)){r.loc=e.BEYOND;return}let O;b!==0?O=_/b:O=S/w,r.loc=e.BETWEEN,r.t=O}function a(m,y){let g=[],b=[];for(let w=1;w<m.length;w++){let _=m[w-1],S=m[w];for(let P=1;P<y.length;P++){let O=y[P-1],x=y[P],D=o(_,S,O,x);D!==null&&g.find(N=>N.t<=D.t+Number.EPSILON&&N.t>=D.t-Number.EPSILON)===void 0&&(g.push(D),b.push(new yi(D.x,D.y)))}}return b}function s(m,y,g){let b=new yi;y.getCenter(b);let w=[];return g.forEach(_=>{_.boundingBox.containsPoint(b)&&a(m,_.points).forEach(P=>{w.push({identifier:_.identifier,isCW:_.isCW,point:P})})}),w.sort((_,S)=>_.point.x-S.point.x),w}function l(m,y,g,b,w){(w==null||w==="")&&(w="nonzero");let _=new yi;m.boundingBox.getCenter(_);let S=[new yi(g,_.y),new yi(b,_.y)],P=s(S,m.boundingBox,y);P.sort((I,E)=>I.point.x-E.point.x);let O=[],x=[];P.forEach(I=>{I.identifier===m.identifier?O.push(I):x.push(I)});let D=O[0].point.x,N=[],T=0;for(;T<x.length&&x[T].point.x<D;)N.length>0&&N[N.length-1]===x[T].identifier?N.pop():N.push(x[T].identifier),T++;if(N.push(m.identifier),w==="evenodd"){let I=N.length%2===0,E=N[N.length-2];return{identifier:m.identifier,isHole:I,for:E}}else if(w==="nonzero"){let I=!0,E=null,B=null;for(let R=0;R<N.length;R++){let k=N[R];y[k]&&(I?(B=y[k].isCW,I=!1,E=k):B!==y[k].isCW&&(B=y[k].isCW,I=!0))}return{identifier:m.identifier,isHole:I,for:E}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let u=0,c=999999999,d=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,b=999999999,w=-999999999,_=999999999;for(let S=0;S<y.length;S++){let P=y[S];P.y>g&&(g=P.y),P.y<b&&(b=P.y),P.x>w&&(w=P.x),P.x<_&&(_=P.x)}d<=w&&(d=w+1),c>=_&&(c=_-1),y.length&&p.push({curves:m.curves,points:y,isCW:R3.isClockWise(y),identifier:u++,boundingBox:new B3(new yi(_,b),new yi(w,g))})});let f=p.map(m=>l(m,p,c,d,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let g=new L3;g.curves=m.curves,f.filter(w=>w?.isHole&&w.for===m.identifier).forEach(w=>{if(w){let _=p[w.identifier],S=new Hb;S.curves=_.curves,g.holes.push(S)}}),h.push(g)}}),h}};var th=!1,Wb,rh=new Promise(n=>{Wb=n}),qb=!1;var Ku;function $b(){if(th=!0,qb)return;if(Ku)return Ku;async function n(){let e=await import("./opentype.js");Wb(e),qb=!0}return Ku=n(),Ku}var Ol=class{async load(t,e,r=()=>{}){let{load:o}=await rh;o(t,(i,a)=>{i||!a?r(i??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await rh;try{let o=e(t),i=new r,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 z3(n){return await(await fetch(n)).arrayBuffer()}var G3=new Ol;async function oh(n){let t,e,r=!1;if(n.url?(t=await z3(n.url),e=n.url,r=n.url.startsWith("/")):n.data&&(t=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),t)if(th){let o=await G3.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as k3,LineCurve as F3,QuadraticBezierCurve as j3}from"three";function U3(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var Zu=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=oh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=oh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=r.length===i.length;for(let u=0;u<r.length;u++){let c=r[u].index,d=String.fromCharCode(r[u].unicode),p=i[s];if(U3(c,p)||l)a.push({char:d,index:c,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,h="",m=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===c&&(g=!0),s>e.length&&(g=!0);a.push({char:d,index:c,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e){if(!this._isLoaded)return;let r=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=t.map(b=>this.getTextWidth(b,e)),s=e.width,l=this.getCharWidth(`
|
|
2238
|
+
`,e),u=e.horizontalAlign===1?l:0,c=this.computeSpaceWidthForLine(t,0,e),d=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,t[0],l),p=this.getLineInitialOffsetY(i,t.length,e.height,o,e.verticalAlign),f=[],h=t.map(b=>[]),m=t.map(b=>[]),y;for(let b=0;b<t.length;b++){let w=t[b],_={features:{liga:!0}},S=[];try{S=r.stringToGlyphs(w,_)}catch(O){console.warn(O)}d=this.getLineInitialOffsetX(a[b],s,e.horizontalAlign,w,l);let P=[];try{P=this.reverseLigaturesTable(r,w,S)}catch(O){console.warn(O)}c=this.computeSpaceWidthForLine(t,b,e);for(let O=0;O<S.length;O++){let x=S[O],D=x.index===0?`
|
|
2239
|
+
`:x.unicode?String.fromCharCode(x.unicode):void 0,N=P[O],T=0,I=0;O===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(I=-x.leftSideBearing*o),y&&(T=r.getKerningValue(x,y)*o),d+=I+T;let E=0;if(D===`
|
|
2240
|
+
`)E=u;else if(D===" ")E=c;else{let B=this.createPath(x,o,d,p,e);B&&(E=B.offsetX-(T+I),f.push(B.path))}if(N.replacements.length===1)m[b].push([d,p]),h[b].push(E);else{let B=N.replacements.map(q=>(r.glyphs.get(q).advanceWidth??0)*o),R=B.reduce((q,F)=>q+=F,0),k=B.map(q=>q/R),V=d;for(let q=0;q<k.length;q++){let F=E*k[q];m[b].push([V,p]),h[b].push(F),V+=F}}d+=E,y=x}p-=i}let g=[];for(let b=0,w=f.length;b<w;b++)g.push(...f[b].toShapes());return{shapes:g,charWidths:h,lineWidths:a,charCoords:m}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,r,o,i){return(r===3||r===2)&&o.indexOf(`
|
|
2241
|
+
`)>=0&&(t-=i),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,i){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,u=-this.ascender*o-l/2;return i===3?-(r-a-u):i===2?-(r*.5-a*.5-u):u}createPath(t,e,r,o,i){let a=t.getPath(r,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new Qu,l=(t.advanceWidth??1)*e;if(t)for(let u of a.commands){let c=s.currentPath?.currentPoint;if(!(c&&u.type!=="Z"&&c.x===u.x&&-c.y===u.y))switch(u.type){case"M":s.moveTo(u.x,-u.y);break;case"L":s.lineTo(u.x,-u.y);break;case"Q":s.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":s.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return s.subPaths.forEach(u=>{let c=H3(u.curves);c!==void 0&&u.currentPoint.distanceTo(c)>0&&u.lineTo(c.x,c.y)}),{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r){let o=this.getCharWidth(" ",r),i=t[e];if(i){let a=this.countSpaces(i.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&a){let s=r.width,l=this.getTextWidth(i,r);return(s-(l-a*o))/a}}return o}countSpaces(t){return(t.match(/ /g)||[]).length}};function H3(n){if(n.length){let t=n[0];if(t instanceof F3)return t.v1;if(t instanceof k3||t instanceof j3)return t.v0}}var nh=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},Cl=class extends nh{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let i=Xo(e,r,this.flatShading,o);return i.computeBoundingSphere(),i}};var Yb={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as Xb}from"three";var ih=class extends qu{constructor(e){super();this.shared=e}create(e){return new ps(e,this.shared)}},gi=class{constructor(t,e={}){this.data=t;this.geometryCache=new Cl(!0);this.geometryCache2=new Cl(!1);this.imageHolderCache=new ih(this);this.thisContext={scene:Yb,shared:this};this.deletedMaterial=new hi(qt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new Ar(ba.emptyImage,this);this.deletedVideo=new Ar(da.defaultVideo,this);this.materials={};this.images={};this.canvases={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.variables={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.videos)for(let[r,o]of Object.entries(e.videos))this.addVideo(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o);if(e.particles)for(let[r,o]of Object.entries(e.particles))this.addParticle(r,o);this.reset(t)}setRequestRender(t){this._requestRender=t}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1){this.resetLib(t.lib);for(let{id:r,data:o}of t.variables)this.addVariableHolder(r,o),e&&this.updateVariableHolder(r,o);for(let[r,o]of Object.entries(t.images))this.addImage(r,o);for(let[r,o]of Object.entries(t.videos))this.addVideo(r,o);for(let[r,o]of Object.entries(t.colors))this.addColor(r,o);for(let[r,o]of Object.entries(t.materials))this.addMaterial(r,o);for(let[r,o]of Object.entries(t.audios))this.addAudio(r,o);for(let[r,o]of Object.entries(t.particles))this.addParticle(r,o);for(let[r,o]of Object.entries(t.fonts))this.addFont(r,o)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new hi(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new fi(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new Ar(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addCanvas(t,e){return this.canvases[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.canvases[t].updateSrc(e),!0):(this.canvases[t]=new Ar(e,this),!1)}canvas(t){return this.canvases[t]}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new Ar(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Nn(e.r,e.g,e.b,e.a):this.colors[t]=new Nn(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Et(0,0,0,0))}else return"a"in t?new Et(t.r,t.g,t.b,t.a):new Et(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof mi)return e;{let r=new mi({src:e.data});return this.audios[t]=r,r}}addParticle(t,e){this.particles[t]=e}getParticle(t){return this.particles[t]}deleteParticle(t){this.particles[t]&&delete this.particles[t]}deleteAudio(t){let e=this.audios[t];e&&(e instanceof mi&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new Zu(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof mi&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){return this.variables[t]===void 0?(this.variables[t]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0):(this.variables[t].value=e.value,!1)}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e;let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let i=this.variables[t].locations.length-1;i>=0;i--){let a=this.variables[t].locations[i];if(a[0]==="material"){let s=a[1],l=r,u={scene:o,shared:this},c=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(c,l,u)});let d=this.materials[s];d&&d.onVariableUpdate(c,l,u)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].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]]=r*Xb.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(r,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 u=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(u.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.instances.forEach(c=>{let d=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(d.geometry),c.createGeometryDelayed(this.entityOpContext),c.onVariableUpdate(!0)})}}}}return!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=Xb.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],i=o.locations?.findIndex(a=>lt.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;r=this.variables[r].value}while(typeof r=="string");return e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r}else return t}getVariables(){return this.variables}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.particles))this.addParticle(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===1&&t.type===1?this.addParticle(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){this.data=e,t.path[0]==="images"?t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===2&&t.type===0?t.props.data&&this.addParticle(t.path[1],e.particles[t.path[1]]):t.path.length===1&&t.type===1?this.addParticle(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(ct.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r}):t.path[0]==="fonts"?t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===2&&t.type===0&&"value"in t.props?this.updateVariable(t.path[1],t.props.value):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id):t.path[0]==="lib"&&this.updateLibByOp(ct.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),i={...this.data.fonts[t],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}},Qb=new gi(Ir.emptyData());var hr=class extends Nt{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Eg(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 fr)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(ct.drop(e,1),r.material,o);else if(Le(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in r&&i<this.material.length){let a=r.materials[i];typeof a!="string"&&this.material[i].updateByOp(ct.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),r.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>r.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.scene.markNeedsUpdateRendererDirty())),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&&Ql(this.material).forEach(e=>{e instanceof fr&&(e instanceof hi||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as W3,Matrix4 as ah,Vector3 as tv,Vector4 as sh}from"three";var Kb=new tv,Zb=new sh,Jb=new sh,$3=new tv,ev=new ah,ft=class extends hr{constructor(e,r,o){super(e,r);this.data=r;this.isSkinnedMesh=!1;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.bindMode=r.bindMode,this.bindMatrix=new ah().fromArray(r.bindMatrix),this.bindMatrixInverse=new ah)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof W3&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof gi){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Ys.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ys.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Le(e.path,["geometry"])&&this.updateByPatchedOpGeometry(ct.drop(e,1),r.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let c={...this.data.geometry,...i};this.localGeometry=Xo(c,r,this.data.flatShading,this)}let a,s,l;i.scaleBaked?[a,s,l]=i.scaleBaked:{width:a,height:s,depth:l}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&hl(this.localGeometry.attributes,a/u.sxPrev,s/u.syPrev,l/u.szPrev),u.sxPrev=a,u.syPrev=s,u.szPrev=l}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Xo(i,r,this.data.flatShading,this)}}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof wt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r),super.updateState(e,r)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,this.isSkinnedMesh=!0,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new sh,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){r.fromBufferAttribute(o,i);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(i,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;Zb.fromBufferAttribute(i.attributes.skinIndex,e),Jb.fromBufferAttribute(i.attributes.skinWeight,e),Kb.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=Jb.getComponent(a);if(s!==0){let l=Zb.getComponent(a);ev.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector($3.copy(Kb).applyMatrix4(ev),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function X3(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let t=new Map,e=n.geometry.attributes,r=e.position.array,o=e.normal.array,i=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new ch(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new ch})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(i[a]=l.x,i[a+1]=l.y,i[a+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new rv(i,3))}function Q3(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=new ch;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),r[i]=o.x,r[i+1]=o.y,r[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new rv(r,3))}function hs(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof fr)||n.material.getLayersOfType("outline").length===0)return;n instanceof ft&&n.is2DAndNoDepth?Q3(n):X3(n)}function ms(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[lh.seededRandom(o),lh.seededRandom(o+1e4),lh.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=i[a%3];n.geometry.setAttribute("randomColor",new Y3(r,3))}var Po=new K3,Tl=new J3;function nv(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var xi=class extends ft{constructor(e,r,o){super(e,r,o);this.data=r;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,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=wt.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,hs(this),ms(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(i=>i.getFlavor(!1,i.side,i.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){wt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&wt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=wt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=wt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Nt.prototype.raycast.call(this,e,r),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new ov,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Po.setFromBufferAttribute(r),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(Tl),this.hasNonUniformScale&&Tl.divide(this.scale);let i={width:Tl.x,height:Tl.y,depth:Tl.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let r=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)),r.boundingSphere===null&&(r.boundingSphere=new ov);let o=r.boundingSphere.center;Po.getCenter(o),r.boundingSphere.radius=o.distanceTo(Po.max)}freeSubdivPointer(){this.subdivPointer&&(wt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as eN,Vector3 as vi}from"three";var iv=-1,tN=1,av={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},sv={polygon_center:0,edge:1,vertex:2},Ml=(n,t)=>(e,r)=>!t||e===0||n===0?0:n*r/100,Ce=(n,t)=>{let e=Math.abs(t),r=e*-1;return(n-iv)*(e-r)/(tN-iv)+r};function lv(n){let t=[],e={};for(var r=0,o=n.length;r<o;r++){var i=JSON.stringify(n[r].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(t.push(n[r]),e[i]=!0)}return t}var rN=new vi,Ju=new vi,oN=new vi,nN=new vi;function ys(n,t){let e=oN.fromArray(n),r=nN.fromArray(t);Ju.copy(r).sub(e);let o=Ju.length();return Ju.normalize().multiplyScalar(o*.5),rN.copy(e).add(Ju).toArray()}var Er=new eN,ed=new vi,td=new vi,bi=new vi;function cv(n){let t=[];for(let e=0;e<=n.index.count;e++)if(ed.fromArray(n.index.array,e*3),Er.setFromAttributeAndIndices(n.attributes.position,ed.x,ed.y,ed.z),Er.getNormal(td),Er.getMidpoint(bi),!(isNaN(bi.x)||isNaN(bi.y)||isNaN(bi.z))){let{a:r,b:o,c:i}=Er,a=r.toArray(),s=o.toArray(),l=i.toArray(),u=r.distanceTo(o),c=o.distanceTo(i),d=i.distanceTo(r),p=ys(a,s),f=ys(s,l),h=ys(l,a),m=[u,c,d],y=Math.max(...m),g=m.filter(_=>Math.round(_)===Math.round(y)).length>1,b=[],w=Er.getMidpoint(bi).toArray();y===u&&!g&&(b=[f,h,h],w=p),y===c&&!g&&(b=[p,h,h],w=f),y===d&&!g&&(b=[p,f,f],w=h),g&&(b=[p,f,h]),t.push({vertices:[a,s,l],faceCenters:b,midpoint:w,norm:Er.getNormal(td).toArray()})}return t}function uv(n){let t=[],{position:e}=n.attributes;for(let r=0;r<e.count;r++){Er.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Er.getNormal(td),Er.getMidpoint(bi);let o=Er.a.toArray(),i=Er.b.toArray(),a=Er.c.toArray();t.push({vertices:[o,i,a],faceCenters:[ys(o,i),ys(i,a),ys(a,o)],midpoint:bi.toArray(),norm:td.toArray()})}return t}var iN=4,aN=.5,uh=n=>.5*(1-Math.cos(n*Math.PI)),dh=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),i=Math.floor(e),a=Math.floor(r),s=t-o,l=e-i,u=r-a,c,d,p=0,f=.5,h,m,y;for(let g=0;g<iN;g++){let b=o+(i<<4)+(a<<8);c=uh(s),d=uh(l),h=this.perlin[b&4095],h+=c*(this.perlin[b+1&4095]-h),m=this.perlin[b+16&4095],m+=c*(this.perlin[b+16+1&4095]-m),h+=d*(m-h),b+=256,m=this.perlin[b&4095],m+=c*(this.perlin[b+1&4095]-m),y=this.perlin[b+16&4095],y+=c*(this.perlin[b+16+1&4095]-y),m+=d*(y-m),h+=uh(u)*(m-h),p+=h*f,f*=aN,o<<=1,s*=2,i<<=1,l*=2,a<<=1,u*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),u>=1&&(a++,u--)}return p}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},dv=dh;import{Vector3 as sN,Matrix4 as lN,Ray as cN}from"three";var pv=new sN,fv=new lN,hv=new cN;function mv(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var gs=class extends ft{constructor(e,r,o){super(e,r,o);this.data=r}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(fv.copy(o).invert(),hv.copy(e.ray).applyMatrix4(fv),hv.intersectBox(this.singleBBox,pv))){let i=pv.applyMatrix4(o),a=e.ray.origin.distanceTo(i);r.push({distance:a,point:i.clone(),object:this})}}};var sr=1e-4,Oo,bv,vv,Sv,gv=new _r,xv=new _r;Lu.then(n=>{Oo=n,bv=[Oo.get_face_center,Oo.get_edge_midpoint,Oo.get_vertex_position],vv=[Oo.get_face_normal,Oo.get_edge_normal,Oo.get_vertex_normal],Sv=[Oo.face_count,Oo.edge_count,Oo.vertex_count]});var dN=new wi,pN=new wi,En=new _r,Si=new _r,Il=new _r,fh=new _r,fN=new _r,hN=new _r;var Jo=new dv,bs=class extends _a(uN){constructor(e,r){super();this.parameters=r;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 r of this.children)r instanceof qo&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof qo&&r.object===e&&(r.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(r=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===r)return;if(o.length<r)for(let i=0,a=r-o.length;i<a;++i){let s=new qo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-r;i<a;++i)this.remove(o[i])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,i=r-this.children.length;o<i;++o){let a=new qo(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-r;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let r=e.radial,o=r.start*yv.DEG2RAD,i=r.end*yv.DEG2RAD,a=o-i,s=new ph(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new _r(0,0,1);break;case"y":l=new _r(0,1,0);break;default:case"x":l=new _r(1,0,0);break}let u=e.randomnessObject??po.defaultData([1,1,1]).randomnessObject,c=u.noiseType==="perlin";Jo.noiseSeed(u.seed);let d=cu((0,xs.default)(u.seed)),p=Ml(u.strength,this.parameters.randomness);for(let[f,h]of this.children.entries()){let m=f*(u.freqScale/10)+u.movement,y=c?Jo.noise(m):d(m,m),g=f+1;h.scale.x=r.scale[0]+p(g,Ce(y,u.scale[0]))||sr,h.scale.y=r.scale[1]+p(g,Ce(y,u.scale[1]))||sr,h.scale.z=r.scale[2]+p(g,Ce(y,u.scale[2]))||sr,h.position.setScalar(0);let b=a/e.count*f-o;switch(r.axis){case"x":h.rotation.set(0,b,0);break;case"y":h.rotation.set(0,0,b);break;case"z":h.rotation.set(b,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0]+p(g,Ce(y,u.position[0])),h.position.y+=r.position[1]+p(g,Ce(y,u.position[1])),h.position.z+=r.position[2]+p(g,Ce(y,u.position[2]));let w=p(g,Ce(y,u.rotation[0])),_=p(g,Ce(y,u.rotation[1])),S=p(g,Ce(y,u.rotation[2]));r.alignment===!0?(h.rotation.x+=s.x+w,h.rotation.y+=s.y+_,h.rotation.z+=s.z+S):h.rotation.set(s.x+w,s.y+_,s.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new ph(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??po.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Jo.noiseSeed(i.seed);let s=cu((0,xs.default)(i.seed)),l=Ml(i.strength,this.parameters.randomness);for(let[u,c]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=a?Jo.noise(d):s(d,d),f=u+1,h=l(f,Ce(p,i.rotation[0])),m=l(f,Ce(p,i.rotation[1])),y=l(f,Ce(p,i.rotation[2]));c.scale.x=1+(r.scale[0]-1)*u+l(f,Ce(p,i.scale[0]))||sr,c.scale.y=1+(r.scale[1]-1)*u+l(f,Ce(p,i.scale[1]))||sr,c.scale.z=1+(r.scale[2]-1)*u+l(f,Ce(p,i.scale[2]))||sr,c.rotation.x=o.x*u+h,c.rotation.y=o.y*u+m,c.rotation.z=o.z*u+y,c.position.x=r.position[0]*u+l(f,Ce(p,i.position[0])),c.position.y=r.position[1]*u+l(f,Ce(p,i.position[1])),c.position.z=r.position[2]*u+l(f,Ce(p,i.position[2]))}}_updateGrid(e){let r=0,o=e.grid,i=e.randomnessObject??po.defaultData([1,1,1]).randomnessObject,a=Ml(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Jo.noiseSeed(i.seed);let l=z0((0,xs.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new _r(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let h=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],m=s?Jo.noise(...h):l(...h),y=this.children[r++];y.scale.x=1+a(r,Ce(m,i.scale[0]))||sr,y.scale.y=1+a(r,Ce(m,i.scale[1]))||sr,y.scale.z=1+a(r,Ce(m,i.scale[2]))||sr;let g=a(r,Ce(m,i.rotation[0])),b=a(r,Ce(m,i.rotation[1])),w=a(r,Ce(m,i.rotation[2]));y.rotation.set(g,b,w),y.position.x=o.size[0]*d-c.x+a(r,Ce(m,i.position[0])),y.position.y=o.size[1]*p-c.y+a(r,Ce(m,i.position[1])),y.position.z=o.size[2]*f-c.z+a(r,Ce(m,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let c=0;c<o.count[1];c++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=s?Jo.noise(...p):l(...p),h=this.children[r++];h.scale.x=1+a(r,Ce(f,i.scale[0]))||sr,h.scale.y=1+a(r,Ce(f,i.scale[1]))||sr,h.scale.z=1+a(r,Ce(f,i.scale[2]))||sr;let m=a(r,Ce(f,i.rotation[0])),y=a(r,Ce(f,i.rotation[1])),g=a(r,Ce(f,i.rotation[2]));h.rotation.set(m,y,g),h.position.x=o.size[0]*u+a(r,Ce(f,i.position[0])),h.position.y=-o.size[1]*c+a(r,Ce(f,i.position[1])),h.position.z=-o.size[2]*d+a(r,Ce(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new ph(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??po.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Jo.noiseSeed(i.seed);let s=cu((0,xs.default)(i.seed)),l=Ml(i.strength,this.parameters.randomness);if(!r.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 gs)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 u=this.getSubdivData(),c=[],d=g=>{let b=g.length,w=g.map(P=>P[0]).reduce((P,O)=>P+O,0),_=g.map(P=>P[1]).reduce((P,O)=>P+O,0),S=g.map(P=>P[2]).reduce((P,O)=>P+O,0);return[w/b,_/b,S/b]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let b=u.filter(w=>p(g.pos[0])===p(w.pos[0])&&p(g.pos[1])===p(w.pos[1])&&p(g.pos[2])===p(w.pos[2]));b.length>1?c.push({pos:g.pos,norm:d(b.map(w=>w.norm))}):c.push(g)});let f=lv(c);if(f.length>0){let g=Math.round(f.length*r.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 h=new uu(this.objectForSample).build(),m=av[r.axis],y=this.children;h.setRandomGenerator((0,xs.default)(this.object.uuid+r.seed));for(let[g,b]of y.entries()){let w=g*(i.freqScale/10)+i.movement,_=a?Jo.noise(w):s(w,w),S=g+1,P=l(S,Ce(_,i.rotation[0])),O=l(S,Ce(_,i.rotation[1])),x=l(S,Ce(_,i.rotation[2]));r.spreadType==="random"?h.sample(Il,fh):(f.length&&(Il.fromArray(f[g].pos),fh.fromArray(f[g].norm)),this.objectForSample instanceof xi&&Il.applyMatrix4(dN.copy(this.objectForSample.matrixWorld).invert())),Il.applyMatrix4(this.object.hiddenMatrix.clone().invert()),b.position.copy(Il),En.fromArray(m);let D=r.align==="normal"?fh:this.object.getWorldDirection(hN),N=Si.fromArray(r.position);Si.x+=Si.x+l(S,Ce(_,i.position[0])),Si.y+=Si.y+l(S,Ce(_,i.position[1])),Si.z+=Si.z+l(S,Ce(_,i.position[2]));let T=Math.acos(D.dot(En)),I=fN.crossVectors(En,D).normalize(),E=pN.makeRotationAxis(I,T),B=D.clone().cross(this.object.up).normalize(),R=B.clone().cross(D).normalize(),k=new wi().makeBasis(B,D,R),V=new _r(En.y,En.z,En.x).normalize(),q=V.clone().cross(En).normalize(),F=new wi().makeBasis(V,En,q).invert(),U=new wi().multiplyMatrices(k,F);b.rotation.setFromRotationMatrix(U),N.applyMatrix4(E),b.position.add(N),b.rotation.x=b.rotation.x+o.x+P,b.rotation.y=b.rotation.y+o.y+O,b.rotation.z=b.rotation.z+o.z+x,b.scale.setScalar(1),b.scale.x=b.scale.x+r.scale[0]+l(S,Ce(_,i.scale[0]))||sr,b.scale.y=b.scale.y+r.scale[1]+l(S,Ce(_,i.scale[1]))||sr,b.scale.z=b.scale.z+r.scale[2]+l(S,Ce(_,i.scale[2]))||sr,b.scale.multiply(this.object.scale),b.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof xi){let r=this.objectForSample,o=sv[e],i=Sv[o],a=bv[o],s=vv[o],l=[],u=i(r.subdivPointerNew);for(let c=0;c<=u-1;c++){let d=a(r.subdivPointerNew,c),p=s(r.subdivPointerNew,c);gv.fromArray(d).applyMatrix4(r.matrixWorld),xv.fromArray(p),l.push({pos:gv.toArray(),norm:xv.toArray()})}return l}else return(this.objectForSample.geometry.index?cv(this.objectForSample.geometry):uv(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,r){if(this.parameters=Ro(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=r.find(this.parameters.toObject.object);o instanceof Nt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new wi,this.hiddenMatrix=new wi,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as FE,Vector3 as jE,Matrix4 as UE,Box3 as HE,MeshBasicMaterial as qE,Skeleton as WE}from"three";import{Camera as ON,OrthographicCamera as CN,PerspectiveCamera as TN,Vector3 as ro,Object3D as Pv,Quaternion as MN,Matrix4 as IN}from"three";import{Camera as vN,LineSegments as SN,BufferGeometry as wN,LineBasicMaterial as AN,Color as mh,Vector3 as _N,Float32BufferAttribute as Av}from"three";import{BoxGeometry as mN}from"three";var Co=n=>{var t;return t=class extends n{},t.geometryHelper=new mN(30,30,30),t};import{Ray as yN,Sphere as gN,Matrix4 as xN,Vector3 as en}from"three";var rd=new yN,hh=new gN,wv=new xN,To=(n,t,e,r,o=!1)=>{let i=t,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),hh.copy(i.boundingSphere),hh.applyMatrix4(a),e.ray.intersectsSphere(hh)===!1||(wv.copy(a).invert(),rd.copy(e.ray).applyMatrix4(wv),i.boundingBox!==null&&rd.intersectsBox(i.boundingBox)===!1))return;let s,l,u,c,d=i.index,p=i.attributes.position,f=i.drawRange,h,m;if(o===!1){let g=Math.max(0,f.start),b=Math.min(d.count,f.start+f.count);for(h=g,m=b;h<m;h+=3)if(l=d.getX(h),u=d.getX(h+1),c=d.getX(h+2),s=y(n,e,rd,p,l,u,c),s){s.faceIndex=Math.floor(h/3),r.push(s);return}}else{let b=i.attributes.position,w=new en,_=new en,S=new en,P=new en,O=2,D=1/((n.scale.x+n.scale.y+n.scale.z)/3),N=D*D,T=Math.max(0,f.start),I=Math.min(b.count,f.start+f.count);for(let E=T,B=I-1;E<B;E+=O){if(w.fromBufferAttribute(b,E),_.fromBufferAttribute(b,E+1),rd.distanceSqToSegment(w,_,P,S)>N)continue;P.applyMatrix4(n.matrixWorld);let k=e.ray.origin.distanceTo(P);k<e.near||k>e.far||r.push({distance:k,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,b,w,_,S,P,O){let x=new en,D=new en,N=new en,T=new en,I=new en;if(x.fromBufferAttribute(_,S),D.fromBufferAttribute(_,P),N.fromBufferAttribute(_,O),w.intersectTriangle(x,D,N,!1,T)===null)return null;I.copy(T),I.applyMatrix4(g.matrixWorld);let B=b.ray.origin.distanceTo(I);return B<b.near||B>b.far?null:{faceIndex:1,distance:B,point:I.clone(),object:g}}};var od=new _N,Br=new vN,yh=class extends SN{constructor(e){let r=new wN,o=new AN({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new mh(15711266),u=new mh(15711266),c=new mh(2857471);d("n1","n2",l),d("n2","n4",l),d("n4","n3",l),d("n3","n1",l),d("f1","f2",l),d("f2","f4",l),d("f4","f3",l),d("f3","f1",l),d("n1","f1",l),d("n2","f2",l),d("n3","f3",l),d("n4","f4",l),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",c),d("u2","u3",c),d("u3","u1",c);function d(f,h,m){p(f,m),p(h,m)}function p(f,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}r.setAttribute("position",new Av(i,3)),r.setAttribute("color",new Av(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Br.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;to("n1",r,e,Br,-i,-a,s),to("n2",r,e,Br,i,-a,s),to("n3",r,e,Br,-i,a,s),to("n4",r,e,Br,i,a,s);let l=s;to("f1",r,e,Br,-i,-a,l),to("f2",r,e,Br,i,-a,l),to("f3",r,e,Br,-i,a,l),to("f4",r,e,Br,i,a,l);let u=l,c=.5;to("u1",r,e,Br,i*.7*c,a*1.1,u),to("u2",r,e,Br,-i*.7*c,a*1.1,u),to("u3",r,e,Br,0,a*(1.1+.9*c),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function to(n,t,e,r,o,i,a){od.set(o,i,a).unproject(r);let s=t[n];if(s!==void 0){let l=e.getAttribute("position");for(let u=0,c=s.length;u<c;u++)l.setXYZ(s[u],od.x,od.y,od.z)}}var nd=class extends Co(yh){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){To(this.object,this.geometry,e,r,!0)}};import{Box3Helper as _v,BoxGeometry as PN}from"three";var id;(t=>t.is=e=>"objectHelper"in e)(id||(id={}));var Lr=(n,t)=>class extends Ca(n){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof _v&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof PN?(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 _v&&(i.visible=!1)}}};var ad=790,vs=new ro,gh=new ro,xh=new MN,bh=new ro,Nl=new ro,vh=new ro,tn=class extends Lr(ON,nd){constructor(e="",r={...ri.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=vn.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new IN,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new CN(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new TN(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,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new ro(e,r,o)),super.lookAt(e),this.getWorldPosition(vs),this.targetOffset=vs.distanceTo(e)}getTarget(e=new ro){return this.getWorldDirection(gh),this.getWorldPosition(vs),gh.multiplyScalar(this.targetOffset),e.copy(vs).add(gh),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(vs),vs.distanceTo(e)}updateUp(){this.getWorldQuaternion(xh),bh.set(0,0,1).applyQuaternion(xh),Nl.copy(Pv.DEFAULT_UP),this.isUpVectorFlipped&&Nl.negate(),Nl.applyQuaternion(xh),vh.copy(Pv.DEFAULT_UP).projectOnPlane(bh),this.angleOffsetFromUp=vh.angleTo(Nl),this.angleOffsetFromUp*=vh.cross(Nl).dot(bh)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new ro),i=e.getWorldDirection(new ro).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new ro).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new ro,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let i=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-ad*.5*i,this.right=ad*.5*i,this.top=ad*.5*(1/a),this.bottom=-ad*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,a,s):this.orthoCamera.setViewOffset(e,r,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,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return ta(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{MathUtils as qoe}from"three";import{BufferGeometry as Ov,Matrix4 as Sh,Float32BufferAttribute as NN,Vector3 as Mv}from"three";var Ss=new Sh,DN=new Sh,sd=new Sh,Cv=new Mv,Tv=new Mv;var mr=class extends hr{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Ov;this.onAfterRender=(e,r,o,i,a,s)=>{super.onAfterRender(e,r,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,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof mr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof Nt&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){Ss.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=Nr.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;Nr.transformMeshSet(a.booleanMeshSetAddress,Ss),a.booleanMatrixInvOld.copy(Ss).invert(),a.booleanWasTransformed=!1}else a instanceof mr&&a.needsTransformForDownstream===!0?(Nr.transformMeshSet(a.booleanMeshSetAddress,Ss),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Nr.transformMeshSet(a.booleanMeshSetAddress,DN.multiplyMatrices(Ss,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Ss).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}Nr.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 NN([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Nr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Ov,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Nr.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,hs(this),ms(this)}dispose(){super.dispose(),this.geometry.dispose()}get recursiveBBox(){let e=super.recursiveBBox;return this.geometry.boundingSphere?.radius===-1&&(e.getCenter(this.geometry.boundingSphere.center),sd.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(sd),Cv.copy(e.max).applyMatrix4(sd),Tv.copy(e.min).applyMatrix4(sd),this.geometry.boundingSphere.radius=Cv.distanceTo(Tv)/2),e}};import{Light as EN}from"three";var Iv;(t=>{function n(e){return Re.is(e)&&e instanceof EN}t.is=n})(Iv||(Iv={}));var ws=(n,t)=>class extends Lr(n,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var Bn=n=>n instanceof Nt,Dl=n=>n!==null&&n instanceof mr;var El=n=>id.is(n);import{Group as LN}from"three";import{AxesHelper as BN}from"three";var Rr=class extends Co(BN){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){To(this.object,Rr.geometryHelper,e,r)}update(){}};var Ln=class extends Lr(LN,Rr){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Group as RN}from"three";var ld=class extends Lr(RN,Rr){constructor(e,r,o){super();this.super_Entity(e,r),this.context=o,this.objectHelper.update()}updateState(e,r){this.updateState_Entity(e,r)}};import{Color as sD,Fog as lD,HemisphereLight as cD}from"three";import{ShaderChunk as Bl}from"three";var VN=n=>`
|
|
2241
2242
|
|
|
2242
2243
|
// PCSS implementation based on:
|
|
2243
2244
|
// https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
|
|
@@ -2611,7 +2612,7 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
|
|
|
2611
2612
|
}
|
|
2612
2613
|
|
|
2613
2614
|
#endif
|
|
2614
|
-
`,RN=hl.lights_fragment_begin,VN=hl.shadowmask_pars_fragment,jb=null,zN=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Ub=(n="medium")=>{if(jb===n)return!1;jb=n;let t=zN(n);hl.shadowmap_pars_fragment=LN(t);let e=RN.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 ]"),hl.lights_fragment_begin=e;let r=VN.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),hl.shadowmask_pars_fragment=r,!0};import{DirectionalLight as UN,CameraHelper as Hb}from"three";import{DirectionalLightHelper as GN}from"three";var ns=class extends yo(GN){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){go(this.object,ns.geometryHelper,e,r)}};import{PointLightHelper as FN}from"three";var is=class extends yo(FN){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){go(this.object,is.geometryHelper,e,r)}};import{SpotLightHelper as kN,Vector3 as jN}from"three";var Gu=class extends yo(kN){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){go(this.object,Gu.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Gu._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let 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)}}},ml=Gu;ml._vector=new jN;function HN(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var as=class extends os(UN,ns){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let 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 Hb(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof Hb&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e);let r=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;t.size!==void 0&&HN(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r&&this.update()}};import{Scene as n3}from"three";import{SpotLight as qN,CameraHelper as qb,MathUtils as WN,Vector3 as Xb,Quaternion as $N}from"three";var Wb=new Xb,$b=new Xb,Yb=new $N,ss=class extends os(qN,ml){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=WN.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new qb(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof qb&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),$b.setFromMatrixPosition(this.matrixWorld),Yb.setFromRotationMatrix(this.matrixWorld),Wb.copy(this.up).applyQuaternion(Yb).negate().multiplyScalar(this.distance),this.target.position.copy($b).add(Wb),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Ne;(v=>{function n(){return[1,0,0,0,1,0,0,0,1]}v.identity=n;function t(_,A=v.identity()){for(let x=0,T=_.length;x<T;x++)A[x]=_[x];return A}v.copy=t;function e(_,A,x,T,C,P){return v.setAbcdef(v.identity(),_,A,x,T,C,P)}v.create=e;function r(_,A,x,T,C,P,O){return _[0]=A,_[1]=T,_[2]=P,_[3]=x,_[4]=C,_[5]=O,_}v.setAbcdef=r;function o(_,A){let[x,T,C,P,O,M]=a(_),[I,N,B,D,G,L]=a(A),V=I*x+N*C,z=I*T+N*P,k=B*x+D*C,$=B*T+D*P,q=G*x+L*C+O,H=G*T+L*P+M;return v.create(V,z,k,$,q,H)}v.append=o;function i(_,A){let[x,T,C,P,O,M]=a(_),[I,N,B,D,G,L]=a(A),V=x,z=T,k=C,$=P;(I!==1||N!==0||B!==0||D!==1)&&(V=x*I+T*B,z=x*N+T*D,k=C*I+P*B,$=C*N+P*D);let q=O*I+M*B+G,H=O*N+M*D+L;return v.create(V,z,k,$,q,H)}v.prepend=i;function a(_){return[_[0],_[3],_[1],_[4],_[2],_[5]]}v.getAbcdef=a;function s(_){let[A,x,T,C,P,O]=v.getAbcdef(_),M=A*C-x*T,I=C/M,N=-x/M,B=-T/M,D=A/M,G=(T*O-C*P)/M,L=-(A*O-x*P)/M;return v.create(I,N,B,D,G,L)}v.invert=s;function l([_,A],x){let[T,C,P,O,M,I]=v.getAbcdef(x);return[T*_+P*A+M,C*_+O*A+I]}v.apply=l;function u(_,A){let[x,T,C,P,O,M]=v.getAbcdef(A),I=1/(x*P+C*-T),[N,B]=_;return[P*I*N+-C*I*B+(M*C-O*P)*I,x*I*B+-T*I*N+(-M*x+O*T)*I]}v.applyInverse=u;function c(_,A,x=A){let[T,C,P,O,M,I]=v.getAbcdef(_);return v.setAbcdef(_,T*A,C*x,P*A,O*x,M*A,I*x),_}v.scale=c;function d(_,A){let x=Math.cos(A),T=Math.sin(A),[C,P,O,M,I,N]=v.getAbcdef(_);return v.setAbcdef(_,C*x-P*T,C*T+P*x,O*x-M*T,O*T+M*x,I*x-N*T,I*T+N*x),_}v.rotate=d;function p(_,A,x){let[T,C]=x,P=v.translate(_,-T,-C);return P=v.rotate(P,A),P=v.translate(P,T,C),P}v.rotateAround=p;function f(_,A,x){let[T,C,P,O,M,I]=v.getAbcdef(_);return v.setAbcdef(_,T,C,P,O,M+A,I+x),_}v.translate=f;function h(_,A,x){let[T,C,P,O]=v.getAbcdef(_);return v.setAbcdef(_,T,C,P,O,A,x),_}v.setTranslate=h;function m(_,A,x){let[T,C,P,O]=v.getAbcdef(_);return v.setAbcdef(_,T,C,P,O,A,x),_}v.setPosition=m;function y(_){let[A,x,T,C]=v.getAbcdef(_),P=Math.sqrt(A*A+x*x),O=Math.sqrt(T*T+C*C);return[P,O]}v.getScale=y;function g(_){let[,,,,A,x]=v.getAbcdef(_);return[A,x]}v.getPosition=g;function b(_,A){return v.decompose(_,A).rotation}v.getRotation=b;function S(_,A){let[x,T,C,P,O,M]=v.getAbcdef(_),I=-Math.atan2(-C,P),N=Math.atan2(T,x),B=Math.abs(I+N),D=0,G=[0,0];B<1e-5||Math.abs(Math.PI*2-B)<1e-5?(D=N,G[0]=G[1]=0):(D=0,G[0]=I,G[1]=N);let L=[Math.sqrt(x*x+T*T),Math.sqrt(C*C+P*P)];return{position:[O+(A[0]*x+A[1]*C)-A[0],M+(A[0]*T+A[1]*P)-A[1]],scale:L,rotation:D,skew:G,pivot:A}}v.decompose=S;function w(_,A,x,T,C=[0,0]){let[P,O]=_,[M,I]=A,[N,B]=T,[D,G]=C,L=Math.cos(x+G)*M,V=Math.sin(x+G)*M,z=-Math.sin(x-D)*I,k=Math.cos(x-D)*I,$=P-(N*L+B*z)+N,q=O-(N*V+B*k)+B;return v.create(L,V,z,k,$,q)}v.compose=w})(Ne||(Ne={}));var YN=Math.PI/180,Woe=180/Math.PI;function Qb(n,t,e,r,o,i){let a=n-e,s=t-r;return a*a/(o*o)+s*s/(i*i)<=1}function Kb(n){return n*YN}function kf(n){return{all:n=n||new Map,on:function(t,e){var r=n.get(t);r?r.push(e):n.set(t,[e])},off:function(t,e){var r=n.get(t);r&&(e?r.splice(r.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var r=n.get(t);r&&r.slice().map(function(o){o(e)}),(r=n.get("*"))&&r.slice().map(function(o){o(t,e)})}}}var Wo=class{constructor(t,e,r){this.uuid=t;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.emitter=kf();this.dpr=r.dpr??1,this.dataPatched=e}project(t,e){let r=this.worldMatrix;return e&&(r=Ne.append(e.worldMatrix,r)),Ne.applyInverse(t,r)}intersects(t,e,r){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this.singleBBox;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}applyTransforms(t){t.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=Ne.compose(this.position,this.scale,Kb(this.rotation),Bo.getPivot(this.dataPatched))}updateWorldMatrix(t,e,r){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(t,!0,!1),t&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Ne.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Ne.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Bo.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{t.resetBBoxNeedsUpdateSelf()})}updateTransformState(t){let e=!1;t.position!==void 0&&(e=!0,this.position=t.position),t.rotation!==void 0&&(e=!0,this.rotation=t.rotation),t.scale!==void 0&&(e=!0,this.scale=t.scale),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(t,e,r){t.type===0&&t.props.visible!==void 0&&(this.visible=t.props.visible),this.data=e,this.data=e;let o=t,i=Oe(t.path,["states","*"]);if(i!==null){if(t.type===0){let[a]=i;if(this?.stateSelection===a){let s={...t.props};if(delete s.name,Object.values(t.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let u=Ze.zoom(l,t.path.slice(2));if(u)for(let c in t.props)t.props[c]===void 0&&c in u&&(s[c]=u[c])}}o={...t,props:s,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:l,...u}=a;a=u}let s=Ze.removeOverridden(t.path,t.props,a);o={...t,props:s}}}this.updateByPatchedOpBase(o,Hn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),r)}changeSelectedState(t,e,r=!1){if(!(this.data.states.length===0&&!r)){for(let o of this.data.states)Hn.toOps(this.data,o.data).forEach(a=>{let s=ji.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(t!==null){let o=this.data.states.data(t);o&&(this.dataPatched=Hn.patch(this.data,o),Hn.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}updateState(t,e){t.name!==void 0&&(this.name=t.name),t.visible!==void 0&&(this.visible=t.visible),this.updateTransformState(t)}updateByPatchedOpBase(t,e,r){this.dataPatched=e,this.updateByPatchedOp(t,e,r)}updateByPatchedOp(t,e,r){t.path.length===0&&t.type===0&&this.updateState(t.props,r),this.requestRender()}traverseFrameAncestors(t){this.traverseAncestors(e=>{e.data.type==="frame2d"&&t(e)})}traverseAncestors(t){let e=this.parent;for(;e;)t(e),e=e.parent}requestRender(){this.traverseFrameAncestors(t=>{t.requestRender()})}clone(t){let e=new Wo(this.uuid,this.data,t);return e.parent=void 0,e}addEventListener(t,e){this.emitter.on(t,e)}removeEventListener(t,e){this.emitter.off(t,e)}dispatchEvent(t){this.emitter.emit(t.type,{...t,target:t.target??this})}traverseSortNextHelper(){let t=this.parent;if(t){let e=t.children;if(e){let r=e.indexOf(this)+1;return e[r]?e[r]:t.traverseSortNextHelper()}}}sortNext(){let t=this.children;return t&&t.length>0&&t[0]?t[0]:this.traverseSortNextHelper()}isDescendantOf(t){t instanceof Wo&&(t=t.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===t)return!0;e=e.parent}return!1}};var Ft=class extends Wo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof Ft&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let r=this.children.indexOf(e);r>=0&&(this.children.splice(r,1),e.parent=void 0)}traverse(e){let r=e(this);if(r!==!0)for(let o of this.children)o instanceof Ft?o.traverse(e):r=e(o)}intersectsChildren(e,r,o,i=!1,a=[]){for(let s of this.children)if(s instanceof Ft&&s.intersectsChildren(e,r,o,i,a),s.intersects(e,r,o)&&(a.push(s),i))break;return a}updateWorldMatrix(e,r,o){if(super.updateWorldMatrix(e,r,o),o&&this.children)for(let i of this.children)i.updateWorldMatrix(e,!1,!0)}find(e){let r;return this.traverse(o=>{o.uuid===e&&(r=o)}),r}innerDrawChildren(e){for(let r=this.children.length-1;r>=0;r--)this.children[r].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let r=new Ft(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}},$o=class extends Ft{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.reset(r)}reset(e){this.data=e}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let r=new $o(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function XN(n,t){let[[e,r],[o,i]]=n,[[a,s],[l,u]]=t,c=(e-o)*(s-u)-(r-i)*(a-l);if(c===0)return!1;let d=((e-a)*(s-u)-(r-s)*(a-l))/c,p=-((e-o)*(r-s)-(r-i)*(e-a))/c;return d>=0&&d<=1&&p>=0&&p<=1}var Jb=[[-1,1],[-1,-1],[1,-1],[1,1]],Zb=(n,t,e)=>{let r=n.getCenter(),o=n.getHalfSize(),i=Ne.append(t,n.worldMatrix);o[0]===0&&o[1]===0?e.push(Ne.apply(r,i)):Jb.forEach(a=>{let s=[a[0]*o[0]+r[0],a[1]*o[1]+r[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(t,e=!1){t.updateWorldMatrix(),this.makeEmpty(),Ne.copy(t.worldMatrix,this.matrix);let r=Ne.invert(t.worldMatrix);this.expandByObjectSize(t,r,e)}expandByObjectSize(t,e,r=!1){let o=[];r===!0&&t instanceof Ft?t.traverse(i=>{i.visible&&Zb(i,e,o)}):Zb(t,e,o),this.setFromPoints(o)}getCenter(){let[t,e]=this.min,[r,o]=this.getHalfSize();return Ne.apply([t+r,e+o],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[(this.max[0]-this.min[0])*.5,(this.max[1]-this.min[1])*.5]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(t){this.makeEmpty();for(let e of t)this.expandByPoint(e)}expandByPoint(t){this.min=[Math.min(this.min[0],t[0]),Math.min(this.min[1],t[1])],this.max=[Math.max(this.max[0],t[0]),Math.max(this.max[1],t[1])]}computeVertices(){let[t,e]=this.getHalfSize(),r=this.getCenter(),[o,i,a,s]=Ne.getAbcdef(this.matrix),l=Ne.create(o,i,a,s,r[0],r[1]);this.vertices=Jb.map(([u,c])=>Ne.apply([u*t,c*e],l))}computeEdges(){this.edges=[];for(let t=0,e=this.vertices.length;t<e;++t)this.edges.push([this.vertices[t],this.vertices[(t+1)%e]])}project(t,e){let r=this.matrix;return e&&(r=Ne.append(e.worldMatrix,r)),Ne.applyInverse(t,r)}intersects(t,e,r){return this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}containsPoint(t){let[e,r]=t,[o,i]=this.min,[a,s]=this.max;return e>=o&&e<=a&&r>=i&&r<=s}intersectsBBox2D(t){for(let e=0,r=this.edges.length;e<r;e++){let o=this.edges[e];for(let i=0,a=t.edges.length;i<a;i++){let s=t.edges[i];if(XN(o,s))return!0}}for(let e=0,r=t.vertices.length;e<r;e++){let o=t.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let t=this.min,e=this.max;this.min=[Math.min(t[0],e[0]),Math.min(t[1],e[1])],this.max=[Math.max(t[0],e[0]),Math.max(t[1],e[1])]}copy(t){this.min=[...t.min],this.max=[...t.max],Ne.copy(t.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let t=new On;return t.copy(this),t}};var tv,rv=new Promise(n=>{tv=n}),ev=!1;var Fu;function ov(){if(ev)return;if(Fu)return Fu;async function n(){let e=await import("./ui.js");tv(e.default??e),ev=!0}return Fu=n(),Fu}function av(n){let t=!1;return n.scene.objects.traverse((e,r)=>{(r.type==="Mesh"&&r.geometry.type==="UIGeometry"||r.type==="Page"&&r.uiFrame!==void 0)&&(t=!0)}),t}var be,jf;async function QN(n){let t=await rv;be||(jf||(jf=t({locateFile:()=>n})),be=await jf)}var nv=Ne.identity(),gl=class{constructor(t,e=1){this.canvas=t;this.dpr=e;this._width=0;this._height=0;this._strokeMode="inside";this._layerBlur=0;this._backgroundBlur=0;this._dropShadowBlur=0;this._dropShadowOffsetX=0;this._dropShadowOffsetY=0;this._dropShadowColor=we.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=we.transparent;this._fonts=new Map;try{let r=t.getBoundingClientRect();t.width=r.width*e,t.height=r.height*e}catch{console.log(t.width,e)}this._currentM3Transform=nv,this._currentTransform=new Float32Array(nv)}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await QN(this.wasmURL),this._surface=be.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new be.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(be.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(be.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(t){this._currentM3Transform=t,this._currentTransform.set(t)}async loadFont(t,e){let r=await(await fetch(t)).arrayBuffer();this.registerFont(r,e)}registerFont(t,e){if(this._fonts.has(e))return;let r=be.FontMgr.FromData(t);if(r)this._fonts.set(e,r);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(t){this._paintStroke&&this._paintStroke.setColor(ku(t),be.ColorSpace.DISPLAY_P3)}set fillColor(t){this._paintFill&&this._paintFill.setColor(ku(t),be.ColorSpace.DISPLAY_P3)}set lineWidth(t){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?t:t*2)}set strokeMode(t){this._strokeMode=t}set dropShadowBlur(t){this._dropShadowBlur=t}set dropShadowColor(t){this._dropShadowColor=t}set dropShadowOffsetX(t){this._dropShadowOffsetX=t}set dropShadowOffsetY(t){this._dropShadowOffsetY=t}set innerShadowBlur(t){this._innerShadowBlur=t}set innerShadowColor(t){this._innerShadowColor=t}set innerShadowOffsetX(t){this._innerShadowOffsetX=t}set innerShadowOffsetY(t){this._innerShadowOffsetY=t}set innerShadowSpread(t){this._innerShadowSpread=t}set layerBlur(t){this._layerBlur=t}set backgroundBlur(t){this._backgroundBlur=t}clear(){this.ctx?.clear(be.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new be.Path}closePath(){let t=this._currentPath;if(t){if(t.isEmpty())return;let e=t.getBounds();(e[3]-e[1]||e[2]-e[0])&&t.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(t,e,r,o,i=0,a=0,s=0,l=0){let u=be.XYWHRect(t,e,r,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(u,be.ClipOp.Intersect,!0);else{let c=be.RRectXY(u,i,i);c[4]=c[5]=i,c[6]=c[7]=a,c[8]=c[9]=s,c[10]=c[11]=l,this.ctx?.clipRRect(c,be.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let t=Ne.invert(this.currentTransform);this.ctx.concat(t);let e=Ne.translate(Ne.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(t,e,r=!0){if(this.ctx&&this._currentPath){let o,i=!1;if(r&&this._hasDropShadow()){let a=t.copy();a.setColor(ku(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=be.MaskFilter.MakeBlur(be.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,be.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&r){this.ctx.save(),this.ctx.clipPath(this._currentPath,be.ClipOp.Intersect,!0);let a=be.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,be.TileMode.Clamp,null),s=t.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,be.SaveLayerInitWithPrevious),this.ctx.drawColor(t.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),i=!0}if(this._layerBlur>0){let a=t.copy();o=be.MaskFilter.MakeBlur(be.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(t),r&&this._hasInnerShadow()){let a=new be.Paint;a.setAntiAlias(!0),a.setStyle(be.PaintStyle.Fill),a.setColor(ku(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=be.MaskFilter.MakeBlur(be.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[u,c,d,p]=l,f=d-u,h=p-c;this.ctx.save(),this.ctx.clipPath(this._currentPath,be.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,be.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(be.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+f+Math.abs(this._innerShadowOffsetX*2),2e3+h+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(be.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(t,e=!0){if(this.ctx&&this._currentPath&&t){let r=this.ctx,o=this._currentPath;this._applyEffectsToPaint(t,i=>{let a=!1;!e&&this._strokeMode!=="center"&&(r.save(),r.clipPath(o,this._strokeMode==="outside"?be.ClipOp.Difference:be.ClipOp.Intersect,!0),a=!0),r.drawPath(o,i),a&&r.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}ellipse(t,e,r,o,i,a,s,l){if(!iv([t,e,r,o])||!this._currentPath)return;if(r<0||o<0)throw Error("radii cannot be negative");let u=be.XYWHRect(t-r,e-o,r*2,o*2);this._currentPath?.addOval(u)}rect(t,e,r,o,i=0,a=0,s=0,l=0){let u=be.XYWHRect(t,e,r,o);if(!!iv(u))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(u);else{let c=be.RRectXY(u,i,i);c[4]=c[5]=i,c[6]=c[7]=a,c[8]=c[9]=s,c[10]=c[11]=l,this._currentPath?.addRRect(c)}}getHorizontalAlign(t){switch(t){case 2:return be.TextAlign.Right;case 3:return be.TextAlign.Center;case 4:return be.TextAlign.Justify;case 1:default:return be.TextAlign.Left}}drawTextInner(t,e,r,[o,i,a,s],l,u,c=!0){let d=0,{ctx:p}=this;if(!p)return d;let f=u.copy(),h=u.copy();return h.setAlphaf(0),this._applyEffectsToPaint(f,m=>{e.pushPaintStyle(r,m,h),e.addText(t);let y=e.build();y.layout(a);let g=i;l===2?g+=(s-y.getHeight())/2:l===3&&(g+=s-y.getHeight()),p.drawParagraph(y,o,g),d=y.getHeight(),e.reset(),y.delete()},c),f.delete(),h.delete(),d}drawText(t,e){let r=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){let l=new be.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),u=new be.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),c=be.XYWHRect(e.x,e.y,e.width,e.height),d=be.ParagraphBuilder.Make(u,o);a&&(r=this.drawTextInner(t,d,l,c,e.verticalAlign,a,!0)),s&&(r=this.drawTextInner(t,d,l,c,e.verticalAlign,s,!1)),d.delete()}return{height:r}}render(){this._surface?.flush()}moveTo(t,e){this._currentPath?.moveTo(t,e)}lineTo(t,e){this._currentPath?.lineTo(t,e)}bezierCurveTo(t,e,r,o,i,a){this._currentPath?.cubicTo(t,e,r,o,i,a)}quadraticCurveTo(t,e,r,o){this._currentPath?.quadTo(t,e,r,o)}setTransform(t,e=!1){if(!this.ctx)return;let r=this.ctx.getTotalMatrix(),o=Ne.invert(r);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let i=Ne.getScale(this.camera.worldMatrix);this.ctx?.scale(1/i[0],1/i[1])}this.ctx?.concat(t),this.currentTransform=t}transform(t){this.ctx?.concat(t)}setSize(t,e){t===this._width&&e===this._height||(this._width=t,this._height=e,this.canvas.style.width=t+"px",this.canvas.style.height=e+"px",this.canvas.width=t*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=be.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function iv(n){for(let t=0;t<n.length;t++)if(n[t]!==void 0&&!Number.isFinite(n[t]))return!1;return!0}function ku({r:n,g:t,b:e,a:r}){return be.Color4f(n,t,e,r)}var xl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=we.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(t){t.color!==void 0&&(this.color=t.color),t.enabled!==void 0&&(this.enabled=t.enabled),t.blurRadius!==void 0&&(this.blurRadius=t.blurRadius),t.offset!==void 0&&(this.offset=t.offset),t.spread!==void 0&&(this.spread=t.spread)}};var bl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.radius!==void 0&&(this.radius=t.radius)}};var ju=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=we.transparent;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color)}};var Uu=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=we.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color),t.thickness!==void 0&&(this.thickness=t.thickness),t.mode!==void 0&&(this.mode=t.mode)}};var Pr=class extends Wo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.fill=new ju(e+"-fill",r.fill,o),this.stroke=new Uu(e+"-stroke",r.stroke,o),this.dropShadow=new xl(e+"-dropShadow",r.dropShadow,o),this.innerShadow=new xl(e+"-innerShadow",r.innerShadow,o),this.backgroundBlur=new bl(e+"-backgroundBlur",r.backgroundBlur,o),this.layerBlur=new bl(e+"-layerBlur",r.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:we.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:we.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=we.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=we.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Oe(e.path,["fill"])?this.fill.update(e.props):Oe(e.path,["stroke"])?this.stroke.update(e.props):Oe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Oe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Oe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Oe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,r){super.updateState(e,r),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let r=new Pr(this.uuid,this.data,e);return r.parent=void 0,r}};var Cn=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.updateState(r,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,r){return Qb(e,r,this.width*.5,this.height*.5,this.width*.5,this.height*.5)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e)}clone(e){let r=new Cn(this.uuid,this.data,e);return r.parent=void 0,r}};var xo=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(r,o)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let r=new xo(this.uuid,this.data,e);return r.parent=void 0,r}};var Tn=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(r,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:we.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:we.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let r=this.data.textTransform,o=this.data.text.textValue.toString(),i=r===2?o.toUpperCase():r===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 r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:r}){e.font!==void 0&&(this._fontHolder=r.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateFontState(e,r)}clone(e){let r=new Tn(this.uuid,this.data,e);return r.parent=void 0,r}};var ls=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(r,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(i=>Hu.extremas(i)),r=[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]<r[0]&&(r[0]=s[0][0]),s[0][1]<r[1]&&(r[1]=s[0][1]),s[1][0]>o[0]&&(o[0]=s[1][0]),s[1][1]>o[1]&&(o[1]=s[1][1])}return this.extremasBBox.min=[r[0],r[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,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,r=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:r.position,cp1:r.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,r]=this.extremasBBox.min,[o,i]=this.getHalfSize();return[e+o,r+i]}getHalfSize(){let{min:e,max:r}=this.extremasBBox;return[(r[0]-e[0])*.5,(r[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,u]=s.position;e.moveTo(l,u)}else{let l=this.data.points[i-1].data,[u,c]=l.controlNext.position,[d,p]=s.controlPrevious.position,[f,h]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};Hu.derive(m),e.bezierCurveTo(u,c,d,p,f,h)}}let r=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[i,a]=o.controlNext.position,[s,l]=r.controlPrevious.position,[u,c]=r.position;e.bezierCurveTo(i,a,s,l,u,c)}}updateState(e,r){super.updateState(e,r),this.computeExtremas()}clone(e){let r=new ls(this.uuid,this.data,e);return r.parent=void 0,r}},Hu;(i=>{function n(a){let s=a.start,l=a.cp1,u=a.cp2,c=a.end,d=[3*(l[0]-s[0]),3*(l[1]-s[1])],p=[3*(u[0]-l[0]),3*(u[1]-l[1])],f=[3*(c[0]-u[0]),3*(c[1]-u[1])],h={start:d,cp:p,end:f};return a.derivative=h,h.derivative=Uf.derive(h),h}i.derive=n;function t(a,s,l,u=!1){let c=a-2*s+l;if(c!==0){let d=-Math.sqrt(Math.abs(s*s-a*l)),p=-a+s,f=-(d+p)/c,h=-(-d+p)/c;return[f,h]}else if(s!==l&&c===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??i.derive(a),l=s.start,u=s.cp,c=s.end;return[t(l[0],u[0],c[0]),t(l[1],u[1],c[1])]}i.droot=e;function r(a){let[s,l]=i.droot(a),u=[a.start[0],a.end[0]],c=[a.start[1],a.end[1]];for(let d of s)u.push(i.compute(a,Math.min(1,Math.max(0,d)))[0]);for(let d of l)c.push(i.compute(a,Math.min(1,Math.max(0,d)))[1]);return u.sort((d,p)=>d-p),c.sort((d,p)=>d-p),[[u[0],c[0]],[u[u.length-1],c[c.length-1]]]}i.extremas=r;function o(a,s){if(s===0)return[...a.start];if(s===1)return[...a.end];let l=1-s,u=l*l,c=s*s,d=u*l,p=u*s*3,f=l*c*3,h=s*c;return[d*a.start[0]+p*a.cp1[0]+f*a.cp2[0]+h*a.end[0],d*a.start[1]+p*a.cp1[1]+f*a.cp2[1]+h*a.end[1]]}i.compute=o})(Hu||(Hu={}));var Uf;(r=>{function n(o){let i=o.start,a=o.cp,s=o.end,l=[2*(a[0]-i[0]),2*(a[1]-i[1])],u=[2*(s[0]-a[0]),2*(s[1]-a[1])],c={start:l,end:u};return c.derivative=Hf.derive(c),o.derivative=c,c}r.derive=n;function t(o){let i=o.derivative??r.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]}r.droot=t;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,u=s,c=a*i*2,d=l;return[u*o.start[0]+c*o.cp[0]+d*o.end[0],u*o.start[1]+c*o.cp[1]+d*o.end[1]]}r.compute=e})(Uf||(Uf={}));var Hf;(e=>{function n(r){let o=r.start,i=r.end,a=[i[0]-o[0],i[1]-o[1]];return r.derivative=a,r.derivative}e.derive=n;function t(r,o){if(o===0)return[...r.start];if(o===1)return[...r.end];let i=r.start,a=r.end;return[i[0]+(a[0]-i[0])*o,i[1]+(a[1]-i[1])*o]}e.compute=t})(Hf||(Hf={}));var hr=class extends Ft{constructor(e,r,o){super(e,r,o);this.uuid=e;this.width=0;this.height=0;this.background=new xo(e+"-background",oa.defaultData,o),this.background.parent=this,this.updateState(r,o)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(e){this.background.cornerRadius=e}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(e,r,o){super.updateWorldMatrix(e,r,o),this.background?.updateWorldMatrix(e,r,o)}draw(e){if(!this.visible)return;e.save();let r=this.width,o=this.height;this.applyTransforms(e),this.background.width=r,this.background.height=o,this.background.draw(e),e.clipRect(0,0,r,o,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Oe(e.path,["fill"])?this.fill.update(e.props):Oe(e.path,["stroke"])?this.stroke.update(e.props):Oe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Oe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Oe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Oe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let r=new hr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function sv(n,t,e){switch(t.type){case"ellipse2d":return new Cn(n,t,e);case"rectangle2d":return new xo(n,t,e);case"text2d":return new Tn(n,t,e);case"vector2d":return new ls(n,t,e);case"frame2d":return new hr(n,t,e);case"group2d":default:return new $o(n,t,e)}}var qf=class{constructor(t,e,r){this.uuid=t;this.data=e;this.group=new $o(qf.GROUP_ID,{...Ns.defaultData},r),this.createChildrenObjects(e.objects,this.group,r)}createObject(t,e,r,o,i,a){let s=sv(t,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),r.length>0&&(s instanceof $o||s instanceof hr)&&this.createChildrenObjects(r,s,a))}createChildrenObjects(t,e,r){let o=0;for(let i of t)this.createObject(i.id,i.data,i.children,e,o,r),o+=1}draw(t){this.group.draw(t)}updateEntityByOp(t,e,r,o){let i=this.find(t);if(i)try{i.updateByOp(e,r,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(t,e){if(t.path.length===0&&t.type===7){let r=t.parent===null?this.group:this.find(t.parent);r!==void 0&&r instanceof Ft&&(this.createObject(t.id,t.data,t.children,r,t.localIndex,e),r.requestRender())}else if(t.path.length===0&&t.type===8){let r=this.find(t.id);if(r!==void 0&&r.parent!==void 0&&r.parent instanceof Ft){let o=r.parent;r.resetBBoxNeedsUpdate(),o?.remove(r),o?.requestRender()}}else if(t.path.length===0&&t.type===9){let r=this.find(t.id);if(r!==void 0){let o=r.parent,i=t.parent===null?this:this.find(t.parent);if(i===void 0&&!1&&console.error("unexpected",i,t),i instanceof Ft||i===this){i.add(r);let a=t.localIndex;i.children.splice(a,0,i.children.pop()),r.updateWorldMatrix(!0,!1,!0),o?.requestRender(),r.requestRender()}r.resetBBoxNeedsUpdate()}}}add(t){this.group.add(t)}remove(t){this.group.remove(t)}traverse(t){this.group.traverse(e=>{e!==this.group&&t(e)})}intersectsChildren(t,e,r,o=!1,i=[]){return this.group.intersectsChildren(t,e,r,o,i)}find(t){return this.group.find(t)}get children(){return this.group.children}project(t,e){return this.group.project(t,e)}getWithSortKey(t){let e=this.find(t);if(e===void 0)return;let r=[],o=e;for(;o!==this.group;){let i=o;o=o.parent;let a=o.children.indexOf(i);r.splice(0,0,a)}return{entity:e,sortKey:r}}getAllSorted(t){let e=[];for(let r of t){let o=this.getWithSortKey(r.id);o!==void 0&&e.push(o)}return e.sort((r,o)=>Cl(r.sortKey,o.sortKey)),e.map(r=>r.entity)}},ci=qf;ci.GROUP_ID="scene2d";function Wf({constraints:n,newParentWidth:t,newParentHeight:e,initialParentWidth:r,initialParentHeight:o,objectInitialWidth:i,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:u}=n,c=t-r,d=e-o,p=i,f=a,h=s[0],m=s[1];if(l!==0){if(l===1)h+=c;else if(l===3)h+=c/2;else if(l===2)p=Math.max(1,p+c);else if(l===4){let y=t/r;p*=y,h*=y}}if(u!==0){if(u===1)m+=d;else if(u===3)m+=d/2;else if(u===2)f=Math.max(1,f+d);else if(u===4){let y=e/o;f*=y,m*=y}}return{width:p,height:f,position:[h,m]}}import{MathUtils as KN}from"three";var ZN=Ne.identity(),cs=class{constructor(t,e,r,o){this.uuid=t;this.width=e;this.height=r;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this.onFrameOverrideObjectEvent=t=>{if(t.target?.uuid!==void 0){let e=this.frameRoot?.find(t.target.uuid);e&&e.dispatchEvent({...t,target:e})}};this.scene2d=new ci(KN.generateUUID(),zc.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=document.createElement("canvas"),this.renderer=new gl(this.canvas),o.shared.addCanvas(this.uuid,this.canvas),this.textureHolder=o.shared.canvas(this.uuid),this.promise=this.init()}async init(){this.renderer instanceof gl&&(this.renderer.wasmURL=Hx.skiaWasmUrl),await this.renderer.init()}render(){this.isFrameDirty&&(this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),this.textureHolder?.setNeedsUpdate(!0),this.isFrameDirty=!1)}updateEntity2DByOp(t,e,r,o){this.scene2d.updateEntityByOp(t,e,r,o),this.applySize()}updateTreeByOp(t,e){this.scene2d.updateTreeByOp(t,e),this.applySize()}applyOverrides(t){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=t?.width??this.width,r=t?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=r,this.frameOverride.localMatrix=ZN,this.isScreenSpace&&(this.frameOverride.fill.color=we.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:r},lv({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(t){let e=t?.width??this.width,r=t?.height??this.height;this.width=e,this.height=r,this.renderer.dpr=this.isScreenSpace?window.devicePixelRatio:Math.floor(2048/Math.max(e,r)),this.renderer.setSize(e,r),this.textureHolder?.dispose(),this.applyOverrides(t),this.frameOverride?.requestRender()}applyFrame(t){let e=this.context.scene.find2D(t);if(!(!e||!(e instanceof hr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.textureHolder?.dispose(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(r=>{r.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(r=>{r.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(t){return this.scene2d.find(t)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(t=>{t.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(t=>{t.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function lv({objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i}){if(n instanceof hr&&t instanceof hr)for(let a=0,s=n.children.length;a<s;a++){let l=n.children[a],u=t.children[a];l&&u&&l.uuid===u.uuid&&JN({objectOverride:l,objectRoot:u,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i})}}function JN({objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i}){let{width:a,height:s,position:l}=Wf({constraints:n.data,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i,objectInitialWidth:$f(t)?t.width:0,objectInitialHeight:$f(t)?t.height:0,objectInitialPosition:t.position});if(n.position=l,n.data={...n.data,position:l},n.states)for(let u in n.states)e3({stateId:u,objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i});$f(n)&&(n.width=a,n.height=s,n.data={...n.data,width:a,height:s},lv({objectOverride:n,objectRoot:t,newParentWidth:n.width,newParentHeight:n.height,initialParentWidth:t.width,initialParentHeight:t.height}))}function e3({stateId:n,objectOverride:t,objectRoot:e,newParentWidth:r,newParentHeight:o,initialParentWidth:i,initialParentHeight:a}){let s=t.states?.[n],l=e.states?.[n];if(s&&l){let{width:u,height:c,position:d}=Wf({constraints:t.data,newParentWidth:r,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:Bo.isResizeable(l)?l.width:0,objectInitialHeight:Bo.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(t.states[n],{position:d}),Bo.isResizeable(s)&&Object.assign(t.states[n],{width:u,height:c})}}function $f(n){return n instanceof xo||n instanceof hr||n instanceof Cn||n instanceof Tn}var Or=class extends la(n3){constructor(e,r,o){super();this.data=r;this.bgColor=new St(1,1,1,1);this.fog=null;this.backupFog=new r3(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new t3;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new qo(ln,{...jn.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new o3(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),r.uiScene?this.uiScene=new ci((Array.isArray(e)?e[0]:e)+"-ui",r.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):r.uiFrame&&this.createUICanvas(r.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,r){this.uiCanvas=new cs(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,r),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=zt(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(r=>{r instanceof nr&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&Ub(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=zt(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=zt(e.aoColor,r))}updateByOp(e,r,o,i){let a=this.data.uiFrame;super.updateByOp(e,r,o,i);let s=r;Oe(e.path,["fog"])?this.updateFog(s.fog,o.shared):Oe(e.path,["ao"])?this.updateAo(s.ao,o.shared):Oe(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Oe(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,r){e?(this.uiCanvas||this.createUICanvas(e,r),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(zt(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,r){}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof as&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof ss&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize,r+=1)})}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Ce.is(a)&&(a.visible||s?.object.data.visible)&&((An(a)||fl(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),vl(a,e,r,!0)),o(a))}};return o(this),r}updateEntity2DByOp(e,r,o,i){this.uiCanvas?.updateEntity2DByOp(e,r,o,i)}};import{PointLight as i3,Vector3 as qu,Box3 as a3,Box3Helper as cv,Color as s3}from"three";var Wu=class extends os(i3,is){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new qu(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new qu(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new a3(a,s),u=new cv(l,new s3(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof cv){let r=this.shadow.camera,o=new qu(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),i=new qu(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var $u=class extends ot{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?Qs(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var us=class extends ot{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),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 r;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),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=va;break;case"Ellipse":i=ya;break;case"Polygon":i=su;break;case"Star":i=lu;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=i.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,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,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?Qs(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};import{Group as l3,Matrix4 as c3,Skeleton as u3}from"three";var Yo=class extends _r(l3,Ar){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,r){let o=Ji.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let i,a;for(let s of to.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]=Xr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...gt.defaultData,...e,...Mr(gt.defaultData,to.rootOverrideProps)}}updateByOp(e,r,o,i){let a;if(this.isInstanceRoot&&!i){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of to.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&&to.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,i)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(Ce.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Yu(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};dv(e,[this.uuid],r.overrides,this,o,o,0,i,a);for(let s of this.children)if(Ce.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(u=>{if(u instanceof ot&&u.isSkinnedMesh){let c=u.dataPatched;if(c.bones&&c.boneInverses){let d=c.bones.map(h=>e.scene.find(a[h])),p=c.boneInverses.map(h=>new c3().fromArray(h)),f=new u3(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Yu(n){if(n.component){let t=n.component.instances.indexOf(n);t>=0&&n.component.instances.splice(t,1);for(let e of n.children)Ce.is(e)&&Yu(e)}}function uv(n,t,e,r){return n.component===t&&fd(n.identity,r)?n.overrideData===e?2:1:0}function dv(n,t,e,r,o,i,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let c=r.component.instances.indexOf(r);c>=0&&r.component.instances.splice(c,1)}o.instances.push(r),r.component=o}o instanceof Yo&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let c of o.children)if(Ce.is(c)){let d=[...t,...typeof c.identity=="string"?[c.identity]:c.identity],p=Ki.resolve(e,d,1);if(p!=null&&!(p instanceof qe)){if(!1)debugger;Object.setPrototypeOf(p,qe.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[u];if(f=Ce.is(m)?m:null,f!==null){let y=uv(f,c,p,d);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=uv(f,c,p,d);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),r.children.splice(u,0,f),f.parent===r?(g<=u&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=p?Xr.apply(c.data,p):c.data;Ir.is(m.type)&&(m={...m,type:"Empty"}),f=Er.createEntity(d,m,n),f.overrideData=p,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(u,0,f),f.updateState(f.data,n),h&&f.changeSelectedState(h,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}u+=1,dv(n,t,e,f,c,i,a+1,s,l)}if(!s){let c=u;for(;;){let d=r.children[u];if(Ce.is(d))n.pendingDeletes.add(d);else break;u+=1}r.children.splice(c,u-c)}return!0}import{Bone as d3}from"three";var Xu=class extends _r(d3,Ar){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};var ui=class extends ot{constructor(e,r,o){super(e,r,o);this.onBeforeRender=()=>{this.uiCanvas.render()};this.uiCanvas=new cs(e+"-canvas",r.geometry.width,r.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,r){let o=e?.width??this.dataPatched.geometry.width,i=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:i}),this.applyGeometryParametersFromFrame(r)}applyFrame(e,r){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(r),this.applyMaterialParametersFromFrame({shared:r})}applyGeometryParametersFromFrame(e){let r=this.frame;r&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=Go(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let r=this.frame;if(r){let o=r.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,r,o,i){this.uiCanvas.updateEntity2DByOp(e,r,o,i),e===this.frameId&&r.type===0&&(r.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(i):Oe(r.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,r){super.updateGeometryInteractions(e,r),this.applySize({width:e.width,height:e.height},r)}};import{Object3D as S3,Vector3 as Cr,InstancedMesh as w3,InstancedBufferAttribute as _3,PlaneGeometry as A3,Vector4 as Sl,Quaternion as Dv,TextureLoader as P3,Texture as Ev,Euler as O3,MathUtils as eh}from"three";import{GPUComputationRenderer as C3}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as pv,FloatType as Yf,DataTexture as Xf,RGBAFormat as Qf,Mesh as Hse,Euler as qse,Matrix4 as Wse}from"three";import{MeshSurfaceSampler as p3}from"three/examples/jsm/math/MeshSurfaceSampler.js";function fv(n){let t=new Float32Array(n*n*2);for(let e=0;e<n;e++)for(let r=0;r<n;r++){let o=e*n+r;t[o*2+0]=e/(n-1),t[o*2+1]=r/(n-1)}return t}function hv(n){let t=Math.ceil(Math.sqrt(n));return Math.max(t,1)}function mv(n,t){let e=[],r=[],o=new pv,i=new pv,a=new p3(n).build();for(let u=0;u<t;u++)a.sample(o,i),e.push(o.x,o.y,o.z),r.push(i.x,i.y,i.z);let s=new Float32Array(e),l=new Float32Array(r);return{positions:s,normals:l}}function Kf(n,t){let e=n,r=new Float32Array(4*t*t);for(let i=0;i<t*t;i++)r[4*i]=e[3*i],r[4*i+1]=e[3*i+1],r[4*i+2]=e[3*i+2],r[4*i+3]=0;let o=new Xf(r,t,t,Qf,Yf);return o.needsUpdate=!0,o}function yv({size:n}){let t=new Float32Array(4*n*n);for(let r=0;r<n*n;r++)t[4*r]=r,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Xf(t,n,n,Qf,Yf);return e.needsUpdate=!0,e}function gv(n){let t=new Float32Array(4*n*n);for(let r=0;r<n*n;r++)t[4*r]=0,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Xf(t,n,n,Qf,Yf);return e.needsUpdate=!0,e}var xv=`
|
|
2615
|
+
`,zN=Bl.lights_fragment_begin,GN=Bl.shadowmask_pars_fragment,Nv=null,kN=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Dv=(n="medium")=>{if(Nv===n)return!1;Nv=n;let t=kN(n);Bl.shadowmap_pars_fragment=VN(t);let e=zN.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 ]"),Bl.lights_fragment_begin=e;let r=GN.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Bl.shadowmask_pars_fragment=r,!0};import{DirectionalLight as qN,CameraHelper as Ev}from"three";import{DirectionalLightHelper as FN}from"three";var As=class extends Co(FN){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){To(this.object,As.geometryHelper,e,r)}};import{PointLightHelper as jN}from"three";var _s=class extends Co(jN){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){To(this.object,_s.geometryHelper,e,r)}};import{SpotLightHelper as UN,Vector3 as HN}from"three";var cd=class extends Co(UN){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){To(this.object,cd.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=cd._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let 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)}}},Ll=cd;Ll._vector=new HN;function WN(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var Ps=class extends ws(qN,As){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let 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 Ev(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof Ev&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e);let r=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;t.size!==void 0&&WN(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r&&this.update()}};import{Scene as uD}from"three";import{SpotLight as $N,CameraHelper as Bv,MathUtils as YN,Vector3 as zv,Quaternion as XN}from"three";var Lv=new zv,Rv=new zv,Vv=new XN,Os=class extends ws($N,Ll){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=YN.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Bv(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof Bv&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),Rv.setFromMatrixPosition(this.matrixWorld),Vv.setFromRotationMatrix(this.matrixWorld),Lv.copy(this.up).applyQuaternion(Vv).negate().multiplyScalar(this.distance),this.target.position.copy(Rv).add(Lv),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Fe;(S=>{function n(){return[1,0,0,0,1,0,0,0,1]}S.identity=n;function t(P,O=S.identity()){for(let x=0,D=P.length;x<D;x++)O[x]=P[x];return O}S.copy=t;function e(P,O,x,D,N,T){return S.setAbcdef(S.identity(),P,O,x,D,N,T)}S.create=e;function r(P,O,x,D,N,T,I){return P[0]=O,P[1]=D,P[2]=T,P[3]=x,P[4]=N,P[5]=I,P}S.setAbcdef=r;function o(P,O){let[x,D,N,T,I,E]=a(P),[B,R,k,V,q,F]=a(O),U=B*x+R*N,H=B*D+R*T,$=k*x+V*N,J=k*D+V*T,K=q*x+F*N+I,X=q*D+F*T+E;return S.create(U,H,$,J,K,X)}S.append=o;function i(P,O){let[x,D,N,T,I,E]=a(P),[B,R,k,V,q,F]=a(O),U=x,H=D,$=N,J=T;(B!==1||R!==0||k!==0||V!==1)&&(U=x*B+D*k,H=x*R+D*V,$=N*B+T*k,J=N*R+T*V);let K=I*B+E*k+q,X=I*R+E*V+F;return S.create(U,H,$,J,K,X)}S.prepend=i;function a(P){return[P[0],P[3],P[1],P[4],P[2],P[5]]}S.getAbcdef=a;function s(P){let[O,x,D,N,T,I]=S.getAbcdef(P),E=O*N-x*D,B=N/E,R=-x/E,k=-D/E,V=O/E,q=(D*I-N*T)/E,F=-(O*I-x*T)/E;return S.create(B,R,k,V,q,F)}S.invert=s;function l([P,O],x){let[D,N,T,I,E,B]=S.getAbcdef(x);return[D*P+T*O+E,N*P+I*O+B]}S.apply=l;function u(P,O){let[x,D,N,T,I,E]=S.getAbcdef(O),B=1/(x*T+N*-D),[R,k]=P;return[T*B*R+-N*B*k+(E*N-I*T)*B,x*B*k+-D*B*R+(-E*x+I*D)*B]}S.applyInverse=u;function c(P,O,x=O){let[D,N,T,I,E,B]=S.getAbcdef(P);return S.setAbcdef(P,D*O,N*x,T*O,I*x,E*O,B*x),P}S.scale=c;function d(P,O){let x=Math.cos(O),D=Math.sin(O),[N,T,I,E,B,R]=S.getAbcdef(P);return S.setAbcdef(P,N*x-T*D,N*D+T*x,I*x-E*D,I*D+E*x,B*x-R*D,B*D+R*x),P}S.rotate=d;function p(P,O,x){let[D,N]=x,T=S.translate(P,-D,-N);return T=S.rotate(T,O),T=S.translate(T,D,N),T}S.rotateAround=p;function f(P,O,x){let[D,N,T,I,E,B]=S.getAbcdef(P);return S.setAbcdef(P,D,N,T,I,E+O,B+x),P}S.translate=f;function h(P,O,x){let[D,N,T,I]=S.getAbcdef(P);return S.setAbcdef(P,D,N,T,I,O,x),P}S.setTranslate=h;function m(P,O,x){let[D,N,T,I]=S.getAbcdef(P);return S.setAbcdef(P,D,N,T,I,O,x),P}S.setPosition=m;function y(P){let[O,x,D,N]=S.getAbcdef(P),T=Math.sqrt(O*O+x*x),I=Math.sqrt(D*D+N*N);return[T,I]}S.getScale=y;function g(P){let[,,,,O,x]=S.getAbcdef(P);return[O,x]}S.getPosition=g;function b(P,O){return S.decompose(P,O).rotation}S.getRotation=b;function w(P,O){let[x,D,N,T,I,E]=S.getAbcdef(P),B=-Math.atan2(-N,T),R=Math.atan2(D,x),k=Math.abs(B+R),V=0,q=[0,0];k<1e-5||Math.abs(Math.PI*2-k)<1e-5?(V=R,q[0]=q[1]=0):(V=0,q[0]=B,q[1]=R);let F=[Math.sqrt(x*x+D*D),Math.sqrt(N*N+T*T)];return{position:[I+(O[0]*x+O[1]*N)-O[0],E+(O[0]*D+O[1]*T)-O[1]],scale:F,rotation:V,skew:q,pivot:O}}S.decompose=w;function _(P,O,x,D,N=[0,0]){let[T,I]=P,[E,B]=O,[R,k]=D,[V,q]=N,F=Math.cos(x+q)*E,U=Math.sin(x+q)*E,H=-Math.sin(x-V)*B,$=Math.cos(x-V)*B,J=T-(R*F+k*H)+R,K=I-(R*U+k*$)+k;return S.create(F,U,H,$,J,K)}S.compose=_})(Fe||(Fe={}));var QN=Math.PI/180,eie=180/Math.PI;function Gv(n,t,e,r,o,i){let a=n-e,s=t-r;return a*a/(o*o)+s*s/(i*i)<=1}function kv(n){return n*QN}function Ah(n){return{all:n=n||new Map,on:function(t,e){var r=n.get(t);r?r.push(e):n.set(t,[e])},off:function(t,e){var r=n.get(t);r&&(e?r.splice(r.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var r=n.get(t);r&&r.slice().map(function(o){o(e)}),(r=n.get("*"))&&r.slice().map(function(o){o(t,e)})}}}var rn=class{constructor(t,e,r){this.uuid=t;this.data=e;this.localMatrix=Fe.identity();this.worldMatrix=Fe.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new Rn;this._recursiveBBox=new Rn;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.emitter=Ah();this.dpr=r.dpr??1,this.dataPatched=e}project(t,e){let r=this.worldMatrix;return e&&(r=Fe.append(e.worldMatrix,r)),Fe.applyInverse(t,r)}intersects(t,e,r){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this.singleBBox;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}applyTransforms(t){t.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=Fe.compose(this.position,this.scale,kv(this.rotation),Ho.getPivot(this.dataPatched))}updateWorldMatrix(t,e,r){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(t,!0,!1),t&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Fe.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Fe.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Ho.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{t.resetBBoxNeedsUpdateSelf()})}updateTransformState(t){let e=!1;t.position!==void 0&&(e=!0,this.position=t.position),t.rotation!==void 0&&(e=!0,this.rotation=t.rotation),t.scale!==void 0&&(e=!0,this.scale=t.scale),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(t,e,r){t.type===0&&t.props.visible!==void 0&&(this.visible=t.props.visible),this.data=e,this.data=e;let o=t,i=Le(t.path,["states","*"]);if(i!==null){if(t.type===0){let[a]=i;if(this?.stateSelection===a){let s={...t.props};if(delete s.name,Object.values(t.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let u=lt.zoom(l,t.path.slice(2));if(u)for(let c in t.props)t.props[c]===void 0&&c in u&&(s[c]=u[c])}}o={...t,props:s,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:l,...u}=a;a=u}let s=lt.removeOverridden(t.path,t.props,a);o={...t,props:s}}}this.updateByPatchedOpBase(o,ni.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),r)}changeSelectedState(t,e,r=!1){if(!(this.data.states.length===0&&!r)){for(let o of this.data.states)ni.toOps(this.data,o.data).forEach(a=>{let s=aa.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(t!==null){let o=this.data.states.data(t);o&&(this.dataPatched=ni.patch(this.data,o),ni.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}updateState(t,e){t.name!==void 0&&(this.name=t.name),t.visible!==void 0&&(this.visible=t.visible),this.updateTransformState(t)}updateByPatchedOpBase(t,e,r){this.dataPatched=e,this.updateByPatchedOp(t,e,r)}updateByPatchedOp(t,e,r){t.path.length===0&&t.type===0&&this.updateState(t.props,r),this.requestRender()}traverseFrameAncestors(t){this.traverseAncestors(e=>{e.data.type==="frame2d"&&t(e)})}traverseAncestors(t){let e=this.parent;for(;e;)t(e),e=e.parent}requestRender(){this.traverseFrameAncestors(t=>{t.requestRender()})}clone(t){let e=new rn(this.uuid,this.data,t);return e.parent=void 0,e}addEventListener(t,e){this.emitter.on(t,e)}removeEventListener(t,e){this.emitter.off(t,e)}dispatchEvent(t){this.emitter.emit(t.type,{...t,target:t.target??this})}traverseSortNextHelper(){let t=this.parent;if(t){let e=t.children;if(e){let r=e.indexOf(this)+1;return e[r]?e[r]:t.traverseSortNextHelper()}}}sortNext(){let t=this.children;return t&&t.length>0&&t[0]?t[0]:this.traverseSortNextHelper()}isDescendantOf(t){t instanceof rn&&(t=t.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===t)return!0;e=e.parent}return!1}};var er=class extends rn{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof er&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let r=this.children.indexOf(e);r>=0&&(this.children.splice(r,1),e.parent=void 0)}traverse(e){let r=e(this);if(r!==!0)for(let o of this.children)o instanceof er?o.traverse(e):r=e(o)}intersectsChildren(e,r,o,i=!1,a=[]){for(let s of this.children)if(s instanceof er&&s.intersectsChildren(e,r,o,i,a),s.intersects(e,r,o)&&(a.push(s),i))break;return a}updateWorldMatrix(e,r,o){if(super.updateWorldMatrix(e,r,o),o&&this.children)for(let i of this.children)i.updateWorldMatrix(e,!1,!0)}find(e){let r;return this.traverse(o=>{o.uuid===e&&(r=o)}),r}innerDrawChildren(e){for(let r=this.children.length-1;r>=0;r--)this.children[r].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let r=new er(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}},on=class extends er{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.updateState(r,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let r=new on(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function KN(n,t){let[[e,r],[o,i]]=n,[[a,s],[l,u]]=t,c=(e-o)*(s-u)-(r-i)*(a-l);if(c===0)return!1;let d=((e-a)*(s-u)-(r-s)*(a-l))/c,p=-((e-o)*(r-s)-(r-i)*(e-a))/c;return d>=0&&d<=1&&p>=0&&p<=1}var jv=[[-1,1],[-1,-1],[1,-1],[1,1]],Fv=(n,t,e)=>{let r=n.getCenter(),o=n.getHalfSize(),i=Fe.append(t,n.worldMatrix);o[0]===0&&o[1]===0?e.push(Fe.apply(r,i)):jv.forEach(a=>{let s=[a[0]*o[0]+r[0],a[1]*o[1]+r[1]];e.push(Fe.apply(s,i))})},Rn=class{constructor(){this.matrix=Fe.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(t,e=!1){t.updateWorldMatrix(),this.makeEmpty(),Fe.copy(t.worldMatrix,this.matrix);let r=Fe.invert(t.worldMatrix);this.expandByObjectSize(t,r,e)}expandByObjectSize(t,e,r=!1){let o=[];r===!0&&t instanceof er?t.traverse(i=>{i.visible&&Fv(i,e,o)}):Fv(t,e,o),this.setFromPoints(o)}getCenter(){let[t,e]=this.min,[r,o]=this.getHalfSize();return Fe.apply([t+r,e+o],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[(this.max[0]-this.min[0])*.5,(this.max[1]-this.min[1])*.5]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(t){this.makeEmpty();for(let e of t)this.expandByPoint(e)}expandByPoint(t){this.min=[Math.min(this.min[0],t[0]),Math.min(this.min[1],t[1])],this.max=[Math.max(this.max[0],t[0]),Math.max(this.max[1],t[1])]}computeVertices(){let[t,e]=this.getHalfSize(),r=this.getCenter(),[o,i,a,s]=Fe.getAbcdef(this.matrix),l=Fe.create(o,i,a,s,r[0],r[1]);this.vertices=jv.map(([u,c])=>Fe.apply([u*t,c*e],l))}computeEdges(){this.edges=[];for(let t=0,e=this.vertices.length;t<e;++t)this.edges.push([this.vertices[t],this.vertices[(t+1)%e]])}project(t,e){let r=this.matrix;return e&&(r=Fe.append(e.worldMatrix,r)),Fe.applyInverse(t,r)}intersects(t,e,r){return this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}containsPoint(t){let[e,r]=t,[o,i]=this.min,[a,s]=this.max;return e>=o&&e<=a&&r>=i&&r<=s}intersectsBBox2D(t){for(let e=0,r=this.edges.length;e<r;e++){let o=this.edges[e];for(let i=0,a=t.edges.length;i<a;i++){let s=t.edges[i];if(KN(o,s))return!0}}for(let e=0,r=t.vertices.length;e<r;e++){let o=t.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let t=this.min,e=this.max;this.min=[Math.min(t[0],e[0]),Math.min(t[1],e[1])],this.max=[Math.max(t[0],e[0]),Math.max(t[1],e[1])]}copy(t){this.min=[...t.min],this.max=[...t.max],Fe.copy(t.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let t=new Rn;return t.copy(this),t}};var Hv,qv=new Promise(n=>{Hv=n}),Uv=!1;var ud;function Wv(){if(Uv)return;if(ud)return ud;async function n(){let e=await import("./ui.js");Hv(e.default??e),Uv=!0}return ud=n(),ud}function Xv(n){let t=!1;return n.scene.objects.traverse((e,r)=>{(r.type==="Mesh"&&r.geometry.type==="UIGeometry"||r.type==="Page"&&r.uiFrame!==void 0)&&(t=!0)}),t}var Oe,_h;async function ZN(n){let t=await qv;Oe||(_h||(_h=t({locateFile:()=>n})),Oe=await _h)}var $v=Fe.identity(),Vl=class{constructor(t,e=1){this.canvas=t;this.dpr=e;this._width=0;this._height=0;this._strokeMode="inside";this._layerBlur=0;this._backgroundBlur=0;this._dropShadowBlur=0;this._dropShadowOffsetX=0;this._dropShadowOffsetY=0;this._dropShadowColor=Ie.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=Ie.transparent;this._fonts=new Map;try{let r=t.getBoundingClientRect();t.width=r.width*e,t.height=r.height*e}catch{console.log(t.width,e)}this._currentM3Transform=$v,this._currentTransform=new Float32Array($v)}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await ZN(this.wasmURL),this._surface=Oe.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Oe.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Oe.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Oe.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(t){this._currentM3Transform=t,this._currentTransform.set(t)}async loadFont(t,e){let r=await(await fetch(t)).arrayBuffer();this.registerFont(r,e)}registerFont(t,e){if(this._fonts.has(e))return;let r=Oe.FontMgr.FromData(t);if(r)this._fonts.set(e,r);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(t){this._paintStroke&&this._paintStroke.setColor(dd(t),Oe.ColorSpace.DISPLAY_P3)}set fillColor(t){this._paintFill&&this._paintFill.setColor(dd(t),Oe.ColorSpace.DISPLAY_P3)}set lineWidth(t){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?t:t*2)}set strokeMode(t){this._strokeMode=t}set dropShadowBlur(t){this._dropShadowBlur=t}set dropShadowColor(t){this._dropShadowColor=t}set dropShadowOffsetX(t){this._dropShadowOffsetX=t}set dropShadowOffsetY(t){this._dropShadowOffsetY=t}set innerShadowBlur(t){this._innerShadowBlur=t}set innerShadowColor(t){this._innerShadowColor=t}set innerShadowOffsetX(t){this._innerShadowOffsetX=t}set innerShadowOffsetY(t){this._innerShadowOffsetY=t}set innerShadowSpread(t){this._innerShadowSpread=t}set layerBlur(t){this._layerBlur=t}set backgroundBlur(t){this._backgroundBlur=t}clear(){this.ctx?.clear(Oe.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Oe.Path}closePath(){let t=this._currentPath;if(t){if(t.isEmpty())return;let e=t.getBounds();(e[3]-e[1]||e[2]-e[0])&&t.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(t,e,r,o,i=0,a=0,s=0,l=0){let u=Oe.XYWHRect(t,e,r,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(u,Oe.ClipOp.Intersect,!0);else{let c=Oe.RRectXY(u,i,i);c[4]=c[5]=i,c[6]=c[7]=a,c[8]=c[9]=s,c[10]=c[11]=l,this.ctx?.clipRRect(c,Oe.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let t=Fe.invert(this.currentTransform);this.ctx.concat(t);let e=Fe.translate(Fe.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(t,e,r=!0){if(this.ctx&&this._currentPath){let o,i=!1;if(r&&this._hasDropShadow()){let a=t.copy();a.setColor(dd(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Oe.MaskFilter.MakeBlur(Oe.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Oe.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&r){this.ctx.save(),this.ctx.clipPath(this._currentPath,Oe.ClipOp.Intersect,!0);let a=Oe.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Oe.TileMode.Clamp,null),s=t.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Oe.SaveLayerInitWithPrevious),this.ctx.drawColor(t.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),i=!0}if(this._layerBlur>0){let a=t.copy();o=Oe.MaskFilter.MakeBlur(Oe.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(t),r&&this._hasInnerShadow()){let a=new Oe.Paint;a.setAntiAlias(!0),a.setStyle(Oe.PaintStyle.Fill),a.setColor(dd(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Oe.MaskFilter.MakeBlur(Oe.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[u,c,d,p]=l,f=d-u,h=p-c;this.ctx.save(),this.ctx.clipPath(this._currentPath,Oe.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Oe.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Oe.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+f+Math.abs(this._innerShadowOffsetX*2),2e3+h+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Oe.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(t,e=!0){if(this.ctx&&this._currentPath&&t){let r=this.ctx,o=this._currentPath;this._applyEffectsToPaint(t,i=>{let a=!1;!e&&this._strokeMode!=="center"&&(r.save(),r.clipPath(o,this._strokeMode==="outside"?Oe.ClipOp.Difference:Oe.ClipOp.Intersect,!0),a=!0),r.drawPath(o,i),a&&r.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(t){this._currentPath?.addPath(Oe.Path.MakeFromSVGString(t))}ellipse(t,e,r,o,i,a,s,l){if(!Yv([t,e,r,o])||!this._currentPath)return;if(r<0||o<0)throw Error("radii cannot be negative");let u=Oe.XYWHRect(t-r,e-o,r*2,o*2);this._currentPath?.addOval(u)}rect(t,e,r,o,i=0,a=0,s=0,l=0){let u=Oe.XYWHRect(t,e,r,o);if(!!Yv(u))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(u);else{let c=Oe.RRectXY(u,i,i);c[4]=c[5]=i,c[6]=c[7]=a,c[8]=c[9]=s,c[10]=c[11]=l,this._currentPath?.addRRect(c)}}getHorizontalAlign(t){switch(t){case 2:return Oe.TextAlign.Right;case 3:return Oe.TextAlign.Center;case 4:return Oe.TextAlign.Justify;case 1:default:return Oe.TextAlign.Left}}drawTextInner(t,e,r,[o,i,a,s],l,u,c=!0){let d=0,{ctx:p}=this;if(!p)return d;let f=u.copy(),h=u.copy();return h.setAlphaf(0),this._applyEffectsToPaint(f,m=>{e.pushPaintStyle(r,m,h),e.addText(t);let y=e.build();y.layout(a);let g=i;l===2?g+=(s-y.getHeight())/2:l===3&&(g+=s-y.getHeight()),p.drawParagraph(y,o,g),d=y.getHeight(),e.reset(),y.delete()},c),f.delete(),h.delete(),d}drawText(t,e){let r=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){let l=new Oe.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),u=new Oe.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),c=Oe.XYWHRect(e.x,e.y,e.width,e.height),d=Oe.ParagraphBuilder.Make(u,o);a&&(r=this.drawTextInner(t,d,l,c,e.verticalAlign,a,!0)),s&&(r=this.drawTextInner(t,d,l,c,e.verticalAlign,s,!1)),d.delete()}return{height:r}}render(){this._surface?.flush()}moveTo(t,e){this._currentPath?.moveTo(t,e)}lineTo(t,e){this._currentPath?.lineTo(t,e)}bezierCurveTo(t,e,r,o,i,a){this._currentPath?.cubicTo(t,e,r,o,i,a)}quadraticCurveTo(t,e,r,o){this._currentPath?.quadTo(t,e,r,o)}setTransform(t,e=!1){if(!this.ctx)return;let r=this.ctx.getTotalMatrix(),o=Fe.invert(r);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let i=Fe.getScale(this.camera.worldMatrix);this.ctx?.scale(1/i[0],1/i[1])}this.ctx?.concat(t),this.currentTransform=t}transform(t){this.ctx?.concat(t)}setSize(t,e){t===this._width&&e===this._height||(this._width=t,this._height=e,this.canvas.style.width=t+"px",this.canvas.style.height=e+"px",this.canvas.width=t*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Oe.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function Yv(n){for(let t=0;t<n.length;t++)if(n[t]!==void 0&&!Number.isFinite(n[t]))return!1;return!0}function dd({r:n,g:t,b:e,a:r}){return Oe.Color4f(n,t,e,r)}var zl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(t){t.color!==void 0&&(this.color=t.color),t.enabled!==void 0&&(this.enabled=t.enabled),t.blurRadius!==void 0&&(this.blurRadius=t.blurRadius),t.offset!==void 0&&(this.offset=t.offset),t.spread!==void 0&&(this.spread=t.spread)}};var Gl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.radius!==void 0&&(this.radius=t.radius)}};var pd=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color)}};var fd=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color),t.thickness!==void 0&&(this.thickness=t.thickness),t.mode!==void 0&&(this.mode=t.mode)}};var yr=class extends rn{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.autoClose=!0;this.fill=new pd(e+"-fill",r.fill,o),this.stroke=new fd(e+"-stroke",r.stroke,o),this.dropShadow=new zl(e+"-dropShadow",r.dropShadow,o),this.innerShadow=new zl(e+"-innerShadow",r.innerShadow,o),this.backgroundBlur=new Gl(e+"-backgroundBlur",r.backgroundBlur,o),this.layerBlur=new Gl(e+"-layerBlur",r.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=Ie.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=Ie.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),this.autoClose&&e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,r){super.updateState(e,r),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let r=new yr(this.uuid,this.data,e);return r.parent=void 0,r}};var Vn=class extends yr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.updateState(r,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,r){return Gv(e,r,this.width*.5,this.height*.5,this.width*.5,this.height*.5)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e)}clone(e){let r=new Vn(this.uuid,this.data,e);return r.parent=void 0,r}};var Mo=class extends yr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(r,o)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let r=new Mo(this.uuid,this.data,e);return r.parent=void 0,r}};var zn=class extends yr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(r,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let r=this.data.textTransform,o=this.data.text.textValue.toString(),i=r===2?o.toUpperCase():r===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 r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:r}){e.font!==void 0&&(this._fontHolder=r.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateFontState(e,r)}clone(e){let r=new zn(this.uuid,this.data,e);return r.parent=void 0,r}};var Cs=class extends yr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(r,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(i=>hd.extremas(i)),r=[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]<r[0]&&(r[0]=s[0][0]),s[0][1]<r[1]&&(r[1]=s[0][1]),s[1][0]>o[0]&&(o[0]=s[1][0]),s[1][1]>o[1]&&(o[1]=s[1][1])}return this.extremasBBox.min=[r[0],r[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,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,r=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:r.position,cp1:r.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,r]=this.extremasBBox.min,[o,i]=this.getHalfSize();return[e+o,r+i]}getHalfSize(){let{min:e,max:r}=this.extremasBBox;return[(r[0]-e[0])*.5,(r[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,u]=s.position;e.moveTo(l,u)}else{let l=this.data.points[i-1].data,[u,c]=l.controlNext.position,[d,p]=s.controlPrevious.position,[f,h]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};hd.derive(m),e.bezierCurveTo(u,c,d,p,f,h)}}let r=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[i,a]=o.controlNext.position,[s,l]=r.controlPrevious.position,[u,c]=r.position;e.bezierCurveTo(i,a,s,l,u,c)}}updateState(e,r){super.updateState(e,r),this.computeExtremas()}clone(e){let r=new Cs(this.uuid,this.data,e);return r.parent=void 0,r}},hd;(i=>{function n(a){let s=a.start,l=a.cp1,u=a.cp2,c=a.end,d=[3*(l[0]-s[0]),3*(l[1]-s[1])],p=[3*(u[0]-l[0]),3*(u[1]-l[1])],f=[3*(c[0]-u[0]),3*(c[1]-u[1])],h={start:d,cp:p,end:f};return a.derivative=h,h.derivative=Ph.derive(h),h}i.derive=n;function t(a,s,l,u=!1){let c=a-2*s+l;if(c!==0){let d=-Math.sqrt(Math.abs(s*s-a*l)),p=-a+s,f=-(d+p)/c,h=-(-d+p)/c;return[f,h]}else if(s!==l&&c===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??i.derive(a),l=s.start,u=s.cp,c=s.end;return[t(l[0],u[0],c[0]),t(l[1],u[1],c[1])]}i.droot=e;function r(a){let[s,l]=i.droot(a),u=[a.start[0],a.end[0]],c=[a.start[1],a.end[1]];for(let d of s)u.push(i.compute(a,Math.min(1,Math.max(0,d)))[0]);for(let d of l)c.push(i.compute(a,Math.min(1,Math.max(0,d)))[1]);return u.sort((d,p)=>d-p),c.sort((d,p)=>d-p),[[u[0],c[0]],[u[u.length-1],c[c.length-1]]]}i.extremas=r;function o(a,s){if(s===0)return[...a.start];if(s===1)return[...a.end];let l=1-s,u=l*l,c=s*s,d=u*l,p=u*s*3,f=l*c*3,h=s*c;return[d*a.start[0]+p*a.cp1[0]+f*a.cp2[0]+h*a.end[0],d*a.start[1]+p*a.cp1[1]+f*a.cp2[1]+h*a.end[1]]}i.compute=o})(hd||(hd={}));var Ph;(r=>{function n(o){let i=o.start,a=o.cp,s=o.end,l=[2*(a[0]-i[0]),2*(a[1]-i[1])],u=[2*(s[0]-a[0]),2*(s[1]-a[1])],c={start:l,end:u};return c.derivative=Oh.derive(c),o.derivative=c,c}r.derive=n;function t(o){let i=o.derivative??r.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]}r.droot=t;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,u=s,c=a*i*2,d=l;return[u*o.start[0]+c*o.cp[0]+d*o.end[0],u*o.start[1]+c*o.cp[1]+d*o.end[1]]}r.compute=e})(Ph||(Ph={}));var Oh;(e=>{function n(r){let o=r.start,i=r.end,a=[i[0]-o[0],i[1]-o[1]];return r.derivative=a,r.derivative}e.derive=n;function t(r,o){if(o===0)return[...r.start];if(o===1)return[...r.end];let i=r.start,a=r.end;return[i[0]+(a[0]-i[0])*o,i[1]+(a[1]-i[1])*o]}e.compute=t})(Oh||(Oh={}));var Pr=class extends er{constructor(e,r,o){super(e,r,o);this.uuid=e;this.width=0;this.height=0;this.background=new Mo(e+"-background",wa.defaultData,o),this.background.parent=this,this.updateState(r,o)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(e){this.background.cornerRadius=e}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(e,r,o){super.updateWorldMatrix(e,r,o),this.background?.updateWorldMatrix(e,r,o)}draw(e){if(!this.visible)return;e.save();let r=this.width,o=this.height;this.applyTransforms(e),this.background.width=r,this.background.height=o,this.background.draw(e),e.clipRect(0,0,r,o,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let r=new Pr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};var Ts=class extends yr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._pathBBox=new DOMRect;this.updateState(r,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=document.createElementNS("http://www.w3.org/2000/svg","svg"),r=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(e),r.setAttribute("d",this.data.path),e.appendChild(r),this._pathBBox=r.getBBox(),e.remove()}innerDraw(e){e.path(this.data.path)}intersectsInLocalSpace(e,r){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&r>=this._pathBBox.y&&r<=this._pathBBox.y+this._pathBBox.height}getCenter(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}getHalfSize(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}updateState(e,r){super.updateState(e,r),e.path!==void 0&&this.computeSVGBBox()}clone(e){let r=new Ts(this.uuid,this.data,e);return r.parent=void 0,r}};function Qv(n,t,e){switch(t.type){case"ellipse2d":return new Vn(n,t,e);case"rectangle2d":return new Mo(n,t,e);case"text2d":return new zn(n,t,e);case"vector2d":return new Cs(n,t,e);case"path2d":return new Ts(n,t,e);case"frame2d":return new Pr(n,t,e);case"group2d":default:return new on(n,t,e)}}var Ch=class{constructor(t,e,r){this.uuid=t;this.data=e;this.group=new on(Ch.GROUP_ID,{...Ks.defaultData},r),this.createChildrenObjects(e.objects,this.group,r)}createObject(t,e,r,o,i,a){let s=Qv(t,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),r.length>0&&(s instanceof on||s instanceof Pr)&&this.createChildrenObjects(r,s,a))}createChildrenObjects(t,e,r){let o=0;for(let i of t)this.createObject(i.id,i.data,i.children,e,o,r),o+=1}draw(t){this.group.draw(t)}updateEntityByOp(t,e,r,o){let i=this.find(t);if(i)try{i.updateByOp(e,r,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(t,e){if(t.path.length===0&&t.type===7){let r=t.parent===null?this.group:this.find(t.parent);r!==void 0&&r instanceof er&&(this.createObject(t.id,t.data,t.children,r,t.localIndex,e),r.requestRender())}else if(t.path.length===0&&t.type===8){let r=this.find(t.id);if(r!==void 0&&r.parent!==void 0&&r.parent instanceof er){let o=r.parent;r.resetBBoxNeedsUpdate(),o?.remove(r),o?.requestRender()}}else if(t.path.length===0&&t.type===9){let r=this.find(t.id);if(r!==void 0){let o=r.parent,i=t.parent===null?this:this.find(t.parent);if(i===void 0&&!1&&console.error("unexpected",i,t),i instanceof er||i===this){i.add(r);let a=t.localIndex;i.children.splice(a,0,i.children.pop()),r.updateWorldMatrix(!0,!1,!0),o?.requestRender(),r.requestRender()}r.resetBBoxNeedsUpdate()}}}add(t){this.group.add(t)}remove(t){this.group.remove(t)}traverse(t){this.group.traverse(e=>{e!==this.group&&t(e)})}intersectsChildren(t,e,r,o=!1,i=[]){return this.group.intersectsChildren(t,e,r,o,i)}find(t){return this.group.find(t)}get children(){return this.group.children}project(t,e){return this.group.project(t,e)}getWithSortKey(t){let e=this.find(t);if(e===void 0)return;let r=[],o=e;for(;o!==this.group;){let i=o;o=o.parent;let a=o.children.indexOf(i);r.splice(0,0,a)}return{entity:e,sortKey:r}}getAllSorted(t){let e=[];for(let r of t){let o=this.getWithSortKey(r.id);o!==void 0&&e.push(o)}return e.sort((r,o)=>Kl(r.sortKey,o.sortKey)),e.map(r=>r.entity)}},Ai=Ch;Ai.GROUP_ID="scene2d";function Th({constraints:n,newParentWidth:t,newParentHeight:e,initialParentWidth:r,initialParentHeight:o,objectInitialWidth:i,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:u}=n,c=t-r,d=e-o,p=i,f=a,h=s[0],m=s[1];if(l!==0){if(l===1)h+=c;else if(l===3)h+=c/2;else if(l===2)p=Math.max(1,p+c);else if(l===4){let y=t/r;p*=y,h*=y}}if(u!==0){if(u===1)m+=d;else if(u===3)m+=d/2;else if(u===2)f=Math.max(1,f+d);else if(u===4){let y=e/o;f*=y,m*=y}}return{width:p,height:f,position:[h,m]}}var rD=Zt(eS(),1);var Mse={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{MathUtils as oD}from"three";var nD=Fe.identity(),Ms=class{constructor(t,e,r,o){this.uuid=t;this.width=e;this.height=r;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this.onFrameOverrideObjectEvent=t=>{if(t.target?.uuid!==void 0){let e=this.frameRoot?.find(t.target.uuid);e&&e.dispatchEvent({...t,target:e})}};this.scene2d=new Ai(oD.generateUUID(),lu.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=document.createElement("canvas"),this.renderer=new Vl(this.canvas),o.shared.addCanvas(this.uuid,this.canvas),this.textureHolder=o.shared.canvas(this.uuid),this.promise=this.init()}async init(){this.renderer instanceof Vl&&(this.renderer.wasmURL=Eb.skiaWasmUrl),await this.renderer.init()}render(){this.isFrameDirty&&(this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),this.textureHolder?.setNeedsUpdate(!0),this.isFrameDirty=!1)}updateEntity2DByOp(t,e,r,o){this.scene2d.updateEntityByOp(t,e,r,o),this.applySize()}updateTreeByOp(t,e){this.scene2d.updateTreeByOp(t,e),this.applySize()}applyOverrides(t){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=t?.width??this.width,r=t?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=r,this.frameOverride.localMatrix=nD,this.isScreenSpace&&(this.frameOverride.fill.color=Ie.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:r},tS({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(t){let e=t?.width??this.width,r=t?.height??this.height;this.width=e,this.height=r,this.renderer.dpr=this.isScreenSpace?window.devicePixelRatio:Math.floor(2048/Math.max(e,r)),this.renderer.setSize(e,r),this.textureHolder?.dispose(),this.applyOverrides(t),this.frameOverride?.requestRender()}applyFrame(t){let e=this.context.scene.find2D(t);if(!(!e||!(e instanceof Pr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.textureHolder?.dispose(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(r=>{r.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(r=>{r.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(t){return this.scene2d.find(t)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(t=>{t.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(t=>{t.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function tS({objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i}){if(n instanceof Pr&&t instanceof Pr)for(let a=0,s=n.children.length;a<s;a++){let l=n.children[a],u=t.children[a];l&&u&&l.uuid===u.uuid&&iD({objectOverride:l,objectRoot:u,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i})}}function iD({objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i}){let{width:a,height:s,position:l}=Th({constraints:n.data,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i,objectInitialWidth:Mh(t)?t.width:0,objectInitialHeight:Mh(t)?t.height:0,objectInitialPosition:t.position});if(n.position=l,n.data={...n.data,position:l},n.states)for(let u in n.states)aD({stateId:u,objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i});Mh(n)&&(n.width=a,n.height=s,n.data={...n.data,width:a,height:s},tS({objectOverride:n,objectRoot:t,newParentWidth:n.width,newParentHeight:n.height,initialParentWidth:t.width,initialParentHeight:t.height}))}function aD({stateId:n,objectOverride:t,objectRoot:e,newParentWidth:r,newParentHeight:o,initialParentWidth:i,initialParentHeight:a}){let s=t.states?.[n],l=e.states?.[n];if(s&&l){let{width:u,height:c,position:d}=Th({constraints:t.data,newParentWidth:r,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:Ho.isResizeable(l)?l.width:0,objectInitialHeight:Ho.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(t.states[n],{position:d}),Ho.isResizeable(s)&&Object.assign(t.states[n],{width:u,height:c})}}function Mh(n){return n instanceof Mo||n instanceof Pr||n instanceof Vn||n instanceof zn}var Vr=class extends Ca(uD){constructor(e,r,o){super();this.data=r;this.bgColor=new Et(1,1,1,1);this.fog=null;this.backupFog=new lD(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new sD;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new tn(xn,{...ri.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new cD(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),r.uiScene?this.uiScene=new Ai((Array.isArray(e)?e[0]:e)+"-ui",r.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):r.uiFrame&&this.createUICanvas(r.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,r){this.uiCanvas=new Ms(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,r),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=Xt(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(r=>{r instanceof mr&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof hr)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&Dv(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Xt(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=Xt(e.aoColor,r))}updateByOp(e,r,o,i){let a=this.data.uiFrame;super.updateByOp(e,r,o,i);let s=r;Le(e.path,["fog"])?this.updateFog(s.fog,o.shared):Le(e.path,["ao"])?this.updateAo(s.ao,o.shared):Le(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Le(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,r){e?(this.uiCanvas||this.createUICanvas(e,r),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(Xt(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,r){}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof Ps&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof Os&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize,r+=1)})}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Re.is(a)&&(a.visible||s?.object.data.visible)&&((Bn(a)||El(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),kl(a,e,r,!0)),o(a))}};return o(this),r}updateEntity2DByOp(e,r,o,i){this.uiCanvas?.updateEntity2DByOp(e,r,o,i)}};import{PointLight as dD,Vector3 as yd,Box3 as pD,Box3Helper as rS,Color as fD}from"three";var gd=class extends ws(dD,_s){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new yd(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new yd(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new pD(a,s),u=new rS(l,new fD(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof rS){let r=this.shadow.camera,o=new yd(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),i=new yd(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var xd=class extends ft{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?yl(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var Is=class extends ft{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),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 r;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),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=Ga;break;case"Ellipse":i=La;break;case"Polygon":i=Nu;break;case"Star":i=Du;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=i.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,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,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?yl(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};import{Group as hD,Matrix4 as mD,Skeleton as yD}from"three";var nn=class extends Lr(hD,Rr){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,r){let o=ga.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let i,a;for(let s of fo.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]=ao.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Mt.defaultData,...e,...Fr(Mt.defaultData,fo.rootOverrideProps)}}updateByOp(e,r,o,i){let a;if(this.isInstanceRoot&&!i){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of fo.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&&fo.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,i)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,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),bd(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};nS(e,[this.uuid],r.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(u=>{if(u instanceof ft&&u.isSkinnedMesh){let c=u.dataPatched;if(c.bones&&c.boneInverses){let d=c.bones.map(h=>e.scene.find(a[h])),p=c.boneInverses.map(h=>new mD().fromArray(h)),f=new yD(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function bd(n){if(n.component){let t=n.component.instances.indexOf(n);t>=0&&n.component.instances.splice(t,1);for(let e of n.children)Re.is(e)&&bd(e)}}function oS(n,t,e,r){return n.component===t&&Yd(n.identity,r)?n.overrideData===e?2:1:0}function nS(n,t,e,r,o,i,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let c=r.component.instances.indexOf(r);c>=0&&r.component.instances.splice(c,1)}o.instances.push(r),r.component=o}o instanceof nn&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let c of o.children)if(Re.is(c)){let d=[...t,...typeof c.identity=="string"?[c.identity]:c.identity],p=ma.resolve(e,d,1);if(p!=null&&!(p instanceof et)){if(!1)debugger;Object.setPrototypeOf(p,et.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[u];if(f=Re.is(m)?m:null,f!==null){let y=oS(f,c,p,d);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=oS(f,c,p,d);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),r.children.splice(u,0,f),f.parent===r?(g<=u&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=p?ao.apply(c.data,p):c.data;jr.is(m.type)&&(m={...m,type:"Empty"}),f=qr.createEntity(d,m,n),f.overrideData=p,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(u,0,f),f.updateState(f.data,n),h&&f.changeSelectedState(h,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}u+=1,nS(n,t,e,f,c,i,a+1,s,l)}if(!s){let c=u;for(;;){let d=r.children[u];if(Re.is(d))n.pendingDeletes.add(d);else break;u+=1}r.children.splice(c,u-c)}return!0}import{Bone as gD}from"three";var vd=class extends Lr(gD,Rr){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};var Pi=class extends ft{constructor(e,r,o){super(e,r,o);this.onBeforeRender=()=>{this.uiCanvas.render()};this.uiCanvas=new Ms(e+"-canvas",r.geometry.width,r.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,r){let o=e?.width??this.dataPatched.geometry.width,i=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:i}),this.applyGeometryParametersFromFrame(r)}applyFrame(e,r){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(r),this.applyMaterialParametersFromFrame({shared:r})}applyGeometryParametersFromFrame(e){let r=this.frame;r&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=Xo(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let r=this.frame;if(r){let o=r.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,r,o,i){this.uiCanvas.updateEntity2DByOp(e,r,o,i),e===this.frameId&&r.type===0&&(r.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(i):Le(r.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,r){super.updateGeometryInteractions(e,r),this.applySize({width:e.width,height:e.height},r)}};import{Object3D as TD,Vector3 as zr,InstancedMesh as MD,InstancedBufferAttribute as ID,PlaneGeometry as ND,Vector4 as Fl,Quaternion as PS,TextureLoader as DD,Texture as OS,Euler as ED,MathUtils as Rh}from"three";import{GPUComputationRenderer as BD}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as iS,FloatType as Ih,DataTexture as Nh,RGBAFormat as Dh,Mesh as xD,Euler as mce,Matrix4 as yce}from"three";import{MeshSurfaceSampler as bD}from"three/examples/jsm/math/MeshSurfaceSampler.js";function aS(n){let t=new Float32Array(n*n*2);for(let e=0;e<n;e++)for(let r=0;r<n;r++){let o=e*n+r;t[o*2+0]=e/(n-1),t[o*2+1]=r/(n-1)}return t}function sS(n){let t=Math.ceil(Math.sqrt(n));return Math.max(t,1)}function lS(n,t){let e=new xD(n.geometry,n.material),r=[],o=[],i=new iS,a=new iS;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new bD(e).build();for(let c=0;c<t;c++)s.sample(i,a),r.push(i.x,i.y,i.z),o.push(a.x,a.y,a.z);let l=new Float32Array(r),u=new Float32Array(o);return{positions:l,normals:u}}function Eh(n,t){let e=n,r=new Float32Array(4*t*t);for(let i=0;i<t*t;i++)r[4*i]=e[3*i],r[4*i+1]=e[3*i+1],r[4*i+2]=e[3*i+2],r[4*i+3]=0;let o=new Nh(r,t,t,Dh,Ih);return o.needsUpdate=!0,o}function cS({size:n}){let t=new Float32Array(4*n*n);for(let r=0;r<n*n;r++)t[4*r]=r,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Nh(t,n,n,Dh,Ih);return e.needsUpdate=!0,e}function uS(n){let t=new Float32Array(4*n*n);for(let r=0;r<n*n;r++)t[4*r]=0,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Nh(t,n,n,Dh,Ih);return e.needsUpdate=!0,e}var dS=`
|
|
2615
2616
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
2616
2617
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
2617
2618
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -2680,7 +2681,7 @@ void main() {
|
|
|
2680
2681
|
gl_FragColor = mix(vec4(0.0), activeColor, isActive);
|
|
2681
2682
|
|
|
2682
2683
|
}
|
|
2683
|
-
`;var
|
|
2684
|
+
`;var pS=`
|
|
2684
2685
|
|
|
2685
2686
|
vec3 mod289(vec3 x) {
|
|
2686
2687
|
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
|
@@ -2882,7 +2883,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
2882
2883
|
);
|
|
2883
2884
|
}
|
|
2884
2885
|
|
|
2885
|
-
`;var
|
|
2886
|
+
`;var fS=`
|
|
2886
2887
|
#ifdef USE_COLLIDER
|
|
2887
2888
|
float restitution = max(uBounce * 2., .01); // Energy Loss
|
|
2888
2889
|
// SPHERE COLLIDER
|
|
@@ -2950,7 +2951,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
2950
2951
|
#endif
|
|
2951
2952
|
#endif
|
|
2952
2953
|
// END COLLIDER
|
|
2953
|
-
`;var
|
|
2954
|
+
`;var hS=`
|
|
2954
2955
|
#ifdef USE_ATTRACTOR
|
|
2955
2956
|
|
|
2956
2957
|
#ifdef USE_SPHERE_COLLIDER
|
|
@@ -3024,7 +3025,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
3024
3025
|
velocity *= uForceDamping;
|
|
3025
3026
|
#endif
|
|
3026
3027
|
#endif
|
|
3027
|
-
`;var
|
|
3028
|
+
`;var mS=`
|
|
3028
3029
|
#ifdef USE_VORTEX
|
|
3029
3030
|
// Box dimensions
|
|
3030
3031
|
vec3 boxHalfSize = uColliderSize / 2.0;
|
|
@@ -3063,7 +3064,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
3063
3064
|
velocity += applyForce( originDirection * uSpeed * (1. - uForceDamping) , mass * .5);
|
|
3064
3065
|
}
|
|
3065
3066
|
#endif
|
|
3066
|
-
`;var
|
|
3067
|
+
`;var yS=`
|
|
3067
3068
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
3068
3069
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
3069
3070
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -3089,7 +3090,7 @@ uniform float uForceDamping;
|
|
|
3089
3090
|
uniform float uForceIntensity;
|
|
3090
3091
|
|
|
3091
3092
|
|
|
3092
|
-
`+
|
|
3093
|
+
`+pS+`
|
|
3093
3094
|
float rand(vec2 co){
|
|
3094
3095
|
return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
|
|
3095
3096
|
}
|
|
@@ -3167,11 +3168,11 @@ void main() {
|
|
|
3167
3168
|
#endif
|
|
3168
3169
|
|
|
3169
3170
|
// COLLIDER
|
|
3170
|
-
${
|
|
3171
|
+
${fS}
|
|
3171
3172
|
// ATTRACTION
|
|
3172
|
-
${
|
|
3173
|
+
${hS}
|
|
3173
3174
|
// VORTEX
|
|
3174
|
-
${
|
|
3175
|
+
${mS}
|
|
3175
3176
|
}
|
|
3176
3177
|
// End isActive
|
|
3177
3178
|
|
|
@@ -3189,7 +3190,7 @@ void main() {
|
|
|
3189
3190
|
|
|
3190
3191
|
gl_FragColor = vec4(velocity, collisionFlag);
|
|
3191
3192
|
}
|
|
3192
|
-
`;import{ShaderMaterial as
|
|
3193
|
+
`;import{ShaderMaterial as vD}from"three";var Bh=`
|
|
3193
3194
|
|
|
3194
3195
|
// Linear Fade In
|
|
3195
3196
|
float linearFadeIn(float t) {
|
|
@@ -3222,7 +3223,7 @@ void main() {
|
|
|
3222
3223
|
float constant(float t) {
|
|
3223
3224
|
return 1.0;
|
|
3224
3225
|
}
|
|
3225
|
-
`;var
|
|
3226
|
+
`;var gS=`
|
|
3226
3227
|
|
|
3227
3228
|
float rand(vec3 co){
|
|
3228
3229
|
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
|
@@ -3237,7 +3238,7 @@ vec3 applyForce(vec3 force, float mass) {
|
|
|
3237
3238
|
|
|
3238
3239
|
return acceleration;
|
|
3239
3240
|
}
|
|
3240
|
-
`;var
|
|
3241
|
+
`;var xS=`
|
|
3241
3242
|
vec3 rgb2xyz (in vec3 rgb) {
|
|
3242
3243
|
float r = rgb.r;
|
|
3243
3244
|
float g = rgb.g;
|
|
@@ -3328,7 +3329,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3328
3329
|
return(rgb);
|
|
3329
3330
|
}
|
|
3330
3331
|
|
|
3331
|
-
`;var
|
|
3332
|
+
`;var bS=`
|
|
3332
3333
|
uniform sampler2D uPosition;
|
|
3333
3334
|
uniform float uSize;
|
|
3334
3335
|
uniform float uSizeEnd;
|
|
@@ -3349,9 +3350,9 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3349
3350
|
varying vec2 vUv;
|
|
3350
3351
|
varying vec2 vRef;
|
|
3351
3352
|
|
|
3352
|
-
${
|
|
3353
|
-
${
|
|
3354
|
-
`,
|
|
3353
|
+
${gS}
|
|
3354
|
+
${Bh}
|
|
3355
|
+
`,vS=({easeSize:n="linearFadeOut"})=>`
|
|
3355
3356
|
vUv = uv;
|
|
3356
3357
|
vRef = ref;
|
|
3357
3358
|
// Normalized LifeTime 1 to 0
|
|
@@ -3403,7 +3404,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3403
3404
|
mvPosition = modelViewMatrix * instanceMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
|
|
3404
3405
|
mvPosition.xy += rotatedPosition;
|
|
3405
3406
|
gl_Position = projectionMatrix * mvPosition;
|
|
3406
|
-
`,
|
|
3407
|
+
`,SS=`
|
|
3407
3408
|
uniform vec4 uColor; // start color
|
|
3408
3409
|
uniform vec4 uColor2; // end color
|
|
3409
3410
|
uniform sampler2D uTexture; // texture
|
|
@@ -3414,10 +3415,10 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3414
3415
|
float random(vec2 co) {
|
|
3415
3416
|
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
|
|
3416
3417
|
}
|
|
3417
|
-
`+
|
|
3418
|
-
${
|
|
3418
|
+
`+Bh+`
|
|
3419
|
+
${xS}
|
|
3419
3420
|
|
|
3420
|
-
`,
|
|
3421
|
+
`,wS=({easeOpacity:n="linearFadeOut"})=>`
|
|
3421
3422
|
// if Particle is dead, hide it
|
|
3422
3423
|
if (v_LifeLeft <= 0.005 ) {
|
|
3423
3424
|
discard;
|
|
@@ -3438,7 +3439,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3438
3439
|
|
|
3439
3440
|
gl_FragColor = vec4(finalColor, finalAlpha);
|
|
3440
3441
|
|
|
3441
|
-
`;var
|
|
3442
|
+
`;var Sd=class extends vD{constructor(e,r){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,r),this.context=r}reset(){}init(e,r){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],this.lightLayer=new ar(0,"",{...Pt.defaultData("light","phong"),visible:!1},new Qo,{},r.shared),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 Qa;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(_b),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(Pb),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(bS),e.addFragmentParsCode(SS),e.addVertexFinalCode(vS({easeSize:this.easeSize})),e.addFragmentFinalCode(wS({easeOpacity:this.easeOpacity})),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms={...e.uniforms,...this.uniforms},this.extensions=e.extensions,this}get nodeMaterial(){return this}get fragment(){return this.lightLayer.node}getDefines(){return this.defines}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}};import{BoxGeometry as SD,ConeGeometry as wD,MeshBasicMaterial as AD,SphereGeometry as Lh,Vector3 as _D}from"three";import{Mesh as PD}from"three";import{TorusGeometry as OD}from"three";import{PlaneGeometry as CD}from"three";var Ns=class{constructor(t,e,r,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=t,this.type=r,this.textureSize=sS(e);let i=1;this.targetMesh=o?.type==="Mesh"&&o?o:this.getMesh(r,i);let{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(r,i));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(t,e){let{positions:r,normals:o}=lS(e,t*t),i=Eh(r,t),a=Eh(o,t);return{dataTexture:i,positions:r,dataTextureNormals:a}}getMesh(t,e){let r=null;switch(t){case"SphereEmitterShape":{r=new Lh(e*.5,32,32);break}case"TorusEmitterShape":{r=new OD(e*.5,.3,15,40);break}case"ConeEmitterShape":{r=new wD(e,e,15);break}case"BoxEmitterShape":{r=new SD(e,e,e);break}case"PlaneEmitterShape":{r=new CD(e,e),r.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{r=new Lh(e,32,32);break}default:{r=new Lh(e,32,32);break}}return new PD(r,new AD({color:16711680}))}applyToShader(t,e){this.size=new _D().fromArray(e.size),t.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function Oi(n){let t={...n},e=ua.defaultData;t.forceFieldObjectId&&(t.colliderEntityId=t.forceFieldObjectId);let r={...e.shape,...t.shape},o={...e.renderMaterial,...t.renderMaterial};return{...e,...t,shape:r,renderMaterial:o}}var AS=`
|
|
3442
3443
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
3443
3444
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
3444
3445
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -3485,15 +3486,15 @@ void main() {
|
|
|
3485
3486
|
|
|
3486
3487
|
|
|
3487
3488
|
}
|
|
3488
|
-
`;var th=10,Ku=class extends S3{constructor(e,r){super();this.type="ParticleEmitter";this.debugMode=!1;this.worldSpace=!0;this.rootObject=null;this.gpuCompute=null;this.positionSimRT=null;this.velocitySimRT=null;this.emissionRateSimRT=null;this.emitterShape=void 0;this.isEmitting=!1;this.hasBeenReset=!1;this.emittedParticlesAmount=0;this.lastEmitTime=0;this.globalTime=0;this.targetFPS=60;this.previousRatio=1;this.lerpFactor=.4;this.particlesAmount=0;this.noiseStrength=0;this.noiseScale=0;this.isBillboardBased=!0;this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_FORCE_LOCAL_SPACE:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1};this.textureLoader=new P3;this.currentWorldPosition=new Cr;this.systemQuaternion=new Dv;this.worldGravity=new Cr(0,0,0);this.directionAxis=new Cr(0,0,0);this.colliderV3=new Cr(0,0,0);this.colliderQuaternion=new Dv(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=r,this.shared=r.context.shared;let o=r.data;this.material=new Qu(o.renderMaterial,r.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Cr(0,0,0)},uEmissionData:{value:new Cr(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Cr(0,0,0)},uWorldQuaternion:{value:new Sl(0,0,0,1)},uRandScaleFactor:{value:o.randomScale??0},uRandRotationFactor:{value:o.randomRotation??0},uRotation:{value:o.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:o.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,o.renderMaterial.texture),this.init(o)}setTexture(e,r){let o=r.data;if(typeof r=="string"){let i=this.shared.image(r),a=new Ev(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new Ev(i);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);i.src=s}}updateGeometryAttributes(e,r){let o=fv(r);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new _3(o,2))}applyWorldSpace(){if(!this.system.started||!this.worldSpace||!this.positionSimRT||!this.velocitySimRT)return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,r){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset){this.reset();return}this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let o=1e3/r,i=this.targetFPS/o,a=this.previousRatio+(i-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=a,this.previousRatio=a;let s=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=s,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0];if(!e)return;e.getWorldPosition(this.colliderV3),this.colliderV3.y===0&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let r=e.data.size;this.colliderV3.fromArray(r),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,r){if(!this.velocitySimRT||!this.positionSimRT)return;r[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),r[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(i,a)=>{let s=[...this.system.data.shape.size];s[i]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};r[2]==="shape_size_0"&&o(0,e),r[2]==="shape_size_1"&&o(1,e),r[2]==="shape_size_2"&&o(2,e),r[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/th),r[2]==="gravity"&&this.worldGravity.set(0,e/100,0),r[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),r[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),r[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),r[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),r[2]==="direction_z"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(!(!this.positionSimRT||!this.velocitySimRT)){if(this.shouldReInitGPUCompute(e)&&this.init(di(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"]))/th),e.collisionBounce!==void 0&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),e.noiseStrength!==void 0&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),e.noiseScale!==void 0&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),e.noiseSeed!==void 0&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),e.randomMass!==void 0&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),e.renderMaterial?.size!==void 0){let r=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(r)}if(e.renderMaterial?.spriteRotation!==void 0&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),e.shape!==void 0){let r=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(r[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(r[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(r[2],[this.uuid,"particles","shape_size_2"]))],i={...di(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 r=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(r),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}e.randomRotation!==void 0&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),e.randomScale!==void 0&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(e.forceIntensity!==void 0&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),e.forceDambing!==void 0&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let r=[Number(e[0])*eh.DEG2RAD,Number(e[1])*eh.DEG2RAD,Number(e[2])*eh.DEG2RAD],o=new O3(r[0],r[1],r[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(o).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:r,rootObjectType:o,colliderEntityId:i,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:u,directionMode:c,noiseType:d}=e;return r!==void 0||o!==void 0||(i||i===null)||l!==void 0||a!==void 0||u!==void 0||s!==void 0||c!==void 0||d!==void 0}init(e){this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:e.birthRatePerSec,particleMaxLifeTime:e.life,loopDuration:e.emitTimeCycle==="infinity"?0:e.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn(`The maximum number of particles is limited to ${1e5}.`),this.particlesAmount=1e5),this.emitterShape=this.createShape(e.shape,this.particlesAmount);let r=setInterval(()=>{if(!!this.emitterShape)if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}else clearInterval(r)},100);if(!this.emitterShape)return;let o=new C3(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),i=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",i+xv,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",i+_v,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",Iv,gv(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let u=yv({size:this.emitterShape.textureSize}),c={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Cr(0,0,0)},uWorldQuaternion:{value:new Sl(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Cr(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=c;let d=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(d),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"]));let p=e.colliderEntityId&&this.system.getColliderData(e.colliderEntityId),f={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new Sl(0,0,0,1)},uColliderPos:{value:new Cr(0,0,0)},uColliderSize:{value:new Cr(0,0,0)},uForceIntensity:{value:p?p.forceIntensity:0},uForceDamping:{value:p?p.forceDambing:0},uColliderQuaternion:{value:new Sl(0,0,0,1)},uColliderQuaternionInvert:{value:new Sl(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"]))/th}};s.material.uniforms=f;let h={uIndex:{value:u},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};l.material.uniforms=h;let m=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],y={...di(this.system.data).shape,size:m};this.emitterShape.applyToShader(a.material.uniforms,y),o.init(),this.gpuCompute=o,this.positionSimRT=a,this.velocitySimRT=s,this.emissionRateSimRT=l,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0}getDirectionFromVariable(e){let r=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),i=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[r,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 r="";for(let[o,i]of Object.entries(this.simFeaturesDefinition))i&&(r+=`#define ${o}
|
|
3489
|
-
`);return r}createShape(e,r){this.emitterShape&&this.emitterShape.dispose();let o=new Cr(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 ds(o,r,e.type,i):new ds(o,r,"SphereEmitterShape")}else return new ds(o,r,e.type)}createPrimaryEmitter(e){let r,o=e*e;return r=new w3(new A3(1,1,1),this.material,o),this.updateGeometryAttributes(r,e),this.material.needsUpdate=!0,r.onBeforeRender=()=>{this.applyWorldSpace()},r}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:r,loopDuration:o=0}){return Math.ceil(e*(r+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,r){let o=e-this.lastEmitTime,i=1/r;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(di(this.system.data))}startEmitting(){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=this.globalTime}stopEmitting(){this.isEmitting=!1}};import{BufferGeometry as T3,Float32BufferAttribute as M3}from"three";var Zu=class extends bt{constructor(e,r,o){super(e,r);this.type="ParticleSystem";this.geometry=new T3;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;this.isFrozen=!1;this.isIdle=!0;this.emitter=null;this.colliderEntities=[];this.renderer=null;this.isPreWarm=!1;this._hasOnAfterRenderBeenCalled=!1;this.onAfterRender=e=>{this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))};this.context=o,this.data={...r,...di(r)},this.geometry.setAttribute("position",new M3([],3)),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Ku(e,this),this.add(this.emitter),this.updateParticleState(this.data)}update(e){if(!this.isReady||!this.started||this.isFrozen||this.isIdle)return;this.actualTime+=e,this.stopped||(this.currentLoopTime+=e);let r=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||r)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),r||this.start(this.data.emitTimeLoopDelayStart==="start"?0:this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let i=this.actualTime/1e3;this.emitter.update(i,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(r=>r.identity===e)}getColliderData(e){let r=this.colliderEntities.find(o=>o.identity===e);return r?r.data:null}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Oe(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...Je.drop(e,1).props}}),Oe(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...Je.drop(e,1).props}})}updateState(e,r){super.updateState(e,r),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let r=this.context.scene.find(e.colliderEntityId);this.colliderEntities=r?[r]:[]}e.colliderEntityId===null&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){!this.emitter||(this.emitter.updateForceFieldParameters(e),this.stop(),this.start())}start(e=0){if(this.currentLoopTime=0,e){setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting()}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting()}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function I3(n,t,e){let r;return t.geometry.type==="TextGeometry"?new Za(n,t,e):(t.geometry.type==="SubdivGeometry"?r=new ni(n,t,e):t.geometry.type==="PathGeometry"?r=new us(n,t,e):t.geometry.type==="VectorGeometry"?r=new $u(n,t,e):t.geometry.type==="BooleanGeometry"?r=new nr(n,t,e):t.geometry.type==="UIGeometry"?r=new ui(n,t,e):r=new ot(n,t,e),r)}function Ju(n,t,e){return console.assert(t.type!==void 0),t.type==="Mesh"?I3(n,t,e):t.type==="Empty"?new Pn(n,t):t.type==="Particle"?new Zu(n,t,e):t.type==="ParticleCollider"?new zu(n,t,e):t.type==="Splat"?new Pn(n,t):t.type==="Bone"?new Xu(n,t):t.type==="Page"?new Or(n,t,e):t.type==="PointLight"?new Wu(n,t,e):t.type==="SpotLight"?new ss(n,t,e):t.type==="DirectionalLight"?new as(n,t,e):t.type==="Component"||t.type==="Instance"?new Yo(n,t,e):Ir.is(t.type)?new qo(n,t):(console.error(t),new Pn(n,t))}Er.createEntity=Ju;function N3(n,t,e){let r=Ju(n.identity,t,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,u=n.overrideData,c=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(r));for(let p of Object.keys(r))n[p]=r[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=c,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Er.changeEntityProptotype=N3;Er.Cloner=es;function Bv(n,t,e,r){n.updateByOp(t,e,r,!1)}import{Matrix4 as B3,Ray as L3,Raycaster as R3}from"three";function Lv(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,Qa(n),Xa(n)),r.length===0&&o.length===0&&n.layers.set(0),n instanceof or&&n.needsAO&&n.layers.enable(5),e}function Rv(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission").filter(i=>i.data.visible),o=t.getLayersOfType("outline").filter(i=>i.data.visible);return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function Vv(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Lv(e,e.material[r])&&(t=!0);else Lv(e,e.material)&&(t=!0)}),t}function zv(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Rv(e,e.material[r])&&(t=!0);else Rv(e,e.material)&&(t=!0)}),t}var V3=new R3,z3=new B3,G3=new L3;function vl(n,t,e,r=!1){let o=n.cloner;if(o)for(let i of o.children){let a=z3.copy(i.matrixWorld).invert(),s=G3.copy(t.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let u=V3;u.set(s.origin,s.direction),u.near=t.near,u.far=t.far;let c=u.intersectObject(n,!1);c.length>0&&e.push({...c[0],object:r?i:n})}}var ed=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let i=[o,r],a=r;for(;this._constraints.has(a);)a=this._constraints.get(a),e.has(a)||i.push(a);for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let l=t.find(i[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var qr=kt(ps()),bo=kt(fs());var lt=kt(ps()),ue=kt(fs()),Mn=class{constructor(t,e,r){this._dataNormalized=t,this._minD=e,this._maxD=r}static createFromUnnormalized(t){let e=ue.sup(t),r=ue.inf(t),o=(0,lt.default)(new Float32Array(t.size),t.shape),i=e-r;return i<1e-4?ue.assigns(o,0):(ue.subs(o,t,r),ue.divs(o,o,i)),new Mn(o,r,e)}get data(){return this._dataNormalized}get minD(){return this._minD}get maxD(){return this._maxD}denormalize(){let t=(0,lt.default)(new Float32Array(this._dataNormalized.size),this._dataNormalized.shape);return ue.muls(t,this._dataNormalized,this._maxD-this._minD),ue.adds(t,t,this._minD),t}},We=class{constructor(t,e){this._quantized=t,this._method=e}get quantized(){return this._quantized}static maxIntBits(t){return 2**t-1}static fromNormalized(t,e){let r=t.data,o;if(e==="norm8x"){let i=We.maxIntBits(8),a=(0,lt.default)(new Float32Array(r.size),r.shape);ue.muls(a,r,i),ue.roundeq(a),o=(0,lt.default)(new Uint8Array(a.data),r.shape)}else if(e==="norm565"){let i=(0,lt.default)(new Float32Array(r.size),r.shape);ue.assign(i,r),ue.mulseq(i.pick(null,0),We.maxIntBits(5)),ue.mulseq(i.pick(null,1),We.maxIntBits(6)),ue.mulseq(i.pick(null,2),We.maxIntBits(5)),ue.roundeq(i);let a=(0,lt.default)(new Uint16Array(i.data),r.shape),s=(0,lt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]),l=(0,lt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]);ue.lshifts(s,a.pick(null,0),11),ue.lshifts(l,a.pick(null,1),5),ue.boreq(s,l),ue.boreq(s,a.pick(null,2)),o=s}else{let i=(0,lt.default)(new Float32Array(r.size),r.shape);ue.assign(i,r),ue.mulseq(i.pick(null,0),We.maxIntBits(11)),ue.mulseq(i.pick(null,1),We.maxIntBits(10)),ue.mulseq(i.pick(null,2),We.maxIntBits(11)),ue.roundeq(i);let a=(0,lt.default)(new Uint32Array(i.data),r.shape),s=(0,lt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]),l=(0,lt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]);ue.lshifts(s,a.pick(null,0),21),ue.lshifts(l,a.pick(null,1),11),ue.boreq(s,l),ue.boreq(s,a.pick(null,2)),o=s}return new We(o,e)}dequantize(t,e){let r=this._method,o,i=this._quantized;if(r==="norm8x"){let a=We.maxIntBits(8);o=(0,lt.default)(new Float32Array(i.size),i.shape),ue.muls(o,i,1/a)}else if(r==="norm565"){let a=(0,lt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),s=(0,lt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),l=(0,lt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]);ue.rrshifts(a,i,11),ue.rrshifts(s,i,5),ue.bandseq(s,We.maxIntBits(6)),ue.bands(l,i,We.maxIntBits(5)),o=(0,lt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ue.muls(o.pick(null,0),a,1/We.maxIntBits(5)),ue.muls(o.pick(null,1),s,1/We.maxIntBits(6)),ue.muls(o.pick(null,2),l,1/We.maxIntBits(5))}else{let a=(0,lt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),s=(0,lt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),l=(0,lt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]);ue.rrshifts(a,i,21),ue.rrshifts(s,i,11),ue.bandseq(s,We.maxIntBits(10)),ue.bands(l,i,We.maxIntBits(11)),o=(0,lt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ue.muls(o.pick(null,0),a,1/We.maxIntBits(11)),ue.muls(o.pick(null,1),s,1/We.maxIntBits(10)),ue.muls(o.pick(null,2),l,1/We.maxIntBits(11))}return new Mn(o,t,e)}};var $e=class{constructor(t,e,r,o,i,a=!1){this._quantized=t,this._minMaxMatrix=e,this._chunkSize=r,this._quantizationMethod=o,this._variableChunkSize=i,this._isDynamicChunks=a}get length(){return this._quantized.shape[0]}get nchunks(){return this._minMaxMatrix.shape[0]}get quantized(){return this._quantized}get method(){return this._quantizationMethod}get minmaxMatrix(){return this._minMaxMatrix}_createPrunedMinMax(t){let e=t.length,r=this.minmaxMatrix.shape[0]-e,o=(0,qr.default)(new Float32Array(r*2),[r,2]),i=0,a=r,s=0,l=this.minmaxMatrix.shape[0];for(let u=0;u<t.length;u++)l=t[u],a=l-s+i,a>i&&bo.assign(o.hi(a,2).lo(i,0),this.minmaxMatrix.hi(l,2).lo(s,0)),i=a,s=l+1;return i<r&&bo.assign(o.lo(i,0),this.minmaxMatrix.lo(s,0)),o}_createPrunedQuantized(t){let e=t.length,r=this.quantized.shape[0]-e,o=this._quantizationMethod,i,a;if(o==="norm8x"){a=this._quantized.shape[1];let d=a?r*a:r;i=(0,qr.default)(new Uint8Array(d),a?[r,a]:[r,1])}else o==="norm565"?i=(0,qr.default)(new Uint16Array(r),[r]):i=(0,qr.default)(new Uint32Array(r),[r]);let s=0,l=r,u=0,c=i.shape[0];for(let d=0;d<t.length;d++)c=t[d],l=c-u+s,l>s&&(a?bo.assign(i.hi(l,a).lo(s,0),this._quantized.hi(c,a).lo(u,0)):bo.assign(i.hi(l).lo(s),this._quantized.hi(c).lo(u))),s=l,u=c+1;return s<r&&(a?bo.assign(i.lo(s,0),this._quantized.lo(u,0)):bo.assign(i.lo(s),this._quantized.lo(u))),i}pruneFeature(t,e,r){let o=this._createPrunedQuantized(t),i=this._createPrunedMinMax(e);return new $e(o,i,this._chunkSize,this._quantizationMethod,r,!0)}static getRequiredNChunks(t,e){return Math.floor(t/e)}static fromArray(t,e,r){let o=t.shape[0],i=Math.floor(o/r),a=(0,qr.default)(new Float32Array(i*2),[i,2],[2,1]),s;e==="norm8x"?s=(0,qr.default)(new Uint8Array(t.size),t.shape):e==="norm565"?s=(0,qr.default)(new Uint16Array(t.shape[0]),[t.shape[0]]):s=(0,qr.default)(new Uint32Array(t.shape[0]),[t.shape[0]]);for(let l=0;l<i;l++){let u=l*r,c=l+1<i?(l+1)*r:o,d;t.shape.length>1?d=Mn.createFromUnnormalized(t.hi(c,t.shape[1]).lo(u,0)):d=Mn.createFromUnnormalized(t.hi(c).lo(u)),a.set(l,0,d.minD),a.set(l,1,d.maxD),s.shape.length>1?bo.assign(s.hi(c,s.shape[1]).lo(u,0),We.fromNormalized(d,e).quantized):bo.assign(s.hi(c).lo(u),We.fromNormalized(d,e).quantized)}return new $e(s,a,r,e)}denormDequant(){let t=this._minMaxMatrix.shape[0],e=this._quantized,r=e.shape[0],o=this._quantizationMethod,i=this._chunkSize,a;if(this._isDynamicChunks){if(!this._variableChunkSize)throw new Error("variable chunk must exists if chunkSize isDynamic");a=this._variableChunkSize}let s;o==="norm8x"?s=(0,qr.default)(new Float32Array(e.size),e.shape):s=(0,qr.default)(new Float32Array(r*3),[r,3]);let l=0,u=i;for(let c=0;c<t;c++){let[d,p]=[this._minMaxMatrix.get(c,0),this._minMaxMatrix.get(c,1)];this._isDynamicChunks&&(u=a[c]);let f=c+1<t?l+u:r,h;e.shape.length>1?h=new We(e.hi(f,e.shape[1]).lo(l,0),o):h=new We(e.hi(f).lo(l),o),bo.assign(s.hi(f,s.shape[1]).lo(l,0),h.dequantize(d,p).denormalize()),l=f}return s}static async fetchArrayBuffer(t){return await(await fetch(t,{mode:"cors"})).arrayBuffer()}};var Xo=kt(ps()),Me=kt(fs());var aS="http://127.0.0.1:8000";var pi=kt(ps()),Ue=kt(fs());var sS=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9];function lS(n){return n<1e5?n<100?n<10?0:1:n<1e4?n<1e3?2:3:4:n<1e7?n<1e6?5:6:n<1e9?n<1e8?7:8:9}function cS(n,t){if(n===t)return 0;if(~~n===n&&~~t===t){if(n===0||t===0)return n<t?-1:1;if(n<0||t<0){if(t>=0)return-1;if(n>=0)return 1;n=-n,t=-t}let o=lS(n),i=lS(t),a=0;return o<i?(n*=sS[i-o-1],t/=10,a=-1):o>i&&(t*=sS[o-i-1],n/=10,a=1),n===t?a:n<t?-1:1}let e=String(n),r=String(t);return e===r?0:e<r?-1:1}function uD(n){let t=0;for(;n>=32;)t|=n&1,n>>=1;return n+t}function uS(n,t,e,r){let o=t+1;if(o===e)return 1;if(r(n[o++],n[t])<0){for(;o<e&&r(n[o],n[o-1])<0;)o++;dD(n,t,o)}else for(;o<e&&r(n[o],n[o-1])>=0;)o++;return o-t}function dD(n,t,e){for(e--;t<e;){let r=n[t];n[t++]=n[e],n[e--]=r}}function dS(n,t,e,r,o){for(r===t&&r++;r<e;r++){let i=n[r],a=t,s=r;for(;a<s;){let u=a+s>>>1;o(i,n[u])<0?s=u:a=u+1}let l=r-a;switch(l){case 3:n[a+3]=n[a+2];case 2:n[a+2]=n[a+1];case 1:n[a+1]=n[a];break;default:for(;l>0;)n[a+l]=n[a+l-1],l--}n[a]=i}}function nh(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])>0){for(s=r-o;l<s&&i(n,t[e+o+l])>0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}else{for(s=o+1;l<s&&i(n,t[e+o-l])<=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let u=a;a=o-l,l=o-u}for(a++;a<l;){let u=a+(l-a>>>1);i(n,t[e+u])>0?a=u+1:l=u}return l}function ih(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])<0){for(s=o+1;l<s&&i(n,t[e+o-l])<0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let u=a;a=o-l,l=o-u}else{for(s=r-o;l<s&&i(n,t[e+o+l])>=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}for(a++;a<l;){let u=a+(l-a>>>1);i(n,t[e+u])<0?l=u:a=u+1}return l}var ah=class{constructor(t,e){_t(this,"array",null);_t(this,"compare",null);_t(this,"minGallop",7);_t(this,"length",0);_t(this,"tmpStorageLength",256);_t(this,"stackLength",0);_t(this,"runStart",null);_t(this,"runLength",null);_t(this,"stackSize",0);this.array=t,this.compare=e,this.length=t.length,this.length<2*256&&(this.tmpStorageLength=this.length>>>1),this.tmp=new Array(this.tmpStorageLength),this.stackLength=this.length<120?5:this.length<1542?10:this.length<119151?19:40,this.runStart=new Array(this.stackLength),this.runLength=new Array(this.stackLength)}pushRun(t,e){this.runStart[this.stackSize]=t,this.runLength[this.stackSize]=e,this.stackSize+=1}mergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;if(t>=1&&this.runLength[t-1]<=this.runLength[t]+this.runLength[t+1]||t>=2&&this.runLength[t-2]<=this.runLength[t]+this.runLength[t-1])this.runLength[t-1]<this.runLength[t+1]&&t--;else if(this.runLength[t]>this.runLength[t+1])break;this.mergeAt(t)}}forceMergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;t>0&&this.runLength[t-1]<this.runLength[t+1]&&t--,this.mergeAt(t)}}mergeAt(t){let e=this.compare,r=this.array,o=this.runStart[t],i=this.runLength[t],a=this.runStart[t+1],s=this.runLength[t+1];this.runLength[t]=i+s,t===this.stackSize-3&&(this.runStart[t+1]=this.runStart[t+2],this.runLength[t+1]=this.runLength[t+2]),this.stackSize--;let l=ih(r[a],r,o,i,0,e);o+=l,i-=l,i!==0&&(s=nh(r[o+i-1],r,a,s,s-1,e),s!==0&&(i<=s?this.mergeLow(o,i,a,s):this.mergeHigh(o,i,a,s)))}mergeLow(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<e;l++)s[l]=a[t+l];let u=0,c=r,d=t;if(a[d++]=a[c++],--o===0){for(l=0;l<e;l++)a[d+l]=s[u+l];return}if(e===1){for(l=0;l<o;l++)a[d+l]=a[c+l];a[d+o]=s[u];return}let p=this.minGallop;for(;;){let f=0,h=0,m=!1;do if(i(a[c],s[u])<0){if(a[d++]=a[c++],h++,f=0,--o===0){m=!0;break}}else if(a[d++]=s[u++],f++,h=0,--e===1){m=!0;break}while((f|h)<p);if(m)break;do{if(f=ih(a[c],s,u,e,0,i),f!==0){for(l=0;l<f;l++)a[d+l]=s[u+l];if(d+=f,u+=f,e-=f,e<=1){m=!0;break}}if(a[d++]=a[c++],--o===0){m=!0;break}if(h=nh(s[u],a,c,o,0,i),h!==0){for(l=0;l<h;l++)a[d+l]=a[c+l];if(d+=h,c+=h,o-=h,o===0){m=!0;break}}if(a[d++]=s[u++],--e===1){m=!0;break}p--}while(f>=7||h>=7);if(m)break;p<0&&(p=0),p+=2}if(this.minGallop=p,p<1&&(this.minGallop=1),e===1){for(l=0;l<o;l++)a[d+l]=a[c+l];a[d+o]=s[u]}else{if(e===0)throw new Error("mergeLow preconditions were not respected");for(l=0;l<e;l++)a[d+l]=s[u+l]}}mergeHigh(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<o;l++)s[l]=a[r+l];let u=t+e-1,c=o-1,d=r+o-1,p=0,f=0;if(a[d--]=a[u--],--e===0){for(p=d-(o-1),l=0;l<o;l++)a[p+l]=s[l];return}if(o===1){for(d-=e,u-=e,f=d+1,p=u+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[d]=s[c];return}let h=this.minGallop;for(;;){let m=0,y=0,g=!1;do if(i(s[c],a[u])<0){if(a[d--]=a[u--],m++,y=0,--e===0){g=!0;break}}else if(a[d--]=s[c--],y++,m=0,--o===1){g=!0;break}while((m|y)<h);if(g)break;do{if(m=e-ih(s[c],a,t,e,e-1,i),m!==0){for(d-=m,u-=m,e-=m,f=d+1,p=u+1,l=m-1;l>=0;l--)a[f+l]=a[p+l];if(e===0){g=!0;break}}if(a[d--]=s[c--],--o===1){g=!0;break}if(y=o-nh(a[u],s,0,o,o-1,i),y!==0){for(d-=y,c-=y,o-=y,f=d+1,p=c+1,l=0;l<y;l++)a[f+l]=s[p+l];if(o<=1){g=!0;break}}if(a[d--]=a[u--],--e===0){g=!0;break}h--}while(m>=7||y>=7);if(g)break;h<0&&(h=0),h+=2}if(this.minGallop=h,h<1&&(this.minGallop=1),o===1){for(d-=e,u-=e,f=d+1,p=u+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[d]=s[c]}else{if(o===0)throw new Error("mergeHigh preconditions were not respected");for(p=d-(o-1),l=0;l<o;l++)a[p+l]=s[l]}}};function pS(n,t,e,r){if(!Array.isArray(n))throw new TypeError("Can only sort arrays");t?typeof t!="function"&&(r=e,e=t,t=cS):t=cS,e||(e=0),r||(r=n.length);let o=r-e;if(o<2)return;let i=0;if(o<32){i=uS(n,e,r,t),dS(n,e,r,e+i,t);return}let a=new ah(n,t),s=uD(o);do{if(i=uS(n,e,r,t),i<s){let l=o;l>s&&(l=s),dS(n,e,e+l,e+i,t),i=l}a.pushRun(e,i),a.mergeRuns(),o-=i,e+=i}while(o!==0);a.forceMergeRuns()}function sh(n){let t=(0,pi.default)(new Int32Array(n.shape[0]),[n.shape[0]]),e=(0,pi.default)(new Int32Array(n.shape[0]),[n.shape[0]]);return Ue.bands(t,n,1023),Ue.lshifts(e,t,16),Ue.bxoreq(t,e),Ue.bandseq(t,4278190335),Ue.lshifts(e,t,8),Ue.bxoreq(t,e),Ue.bandseq(t,50393103),Ue.lshifts(e,t,4),Ue.bxoreq(t,e),Ue.bandseq(t,51130563),Ue.lshifts(e,t,2),Ue.bxoreq(t,e),Ue.bandseq(t,153391689),t}function pD(n){let t=sh(n.pick(null,0)),e=sh(n.pick(null,1));Ue.lshiftseq(e,1);let r=sh(n.pick(null,2));return Ue.lshiftseq(r,2),Ue.boreq(t,e),Ue.boreq(t,r),t}function In(n,t){if(n.shape[0]!==t.shape[0])throw new Error("wrong length");let e=(0,pi.default)(new Float32Array(n.size),n.shape,n.stride,n.offset);for(let r=0;r<t.shape[0];r++){let o=t.get(r);if(n.shape.length>1)for(let i=0;i<n.shape[1];i++)e.set(r,i,n.get(o,i));else e.set(r,n.get(o))}return e}function lh(n){let t=Ue.sup(n),e=Ue.inf(n),r=1e3/Math.min(1e3,t-e),o=(0,pi.default)(new Float32Array(n.data),n.shape);Ue.mulseq(o,r);let i=(0,pi.default)(new Int32Array(o.data),n.shape),a=pD(i),l=Array.from(a.data).map((d,p)=>[d,p]);pS(l,(d,p)=>d[0]-p[0]);let u=l.map(([d,p])=>p);return(0,pi.default)(Uint32Array.from(u))}var Tr=class{constructor(t,e,r,o,i,a,s,l,u,c){this.propertyDescs=t,this.format=e,this.nsplats=r,this.xyz=o,this.colors=i,this.harmonics=a,this.opacity=s,this.scaling=l,this.rotation=u,this.maxSHDegree=c}getPlyBinary(){let t=Tr._generateHeaderString(this.propertyDescs,this.format,this.nsplats),e=new TextEncoder().encode(t),r=Object.keys(this.propertyDescs).length,o=(0,Xo.default)(new Float32Array(this.nsplats*r),[this.nsplats,r]);if(Me.assign(o.pick(null,this.propertyDescs.x.index),this.xyz.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.y.index),this.xyz.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.z.index),this.xyz.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.f_dc_0.index),this.colors.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.f_dc_1.index),this.colors.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.f_dc_2.index),this.colors.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.opacity.index),this.opacity.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.scale_0.index),this.scaling.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.scale_1.index),this.scaling.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.scale_2.index),this.scaling.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.rot_0.index),this.rotation.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.rot_1.index),this.rotation.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.rot_2.index),this.rotation.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.rot_3.index),this.rotation.pick(null,3)),this.harmonics&&this.harmonics.length>0)for(let s=0;s<this.harmonics.length;s++){let l=s*3;Me.assign(o.pick(null,this.propertyDescs[`f_rest_${l}`].index),this.harmonics[s].pick(null,0)),Me.assign(o.pick(null,this.propertyDescs[`f_rest_${l+1}`].index),this.harmonics[s].pick(null,1)),Me.assign(o.pick(null,this.propertyDescs[`f_rest_${l+2}`].index),this.harmonics[s].pick(null,2))}let i=new Uint8Array(o.data.buffer),a=new Uint8Array(i.length+e.length);return a.set(e),a.set(i,e.length),a.buffer}save(t,e){let r=this.getPlyBinary(),o=new Blob([r],{type:"application/octet-stream"}),i=new File([o],t),a=new FormData;a.append("file",i),a.append("filename",t),a.append("basedir",e),fetch(`${aS}/push_file`,{method:"POST",body:a})}static async loadFile(t){return await(await fetch(t)).arrayBuffer()}mortonPositionSplatsSort(){let t=lh(this.xyz),e=In(this.xyz,t),r=In(this.colors,t),o=In(this.opacity,t),i=In(this.scaling,t),a=In(this.rotation,t),s=[];for(let l=0;l<this.harmonics.length;l++)s.push(In(this.harmonics[l],t));return new Tr(this.propertyDescs,this.format,this.nsplats,e,r,s,o,i,a,this.maxSHDegree)}static _generateHeaderString(t,e,r){let o=`ply
|
|
3489
|
+
`;var Vh=10,wd=class extends TD{constructor(e,r){super();this.type="ParticleEmitter";this.debugMode=!1;this.worldSpace=!0;this.rootObject=null;this.gpuCompute=null;this.positionSimRT=null;this.velocitySimRT=null;this.emissionRateSimRT=null;this.emitterShape=void 0;this.isEmitting=!1;this.hasBeenReset=!1;this.emittedParticlesAmount=0;this.lastEmitTime=0;this.globalTime=0;this.targetFPS=60;this.previousRatio=1;this.lerpFactor=.4;this.particlesAmount=0;this.noiseStrength=0;this.noiseScale=0;this.isBillboardBased=!0;this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_FORCE_LOCAL_SPACE:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1};this.textureLoader=new DD;this.currentWorldPosition=new zr;this.systemQuaternion=new PS;this.worldGravity=new zr(0,0,0);this.directionAxis=new zr(0,0,0);this.colliderV3=new zr(0,0,0);this.colliderQuaternion=new PS(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=r,this.shared=r.context.shared;let o=r.data;this.material=new Sd(o.renderMaterial,r.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new zr(0,0,0)},uEmissionData:{value:new zr(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new zr(0,0,0)},uWorldQuaternion:{value:new Fl(0,0,0,1)},uRandScaleFactor:{value:o.randomScale??0},uRandRotationFactor:{value:o.randomRotation??0},uRotation:{value:o.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:o.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,o.renderMaterial.texture),this.init(o)}setTexture(e,r){let o=r.data;if(typeof r=="string"){let i=this.shared.image(r),a=new OS(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new OS(i);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);i.src=s}}updateGeometryAttributes(e,r){let o=aS(r);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new ID(o,2))}applyWorldSpace(){if(!this.system.started||!this.worldSpace||!this.positionSimRT||!this.velocitySimRT)return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,r){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset){this.reset();return}this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let o=1e3/r,i=this.targetFPS/o,a=this.previousRatio+(i-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=a,this.previousRatio=a;let s=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=s,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0];if(!e)return;e.getWorldPosition(this.colliderV3),this.colliderV3.y===0&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let r=e.data.size;this.colliderV3.fromArray(r),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,r){if(!this.velocitySimRT||!this.positionSimRT)return;r[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),r[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(i,a)=>{let s=[...this.system.data.shape.size];s[i]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};r[2]==="shape_size_0"&&o(0,e),r[2]==="shape_size_1"&&o(1,e),r[2]==="shape_size_2"&&o(2,e),r[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/Vh),r[2]==="gravity"&&this.worldGravity.set(0,e/100,0),r[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),r[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),r[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),r[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),r[2]==="direction_z"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(!(!this.positionSimRT||!this.velocitySimRT)){if(this.shouldReInitGPUCompute(e)&&this.init(Oi(this.system.data)),e.life!==void 0&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),e.speed!==void 0&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/Vh),e.collisionBounce!==void 0&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),e.noiseStrength!==void 0&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),e.noiseScale!==void 0&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),e.noiseSeed!==void 0&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),e.randomMass!==void 0&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),e.renderMaterial?.size!==void 0){let r=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(r)}if(e.renderMaterial?.spriteRotation!==void 0&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),e.shape!==void 0){let r=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(r[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(r[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(r[2],[this.uuid,"particles","shape_size_2"]))],i={...Oi(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,i)}if(e.gravity!==void 0&&(this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.velocitySimRT.material.uniforms.uGravity={value:this.worldGravity}),e.direction!==void 0){let r=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(r),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}e.randomRotation!==void 0&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),e.randomScale!==void 0&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(e.forceIntensity!==void 0&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),e.forceDambing!==void 0&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let r=[Number(e[0])*Rh.DEG2RAD,Number(e[1])*Rh.DEG2RAD,Number(e[2])*Rh.DEG2RAD],o=new ED(r[0],r[1],r[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(o).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:r,rootObjectType:o,colliderEntityId:i,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:u,directionMode:c,noiseType:d}=e;return r!==void 0||o!==void 0||(i||i===null)||l!==void 0||a!==void 0||u!==void 0||s!==void 0||c!==void 0||d!==void 0}init(e){this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:e.birthRatePerSec,particleMaxLifeTime:e.life,loopDuration:e.emitTimeCycle==="infinity"?0:e.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn(`The maximum number of particles is limited to ${1e5}.`),this.particlesAmount=1e5),this.emitterShape=this.createShape(e.shape,this.particlesAmount);let r=setInterval(()=>{if(!!this.emitterShape)if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}else clearInterval(r)},100);if(!this.emitterShape)return;let o=new BD(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),i=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",i+dS,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",i+yS,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",AS,uS(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let u=cS({size:this.emitterShape.textureSize}),c={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new zr(0,0,0)},uWorldQuaternion:{value:new Fl(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new zr(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=c;let d=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(d),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"]));let p=e.colliderEntityId&&this.system.getColliderData(e.colliderEntityId),f={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new Fl(0,0,0,1)},uColliderPos:{value:new zr(0,0,0)},uColliderSize:{value:new zr(0,0,0)},uForceIntensity:{value:p?p.forceIntensity:0},uForceDamping:{value:p?p.forceDambing:0},uColliderQuaternion:{value:new Fl(0,0,0,1)},uColliderQuaternionInvert:{value:new Fl(0,0,0,1)},particleSize:{value:0},uGravity:{value:this.worldGravity},uNoiseStrength:{value:this.noiseStrength},uNoiseScale:{value:this.noiseScale},uNoiseSeed:{value:e.noiseSeed},uRandomMassFactor:{value:e.randomMass},uBounce:{value:e.collisionBounce},uSpeed:{value:Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/Vh}};s.material.uniforms=f;let h={uIndex:{value:u},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};l.material.uniforms=h;let m=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],y={...Oi(this.system.data).shape,size:m};this.emitterShape.applyToShader(a.material.uniforms,y),o.init(),this.gpuCompute=o,this.positionSimRT=a,this.velocitySimRT=s,this.emissionRateSimRT=l,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0}getDirectionFromVariable(e){let r=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[r,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 r="";for(let[o,i]of Object.entries(this.simFeaturesDefinition))i&&(r+=`#define ${o}
|
|
3490
|
+
`);return r}createShape(e,r){this.emitterShape&&this.emitterShape.dispose();let o=new zr(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 Ns(o,r,e.type,i):new Ns(o,r,"SphereEmitterShape")}else return new Ns(o,r,e.type)}createPrimaryEmitter(e){let r,o=e*e;return r=new MD(new ND(1,1,1),this.material,o),this.updateGeometryAttributes(r,e),this.material.needsUpdate=!0,r.onBeforeRender=()=>{this.applyWorldSpace()},r}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:r,loopDuration:o=0}){return Math.ceil(e*(r+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,r){let o=e-this.lastEmitTime,i=1/r;if(o>=i){let a=Math.max(1,Math.floor(o/i));return this.lastEmitTime=e,this.emittedParticlesAmount+a>this.particlesAmount&&(this.emittedParticlesAmount=0),this.emittedParticlesAmount+=a,a}return 0}checkIfAllParticlesAreDead(){return this.lastEmitTime+this.system.data.life+1<this.globalTime}reset(){this.hasBeenReset=!0,this.lastEmitTime=0,this.emittedParticlesAmount=0,this.gpuCompute&&this.init(Oi(this.system.data))}startEmitting(){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=this.globalTime}stopEmitting(){this.isEmitting=!1}};import{BufferGeometry as LD,Float32BufferAttribute as RD,MeshBasicMaterial as VD}from"three";var Ad=class extends Nt{constructor(e,r,o){super(e,r);this.type="ParticleSystem";this.geometry=new LD;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;this.isFrozen=!1;this.isIdle=!0;this.emitter=null;this.colliderEntities=[];this.renderer=null;this.isPreWarm=!1;this._hasOnAfterRenderBeenCalled=!1;this.onAfterRender=e=>{this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))};this.context=o,this.data={...r,...Oi(r)},this.geometry.setAttribute("position",new RD([],3)),this.material=new VD({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new wd(e,this),this.add(this.emitter),this.updateParticleState(this.data)}update(e){if(!this.isReady||!this.started||this.isFrozen||this.isIdle)return;this.actualTime+=e,this.stopped||(this.currentLoopTime+=e);let r=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||r)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),r||this.start(this.data.emitTimeLoopDelayStart==="start"?0:this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let i=this.actualTime/1e3;this.emitter.update(i,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(r=>r.identity===e)}getColliderData(e){let r=this.colliderEntities.find(o=>o.identity===e);return r?r.data:null}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Le(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...ct.drop(e,1).props}}),Le(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...ct.drop(e,1).props}})}updateState(e,r){super.updateState(e,r),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let r=this.context.scene.find(e.colliderEntityId);this.colliderEntities=r?[r]:[]}e.colliderEntityId===null&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){!this.emitter||(this.emitter.updateForceFieldParameters(e),this.stop(),this.start())}start(e=0){if(this.currentLoopTime=0,e){setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting()}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting()}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function zD(n,t,e){let r;return t.geometry.type==="TextGeometry"?new gs(n,t,e):(t.geometry.type==="SubdivGeometry"?r=new xi(n,t,e):t.geometry.type==="PathGeometry"?r=new Is(n,t,e):t.geometry.type==="VectorGeometry"?r=new xd(n,t,e):t.geometry.type==="BooleanGeometry"?r=new mr(n,t,e):t.geometry.type==="UIGeometry"?r=new Pi(n,t,e):r=new ft(n,t,e),r)}function _d(n,t,e){return console.assert(t.type!==void 0),t.type==="Mesh"?zD(n,t,e):t.type==="Empty"?new Ln(n,t):t.type==="Particle"?new Ad(n,t,e):t.type==="ParticleCollider"?new ld(n,t,e):t.type==="Splat"?new Ln(n,t):t.type==="Bone"?new vd(n,t):t.type==="Page"?new Vr(n,t,e):t.type==="PointLight"?new gd(n,t,e):t.type==="SpotLight"?new Os(n,t,e):t.type==="DirectionalLight"?new Ps(n,t,e):t.type==="Component"||t.type==="Instance"?new nn(n,t,e):jr.is(t.type)?new tn(n,t):(console.error(t),new Ln(n,t))}qr.createEntity=_d;function GD(n,t,e){let r=_d(n.identity,t,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,u=n.overrideData,c=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(r));for(let p of Object.keys(r))n[p]=r[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=c,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}qr.changeEntityProptotype=GD;qr.Cloner=bs;function CS(n,t,e,r){n.updateByOp(t,e,r,!1)}import{Matrix4 as jD,Ray as UD,Raycaster as HD}from"three";function TS(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,ms(n),hs(n)),r.length===0&&o.length===0&&n.layers.set(0),n instanceof hr&&n.needsAO&&n.layers.enable(5),e}function MS(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission").filter(i=>i.data.visible),o=t.getLayersOfType("outline").filter(i=>i.data.visible);return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function IS(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof hr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)TS(e,e.material[r])&&(t=!0);else TS(e,e.material)&&(t=!0)}),t}function NS(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof hr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)MS(e,e.material[r])&&(t=!0);else MS(e,e.material)&&(t=!0)}),t}var qD=new HD,WD=new jD,$D=new UD;function kl(n,t,e,r=!1){let o=n.cloner;if(o)for(let i of o.children){let a=WD.copy(i.matrixWorld).invert(),s=$D.copy(t.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let u=qD;u.set(s.origin,s.direction),u.near=t.near,u.far=t.far;let c=u.intersectObject(n,!1);c.length>0&&e.push({...c[0],object:r?i:n})}}var Pd=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let i=[o,r],a=r;for(;this._constraints.has(a);)a=this._constraints.get(a),e.has(a)||i.push(a);for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let l=t.find(i[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var oo=Zt(Ds()),Io=Zt(Es());var bt=Zt(Ds()),be=Zt(Es()),Gn=class{constructor(t,e,r){this._dataNormalized=t,this._minD=e,this._maxD=r}static createFromUnnormalized(t){let e=be.sup(t),r=be.inf(t),o=(0,bt.default)(new Float32Array(t.size),t.shape),i=e-r;return i<1e-4?be.assigns(o,0):(be.subs(o,t,r),be.divs(o,o,i)),new Gn(o,r,e)}get data(){return this._dataNormalized}get minD(){return this._minD}get maxD(){return this._maxD}denormalize(){let t=(0,bt.default)(new Float32Array(this._dataNormalized.size),this._dataNormalized.shape);return be.muls(t,this._dataNormalized,this._maxD-this._minD),be.adds(t,t,this._minD),t}},tt=class{constructor(t,e){this._quantized=t,this._method=e}get quantized(){return this._quantized}static maxIntBits(t){return 2**t-1}static fromNormalized(t,e){let r=t.data,o;if(e==="norm8x"){let i=tt.maxIntBits(8),a=(0,bt.default)(new Float32Array(r.size),r.shape);be.muls(a,r,i),be.roundeq(a),o=(0,bt.default)(new Uint8Array(a.data),r.shape)}else if(e==="norm565"){let i=(0,bt.default)(new Float32Array(r.size),r.shape);be.assign(i,r),be.mulseq(i.pick(null,0),tt.maxIntBits(5)),be.mulseq(i.pick(null,1),tt.maxIntBits(6)),be.mulseq(i.pick(null,2),tt.maxIntBits(5)),be.roundeq(i);let a=(0,bt.default)(new Uint16Array(i.data),r.shape),s=(0,bt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]),l=(0,bt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]);be.lshifts(s,a.pick(null,0),11),be.lshifts(l,a.pick(null,1),5),be.boreq(s,l),be.boreq(s,a.pick(null,2)),o=s}else{let i=(0,bt.default)(new Float32Array(r.size),r.shape);be.assign(i,r),be.mulseq(i.pick(null,0),tt.maxIntBits(11)),be.mulseq(i.pick(null,1),tt.maxIntBits(10)),be.mulseq(i.pick(null,2),tt.maxIntBits(11)),be.roundeq(i);let a=(0,bt.default)(new Uint32Array(i.data),r.shape),s=(0,bt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]),l=(0,bt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]);be.lshifts(s,a.pick(null,0),21),be.lshifts(l,a.pick(null,1),11),be.boreq(s,l),be.boreq(s,a.pick(null,2)),o=s}return new tt(o,e)}dequantize(t,e){let r=this._method,o,i=this._quantized;if(r==="norm8x"){let a=tt.maxIntBits(8);o=(0,bt.default)(new Float32Array(i.size),i.shape),be.muls(o,i,1/a)}else if(r==="norm565"){let a=(0,bt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),s=(0,bt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),l=(0,bt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]);be.rrshifts(a,i,11),be.rrshifts(s,i,5),be.bandseq(s,tt.maxIntBits(6)),be.bands(l,i,tt.maxIntBits(5)),o=(0,bt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),be.muls(o.pick(null,0),a,1/tt.maxIntBits(5)),be.muls(o.pick(null,1),s,1/tt.maxIntBits(6)),be.muls(o.pick(null,2),l,1/tt.maxIntBits(5))}else{let a=(0,bt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),s=(0,bt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),l=(0,bt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]);be.rrshifts(a,i,21),be.rrshifts(s,i,11),be.bandseq(s,tt.maxIntBits(10)),be.bands(l,i,tt.maxIntBits(11)),o=(0,bt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),be.muls(o.pick(null,0),a,1/tt.maxIntBits(11)),be.muls(o.pick(null,1),s,1/tt.maxIntBits(10)),be.muls(o.pick(null,2),l,1/tt.maxIntBits(11))}return new Gn(o,t,e)}};var rt=class{constructor(t,e,r,o,i,a=!1){this._quantized=t,this._minMaxMatrix=e,this._chunkSize=r,this._quantizationMethod=o,this._variableChunkSize=i,this._isDynamicChunks=a}get length(){return this._quantized.shape[0]}get nchunks(){return this._minMaxMatrix.shape[0]}get quantized(){return this._quantized}get method(){return this._quantizationMethod}get minmaxMatrix(){return this._minMaxMatrix}_createPrunedMinMax(t){let e=t.length,r=this.minmaxMatrix.shape[0]-e,o=(0,oo.default)(new Float32Array(r*2),[r,2]),i=0,a=r,s=0,l=this.minmaxMatrix.shape[0];for(let u=0;u<t.length;u++)l=t[u],a=l-s+i,a>i&&Io.assign(o.hi(a,2).lo(i,0),this.minmaxMatrix.hi(l,2).lo(s,0)),i=a,s=l+1;return i<r&&Io.assign(o.lo(i,0),this.minmaxMatrix.lo(s,0)),o}_createPrunedQuantized(t){let e=t.length,r=this.quantized.shape[0]-e,o=this._quantizationMethod,i,a;if(o==="norm8x"){a=this._quantized.shape[1];let d=a?r*a:r;i=(0,oo.default)(new Uint8Array(d),a?[r,a]:[r,1])}else o==="norm565"?i=(0,oo.default)(new Uint16Array(r),[r]):i=(0,oo.default)(new Uint32Array(r),[r]);let s=0,l=r,u=0,c=i.shape[0];for(let d=0;d<t.length;d++)c=t[d],l=c-u+s,l>s&&(a?Io.assign(i.hi(l,a).lo(s,0),this._quantized.hi(c,a).lo(u,0)):Io.assign(i.hi(l).lo(s),this._quantized.hi(c).lo(u))),s=l,u=c+1;return s<r&&(a?Io.assign(i.lo(s,0),this._quantized.lo(u,0)):Io.assign(i.lo(s),this._quantized.lo(u))),i}pruneFeature(t,e,r){let o=this._createPrunedQuantized(t),i=this._createPrunedMinMax(e);return new rt(o,i,this._chunkSize,this._quantizationMethod,r,!0)}static getRequiredNChunks(t,e){return Math.floor(t/e)}static fromArray(t,e,r){let o=t.shape[0],i=Math.floor(o/r),a=(0,oo.default)(new Float32Array(i*2),[i,2],[2,1]),s;e==="norm8x"?s=(0,oo.default)(new Uint8Array(t.size),t.shape):e==="norm565"?s=(0,oo.default)(new Uint16Array(t.shape[0]),[t.shape[0]]):s=(0,oo.default)(new Uint32Array(t.shape[0]),[t.shape[0]]);for(let l=0;l<i;l++){let u=l*r,c=l+1<i?(l+1)*r:o,d;t.shape.length>1?d=Gn.createFromUnnormalized(t.hi(c,t.shape[1]).lo(u,0)):d=Gn.createFromUnnormalized(t.hi(c).lo(u)),a.set(l,0,d.minD),a.set(l,1,d.maxD),s.shape.length>1?Io.assign(s.hi(c,s.shape[1]).lo(u,0),tt.fromNormalized(d,e).quantized):Io.assign(s.hi(c).lo(u),tt.fromNormalized(d,e).quantized)}return new rt(s,a,r,e)}denormDequant(){let t=this._minMaxMatrix.shape[0],e=this._quantized,r=e.shape[0],o=this._quantizationMethod,i=this._chunkSize,a;if(this._isDynamicChunks){if(!this._variableChunkSize)throw new Error("variable chunk must exists if chunkSize isDynamic");a=this._variableChunkSize}let s;o==="norm8x"?s=(0,oo.default)(new Float32Array(e.size),e.shape):s=(0,oo.default)(new Float32Array(r*3),[r,3]);let l=0,u=i;for(let c=0;c<t;c++){let[d,p]=[this._minMaxMatrix.get(c,0),this._minMaxMatrix.get(c,1)];this._isDynamicChunks&&(u=a[c]);let f=c+1<t?l+u:r,h;e.shape.length>1?h=new tt(e.hi(f,e.shape[1]).lo(l,0),o):h=new tt(e.hi(f).lo(l),o),Io.assign(s.hi(f,s.shape[1]).lo(l,0),h.dequantize(d,p).denormalize()),l=f}return s}static async fetchArrayBuffer(t){return await(await fetch(t,{mode:"cors"})).arrayBuffer()}};var an=Zt(Ds()),ze=Zt(Es());var JS="http://127.0.0.1:8000";var Ci=Zt(Ds()),Ze=Zt(Es());var e1=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9];function t1(n){return n<1e5?n<100?n<10?0:1:n<1e4?n<1e3?2:3:4:n<1e7?n<1e6?5:6:n<1e9?n<1e8?7:8:9}function r1(n,t){if(n===t)return 0;if(~~n===n&&~~t===t){if(n===0||t===0)return n<t?-1:1;if(n<0||t<0){if(t>=0)return-1;if(n>=0)return 1;n=-n,t=-t}let o=t1(n),i=t1(t),a=0;return o<i?(n*=e1[i-o-1],t/=10,a=-1):o>i&&(t*=e1[o-i-1],n/=10,a=1),n===t?a:n<t?-1:1}let e=String(n),r=String(t);return e===r?0:e<r?-1:1}function xE(n){let t=0;for(;n>=32;)t|=n&1,n>>=1;return n+t}function o1(n,t,e,r){let o=t+1;if(o===e)return 1;if(r(n[o++],n[t])<0){for(;o<e&&r(n[o],n[o-1])<0;)o++;bE(n,t,o)}else for(;o<e&&r(n[o],n[o-1])>=0;)o++;return o-t}function bE(n,t,e){for(e--;t<e;){let r=n[t];n[t++]=n[e],n[e--]=r}}function n1(n,t,e,r,o){for(r===t&&r++;r<e;r++){let i=n[r],a=t,s=r;for(;a<s;){let u=a+s>>>1;o(i,n[u])<0?s=u:a=u+1}let l=r-a;switch(l){case 3:n[a+3]=n[a+2];case 2:n[a+2]=n[a+1];case 1:n[a+1]=n[a];break;default:for(;l>0;)n[a+l]=n[a+l-1],l--}n[a]=i}}function kh(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])>0){for(s=r-o;l<s&&i(n,t[e+o+l])>0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}else{for(s=o+1;l<s&&i(n,t[e+o-l])<=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let u=a;a=o-l,l=o-u}for(a++;a<l;){let u=a+(l-a>>>1);i(n,t[e+u])>0?a=u+1:l=u}return l}function Fh(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])<0){for(s=o+1;l<s&&i(n,t[e+o-l])<0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let u=a;a=o-l,l=o-u}else{for(s=r-o;l<s&&i(n,t[e+o+l])>=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}for(a++;a<l;){let u=a+(l-a>>>1);i(n,t[e+u])<0?l=u:a=u+1}return l}var jh=class{constructor(t,e){Bt(this,"array",null);Bt(this,"compare",null);Bt(this,"minGallop",7);Bt(this,"length",0);Bt(this,"tmpStorageLength",256);Bt(this,"stackLength",0);Bt(this,"runStart",null);Bt(this,"runLength",null);Bt(this,"stackSize",0);this.array=t,this.compare=e,this.length=t.length,this.length<2*256&&(this.tmpStorageLength=this.length>>>1),this.tmp=new Array(this.tmpStorageLength),this.stackLength=this.length<120?5:this.length<1542?10:this.length<119151?19:40,this.runStart=new Array(this.stackLength),this.runLength=new Array(this.stackLength)}pushRun(t,e){this.runStart[this.stackSize]=t,this.runLength[this.stackSize]=e,this.stackSize+=1}mergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;if(t>=1&&this.runLength[t-1]<=this.runLength[t]+this.runLength[t+1]||t>=2&&this.runLength[t-2]<=this.runLength[t]+this.runLength[t-1])this.runLength[t-1]<this.runLength[t+1]&&t--;else if(this.runLength[t]>this.runLength[t+1])break;this.mergeAt(t)}}forceMergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;t>0&&this.runLength[t-1]<this.runLength[t+1]&&t--,this.mergeAt(t)}}mergeAt(t){let e=this.compare,r=this.array,o=this.runStart[t],i=this.runLength[t],a=this.runStart[t+1],s=this.runLength[t+1];this.runLength[t]=i+s,t===this.stackSize-3&&(this.runStart[t+1]=this.runStart[t+2],this.runLength[t+1]=this.runLength[t+2]),this.stackSize--;let l=Fh(r[a],r,o,i,0,e);o+=l,i-=l,i!==0&&(s=kh(r[o+i-1],r,a,s,s-1,e),s!==0&&(i<=s?this.mergeLow(o,i,a,s):this.mergeHigh(o,i,a,s)))}mergeLow(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<e;l++)s[l]=a[t+l];let u=0,c=r,d=t;if(a[d++]=a[c++],--o===0){for(l=0;l<e;l++)a[d+l]=s[u+l];return}if(e===1){for(l=0;l<o;l++)a[d+l]=a[c+l];a[d+o]=s[u];return}let p=this.minGallop;for(;;){let f=0,h=0,m=!1;do if(i(a[c],s[u])<0){if(a[d++]=a[c++],h++,f=0,--o===0){m=!0;break}}else if(a[d++]=s[u++],f++,h=0,--e===1){m=!0;break}while((f|h)<p);if(m)break;do{if(f=Fh(a[c],s,u,e,0,i),f!==0){for(l=0;l<f;l++)a[d+l]=s[u+l];if(d+=f,u+=f,e-=f,e<=1){m=!0;break}}if(a[d++]=a[c++],--o===0){m=!0;break}if(h=kh(s[u],a,c,o,0,i),h!==0){for(l=0;l<h;l++)a[d+l]=a[c+l];if(d+=h,c+=h,o-=h,o===0){m=!0;break}}if(a[d++]=s[u++],--e===1){m=!0;break}p--}while(f>=7||h>=7);if(m)break;p<0&&(p=0),p+=2}if(this.minGallop=p,p<1&&(this.minGallop=1),e===1){for(l=0;l<o;l++)a[d+l]=a[c+l];a[d+o]=s[u]}else{if(e===0)throw new Error("mergeLow preconditions were not respected");for(l=0;l<e;l++)a[d+l]=s[u+l]}}mergeHigh(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<o;l++)s[l]=a[r+l];let u=t+e-1,c=o-1,d=r+o-1,p=0,f=0;if(a[d--]=a[u--],--e===0){for(p=d-(o-1),l=0;l<o;l++)a[p+l]=s[l];return}if(o===1){for(d-=e,u-=e,f=d+1,p=u+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[d]=s[c];return}let h=this.minGallop;for(;;){let m=0,y=0,g=!1;do if(i(s[c],a[u])<0){if(a[d--]=a[u--],m++,y=0,--e===0){g=!0;break}}else if(a[d--]=s[c--],y++,m=0,--o===1){g=!0;break}while((m|y)<h);if(g)break;do{if(m=e-Fh(s[c],a,t,e,e-1,i),m!==0){for(d-=m,u-=m,e-=m,f=d+1,p=u+1,l=m-1;l>=0;l--)a[f+l]=a[p+l];if(e===0){g=!0;break}}if(a[d--]=s[c--],--o===1){g=!0;break}if(y=o-kh(a[u],s,0,o,o-1,i),y!==0){for(d-=y,c-=y,o-=y,f=d+1,p=c+1,l=0;l<y;l++)a[f+l]=s[p+l];if(o<=1){g=!0;break}}if(a[d--]=a[u--],--e===0){g=!0;break}h--}while(m>=7||y>=7);if(g)break;h<0&&(h=0),h+=2}if(this.minGallop=h,h<1&&(this.minGallop=1),o===1){for(d-=e,u-=e,f=d+1,p=u+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[d]=s[c]}else{if(o===0)throw new Error("mergeHigh preconditions were not respected");for(p=d-(o-1),l=0;l<o;l++)a[p+l]=s[l]}}};function i1(n,t,e,r){if(!Array.isArray(n))throw new TypeError("Can only sort arrays");t?typeof t!="function"&&(r=e,e=t,t=r1):t=r1,e||(e=0),r||(r=n.length);let o=r-e;if(o<2)return;let i=0;if(o<32){i=o1(n,e,r,t),n1(n,e,r,e+i,t);return}let a=new jh(n,t),s=xE(o);do{if(i=o1(n,e,r,t),i<s){let l=o;l>s&&(l=s),n1(n,e,e+l,e+i,t),i=l}a.pushRun(e,i),a.mergeRuns(),o-=i,e+=i}while(o!==0);a.forceMergeRuns()}function Uh(n){let t=(0,Ci.default)(new Int32Array(n.shape[0]),[n.shape[0]]),e=(0,Ci.default)(new Int32Array(n.shape[0]),[n.shape[0]]);return Ze.bands(t,n,1023),Ze.lshifts(e,t,16),Ze.bxoreq(t,e),Ze.bandseq(t,4278190335),Ze.lshifts(e,t,8),Ze.bxoreq(t,e),Ze.bandseq(t,50393103),Ze.lshifts(e,t,4),Ze.bxoreq(t,e),Ze.bandseq(t,51130563),Ze.lshifts(e,t,2),Ze.bxoreq(t,e),Ze.bandseq(t,153391689),t}function vE(n){let t=Uh(n.pick(null,0)),e=Uh(n.pick(null,1));Ze.lshiftseq(e,1);let r=Uh(n.pick(null,2));return Ze.lshiftseq(r,2),Ze.boreq(t,e),Ze.boreq(t,r),t}function kn(n,t){if(n.shape[0]!==t.shape[0])throw new Error("wrong length");let e=(0,Ci.default)(new Float32Array(n.size),n.shape,n.stride,n.offset);for(let r=0;r<t.shape[0];r++){let o=t.get(r);if(n.shape.length>1)for(let i=0;i<n.shape[1];i++)e.set(r,i,n.get(o,i));else e.set(r,n.get(o))}return e}function Hh(n){let t=Ze.sup(n),e=Ze.inf(n),r=1e3/Math.min(1e3,t-e),o=(0,Ci.default)(new Float32Array(n.data),n.shape);Ze.mulseq(o,r);let i=(0,Ci.default)(new Int32Array(o.data),n.shape),a=vE(i),l=Array.from(a.data).map((d,p)=>[d,p]);i1(l,(d,p)=>d[0]-p[0]);let u=l.map(([d,p])=>p);return(0,Ci.default)(Uint32Array.from(u))}var Gr=class{constructor(t,e,r,o,i,a,s,l,u,c){this.propertyDescs=t,this.format=e,this.nsplats=r,this.xyz=o,this.colors=i,this.harmonics=a,this.opacity=s,this.scaling=l,this.rotation=u,this.maxSHDegree=c}getPlyBinary(){let t=Gr._generateHeaderString(this.propertyDescs,this.format,this.nsplats),e=new TextEncoder().encode(t),r=Object.keys(this.propertyDescs).length,o=(0,an.default)(new Float32Array(this.nsplats*r),[this.nsplats,r]);if(ze.assign(o.pick(null,this.propertyDescs.x.index),this.xyz.pick(null,0)),ze.assign(o.pick(null,this.propertyDescs.y.index),this.xyz.pick(null,1)),ze.assign(o.pick(null,this.propertyDescs.z.index),this.xyz.pick(null,2)),ze.assign(o.pick(null,this.propertyDescs.f_dc_0.index),this.colors.pick(null,0)),ze.assign(o.pick(null,this.propertyDescs.f_dc_1.index),this.colors.pick(null,1)),ze.assign(o.pick(null,this.propertyDescs.f_dc_2.index),this.colors.pick(null,2)),ze.assign(o.pick(null,this.propertyDescs.opacity.index),this.opacity.pick(null,0)),ze.assign(o.pick(null,this.propertyDescs.scale_0.index),this.scaling.pick(null,0)),ze.assign(o.pick(null,this.propertyDescs.scale_1.index),this.scaling.pick(null,1)),ze.assign(o.pick(null,this.propertyDescs.scale_2.index),this.scaling.pick(null,2)),ze.assign(o.pick(null,this.propertyDescs.rot_0.index),this.rotation.pick(null,0)),ze.assign(o.pick(null,this.propertyDescs.rot_1.index),this.rotation.pick(null,1)),ze.assign(o.pick(null,this.propertyDescs.rot_2.index),this.rotation.pick(null,2)),ze.assign(o.pick(null,this.propertyDescs.rot_3.index),this.rotation.pick(null,3)),this.harmonics&&this.harmonics.length>0)for(let s=0;s<this.harmonics.length;s++){let l=s*3;ze.assign(o.pick(null,this.propertyDescs[`f_rest_${l}`].index),this.harmonics[s].pick(null,0)),ze.assign(o.pick(null,this.propertyDescs[`f_rest_${l+1}`].index),this.harmonics[s].pick(null,1)),ze.assign(o.pick(null,this.propertyDescs[`f_rest_${l+2}`].index),this.harmonics[s].pick(null,2))}let i=new Uint8Array(o.data.buffer),a=new Uint8Array(i.length+e.length);return a.set(e),a.set(i,e.length),a.buffer}save(t,e){let r=this.getPlyBinary(),o=new Blob([r],{type:"application/octet-stream"}),i=new File([o],t),a=new FormData;a.append("file",i),a.append("filename",t),a.append("basedir",e),fetch(`${JS}/push_file`,{method:"POST",body:a})}static async loadFile(t){return await(await fetch(t)).arrayBuffer()}mortonPositionSplatsSort(){let t=Hh(this.xyz),e=kn(this.xyz,t),r=kn(this.colors,t),o=kn(this.opacity,t),i=kn(this.scaling,t),a=kn(this.rotation,t),s=[];for(let l=0;l<this.harmonics.length;l++)s.push(kn(this.harmonics[l],t));return new Gr(this.propertyDescs,this.format,this.nsplats,e,r,s,o,i,a,this.maxSHDegree)}static _generateHeaderString(t,e,r){let o=`ply
|
|
3490
3491
|
format ${e.format} ${e.version}
|
|
3491
3492
|
element vertex ${r}`,i=Object.keys(t).length,a=Array(i);for(let s in t){let l=t[s];a[l.index]={name:s,dtype:l.dtype}}for(let s=0;s<a.length;s++)o=`${o}
|
|
3492
3493
|
property ${a[s].dtype} ${a[s].name}`;return`${o}
|
|
3493
3494
|
end_header
|
|
3494
|
-
`}static fromArrayBuffer(t,e=3){let{splatCount:r,vertexData:o,propertiesDesc:i,format:a}=
|
|
3495
|
-
`),s=0,l={},u={},c=0,d;for(let h=0;h<a.length;h++){let m=a[h].trim();if(m.startsWith("element vertex")){let y=m.match(/\d+/);y&&(s=parseInt(y[0]))}else if(m.startsWith("property")){let y=m.match(/(\w+)\s+(\w+)\s+(\w+)/);if(y){let g=y[2],b=y[3];l[b]=c,u[b]={dtype:g,index:c},c++}}else if(m.startsWith("format")){let y=m.match(/(\w+)\s+(\w+)\s+(\d+\.?\d*)/);y&&(d={format:y[2],version:y[3]})}else if(m==="end_header")break}let p=o.indexOf("end_header")+10+1,f=new DataView(t,p);return{splatCount:s,vertexData:f,headerOffset:r,propertiesDesc:u,format:d}}};var
|
|
3496
|
-
`),s=0,l=0,u=0,c=0,d="",p={};for(let m=0;m<a.length;m++){let y=a[m].trim();if(y.startsWith("element vertex")){let g=y.match(/\d+/);g&&(s=parseInt(g[0]))}else if(y.startsWith("property")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);if(g){let b=g[2],
|
|
3495
|
+
`}static fromArrayBuffer(t,e=3){let{splatCount:r,vertexData:o,propertiesDesc:i,format:a}=Gr.decodeHeader(t),s=o.buffer.slice(o.byteOffset),l=Object.keys(i).length,u=(0,an.default)(new Float32Array(s),[r,l]),c=0,d={},p={double:8,int:4,uint:4,float:4,short:2,ushort:2,uchar:1};for(let S in i)if(i.hasOwnProperty(S)){let P=i[S].dtype;d[S]=c,c+=p[P]}let f=(0,an.default)(new Float32Array(r*3),[r,3]);ze.assign(f.pick(null,0),u.pick(null,d.x/4)),ze.assign(f.pick(null,1),u.pick(null,d.y/4)),ze.assign(f.pick(null,2),u.pick(null,d.z/4));let h=(0,an.default)(new Float32Array(r*3),[r,3]);ze.assign(h.pick(null,0),u.pick(null,d.scale_0/4)),ze.assign(h.pick(null,1),u.pick(null,d.scale_1/4)),ze.assign(h.pick(null,2),u.pick(null,d.scale_2/4));let m=(0,an.default)(new Float32Array(r*3),[r,3]);ze.assign(m.pick(null,0),u.pick(null,d.f_dc_0/4)),ze.assign(m.pick(null,1),u.pick(null,d.f_dc_1/4)),ze.assign(m.pick(null,2),u.pick(null,d.f_dc_2/4));let y=(0,an.default)(new Float32Array(r*4),[r,4]);ze.assign(y.pick(null,0),u.pick(null,d.rot_1/4)),ze.assign(y.pick(null,1),u.pick(null,d.rot_2/4)),ze.assign(y.pick(null,2),u.pick(null,d.rot_3/4)),ze.assign(y.pick(null,3),u.pick(null,d.rot_0/4));for(let S=0;S<r;S++){let P=y.pick(S,null),O=Math.sqrt(P.get(0)**2+P.get(1)**2+P.get(2)**2+P.get(3)**2);ze.divseq(P,O)}let g=(0,an.default)(new Float32Array(r*1),[r,1]);ze.assign(g.pick(null,0),u.pick(null,d.opacity/4));let w=(Math.min(Math.max(e,0),3)+1)**2-1,_=[];for(let S=0;S<w;S++){let P=(0,an.default)(new Float32Array(r*3),[r,3]),O=S*3;ze.assign(P.pick(null,0),u.pick(null,d[`f_rest_${O}`]/4)),ze.assign(P.pick(null,1),u.pick(null,d[`f_rest_${O+1}`]/4)),ze.assign(P.pick(null,2),u.pick(null,d[`f_rest_${O+2}`]/4)),_.push(P)}return new Gr(i,a,r,f,m,_,g,h,y,e)}static async fromPLYFile(t,e=3){let r=await Gr.loadFile(t);return Gr.fromArrayBuffer(r,e)}static decodeHeader(t){let e=new TextDecoder,r=0,o="",i=100;for(;;){if(r+i>=t.byteLength)throw new Error("End of file reached while searching for end of header");let h=new Uint8Array(t,r,i);o+=e.decode(h),r+=i;let m=r-i*2,y=new Uint8Array(t,Math.max(0,m),m>0?i*2:i);if(e.decode(y).includes("end_header"))break}let a=o.split(`
|
|
3496
|
+
`),s=0,l={},u={},c=0,d;for(let h=0;h<a.length;h++){let m=a[h].trim();if(m.startsWith("element vertex")){let y=m.match(/\d+/);y&&(s=parseInt(y[0]))}else if(m.startsWith("property")){let y=m.match(/(\w+)\s+(\w+)\s+(\w+)/);if(y){let g=y[2],b=y[3];l[b]=c,u[b]={dtype:g,index:c},c++}}else if(m.startsWith("format")){let y=m.match(/(\w+)\s+(\w+)\s+(\d+\.?\d*)/);y&&(d={format:y[2],version:y[3]})}else if(m==="end_header")break}let p=o.indexOf("end_header")+10+1,f=new DataView(t,p);return{splatCount:s,vertexData:f,headerOffset:r,propertiesDesc:u,format:d}}};var Ti=class{constructor(t,e,r,o,i,a,s,l){this.config=t,this.xyz=e,this.scaling=r,this.color=o,this.opacity=i,this.harmonics=s,this.quaternion=a,this.variableChunkSize=l}get isDynamicChunks(){return this.variableChunkSize&&this.variableChunkSize.length>0}get nchunks(){return this.xyz.nchunks}get nsplats(){return this.xyz.length}get chunkSize(){return this.config.chunkSize}static compressFromGaussianData(t,e){let r=rt.fromArray(t.xyz,e.xyz,e.chunkSize),o=rt.fromArray(t.scaling,e.scaling,e.chunkSize),i=rt.fromArray(t.colors,e.color,e.chunkSize),a=rt.fromArray(t.opacity,e.opacity,e.chunkSize),s=rt.fromArray(t.rotation,e.quaternion,e.chunkSize),l=t.harmonics,u=[];if(e.harmonics)for(let c=0;c<l.length;c++){let d=rt.fromArray(l[c],e.harmonics,e.chunkSize);u.push(d)}return new Ti(e,r,o,i,a,s,u)}_countIndexesInChunks(t){let e=[],r=this.nchunks,o=this.chunkSize,i=this.nsplats,a=rt.getRequiredNChunks(i,o);if(r===a)for(let s=0;s<t.length;s++){let l=t[s],u=Math.floor(l/this.chunkSize);u in e?e[u].push(l):e[u]=[l]}else{let s=this.variableChunkSize,l={},u=0;for(let c=0;c<r;c++)l[c]=u,u+=s[c];for(let c=0;c<t.length;c++){let d=t[c],p=Math.min(Math.floor(d/o),r-1);for(;d>=l[p]+s[p];)p++;p in e?e[p].push(d):e[p]=[d]}}return e}pruneSplats(t){let e=this._countIndexesInChunks(t),r,o=[];return e.length>0&&(r=this.variableChunkSize?[...this.variableChunkSize]:Array(this.nchunks).fill(this.chunkSize),e.forEach((i,a)=>{r[a]-=i.length,r[a]<=0&&o.push(a)}),r=r.filter(i=>i>0)),new Ti(this.config,this.xyz.pruneFeature(t,o,r),this.scaling.pruneFeature(t,o,r),this.color.pruneFeature(t,o,r),this.opacity.pruneFeature(t,o,r),this.quaternion.pruneFeature(t,o,r),this.harmonics?this.harmonics.map(i=>i.pruneFeature(t,o,this.variableChunkSize)):void 0,r)}static async loadConfig(t){return await(await fetch(t,{method:"GET",mode:"cors",headers:{Accept:"application/json"}})).json()}toGaussians(){let t={format:"binary_little_endian",version:"1.0"},e={},r=0;if(e.x={dtype:"float",index:r},r++,e.y={dtype:"float",index:r},r++,e.z={dtype:"float",index:r},r++,e.f_dc_0={dtype:"float",index:r},r++,e.f_dc_1={dtype:"float",index:r},r++,e.f_dc_2={dtype:"float",index:r},r++,this.harmonics&&this.harmonics.length>0)for(let a=0;a<this.harmonics.length;a++)e[`f_rest_${a}`]={dtype:"float",index:r},r++,e[`f_rest_${a+1}`]={dtype:"float",index:r},r++,e[`f_rest_${a+2}`]={dtype:"float",index:r},r++;e.opacity={dtype:"float",index:r},r++,e.scale_0={dtype:"float",index:r},r++,e.scale_1={dtype:"float",index:r},r++,e.scale_2={dtype:"float",index:r},r++,e.rot_0={dtype:"float",index:r},r++,e.rot_1={dtype:"float",index:r},r++,e.rot_2={dtype:"float",index:r},r++,e.rot_3={dtype:"float",index:r},r++;let o=this.harmonics?.map(a=>a.denormDequant());return new Gr(e,t,this.xyz.length,this.xyz.denormDequant(),this.color.denormDequant(),o||[],this.opacity.denormDequant(),this.scaling.denormDequant(),this.quaternion.denormDequant(),3)}};var Mi=Zt(Ds()),Ot=Zt(Es());import{Matrix3 as qh,Matrix4 as SE,Quaternion as wE}from"three";var a1={xyz:3,color:3,opacity:1,scaling:3,quaternion:4,harmonics:3},Fn=class{constructor(t){this._buffer=t}get buffer(){return this._buffer}get decoded(){return this._decoded||(this._decoded=this.decodeBuffer()),this._decoded}get colorsA(){let t=.28209479177387814,e=this.decoded.color.denormDequant(),r=this.decoded.opacity.denormDequant(),o=(0,Mi.default)(new Float32Array(e.shape[0]*4),[e.shape[0],4]);return Ot.mulseq(e,t),Ot.addseq(e,.5),Ot.mulseq(e,255),Ot.maxseq(e,0),Ot.minseq(e,255),Ot.negeq(r),Ot.expeq(r),Ot.addseq(r,1),Ot.recipeq(r),Ot.mulseq(r,255),Ot.assign(o.hi(e.shape[0],3).lo(0,0),e),Ot.assign(o.hi(e.shape[0],4).lo(0,3),r),(0,Mi.default)(new Uint8Array(o.data),[e.shape[0],4]).data}get nsplats(){return this.decoded.nsplats}getSplatCount(){return this.decoded.nsplats}get precomputedCovarianceBufferData(){return this._precomputedCovarianceBufferData}decodeBuffer(){let{splatCount:t,chunkCount:e,chunkSize:r,typeChunks:o,vertexData:i,propertiesDesc:a}=this.decodeHeader(),s={xyz:a.xyz.compressionMethod,color:a.color.compressionMethod,opacity:a.opacity.compressionMethod,scaling:a.scaling.compressionMethod,quaternion:a.quaternion.compressionMethod,chunkSize:r};a.harmonics_0&&(s.harmonics=a.harmonics_0.compressionMethod);let l=i.byteOffset,u=Array(Object.keys(a).length);for(let g in a)u[a[g].index]={name:g,method:a[g].compressionMethod};let c=e*2*4,d=l,p=o==="dynamic"?e*2:0,f,h=!1;if(p>0){let g=new Uint16Array(i.buffer.slice(d,d+p));d+=p,f=Array.from(g),h=!0}let m={};for(let g of u){let b=0,w=!0;if(g.method==="norm8x")b=t*1*a1[g.name];else if(g.method==="norm11")b=t*4;else if(g.method==="norm565")b=t*2;else throw w=!1,new Error(`Not Implemented format: ${g.method}`);let _;if(w){let O=i.buffer.slice(d,d+c);_=(0,Mi.default)(new Float32Array(O),[e,2]),d+=c}else throw new Error("loading chunk byt hasnot minmax!");let S=i.buffer.slice(d,d+b);d+=b;let P;if(g.method==="norm8x")P=(0,Mi.default)(new Uint8Array(S),[t,a1[g.name]]);else if(g.method==="norm11")P=(0,Mi.default)(new Uint32Array(S));else if(g.method==="norm565")P=(0,Mi.default)(new Uint16Array(S));else throw new Error(`Not Implemented format: ${g.method}`);m[g.name]=new rt(P,_,r,g.method,f,h)}let y=[];for(let g=0;g<15;g++){let b=m[`harmonics_${g}`];b&&(y.push(b),delete m[`harmonics_${g}`])}return y.length>0&&(m.harmonics=y),new Ti(s,m.xyz,m.scaling,m.color,m.opacity,m.quaternion,m.harmonics,f)}buildPreComputedBuffers(){let r=this.decoded,o=r.nsplats,i=new ArrayBuffer(24*o),a=new Float32Array(i),s=r.scaling.denormDequant(),l=r.quaternion.denormDequant(),u=new wE,c=new qh,d=new qh,p=new qh,f=new SE;for(let h=0;h<o;h++){f.makeScale(Math.exp(s.get(h,0)),Math.exp(s.get(h,1)),Math.exp(s.get(h,2))),d.setFromMatrix4(f),u.set(l.get(h,0),l.get(h,1),l.get(h,2),l.get(h,3)),f.makeRotationFromQuaternion(u),c.setFromMatrix4(f),p.copy(c).multiply(d);let m=p.elements;a[6*h]=m[0]*m[0]+m[3]*m[3]+m[6]*m[6],a[6*h+1]=m[0]*m[1]+m[3]*m[4]+m[6]*m[7],a[6*h+2]=m[0]*m[2]+m[3]*m[5]+m[6]*m[8],a[6*h+3]=m[1]*m[1]+m[4]*m[4]+m[7]*m[7],a[6*h+4]=m[1]*m[2]+m[4]*m[5]+m[7]*m[8],a[6*h+5]=m[2]*m[2]+m[5]*m[5]+m[8]*m[8]}this._precomputedCovarianceBufferData=i}decodeHeader(){let t=this._buffer,e=new TextDecoder,r=0,o="",i=100;for(;;){if(r+i>=t.byteLength)throw new Error("End of file reached while searching for end of header");let m=new Uint8Array(t,r,i);o+=e.decode(m),r+=i;let y=r-i*2,g=new Uint8Array(t,Math.max(0,y),y>=0?i*2:i);if(e.decode(g).includes("end_header"))break}let a=o.split(`
|
|
3497
|
+
`),s=0,l=0,u=0,c=0,d="",p={};for(let m=0;m<a.length;m++){let y=a[m].trim();if(y.startsWith("element vertex")){let g=y.match(/\d+/);g&&(s=parseInt(g[0]))}else if(y.startsWith("property")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);if(g){let b=g[2],w=g[3];p[b]={compressionMethod:w,index:c},c++}}else if(y.startsWith("element chunks")){let g=y.match(/\d+/);g&&(l=parseInt(g[0]))}else if(y.startsWith("element chunkSize")){let g=y.match(/\d+/);g&&(u=parseInt(g[0]))}else if(y.startsWith("element typeChunks")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);g&&(d=g[3])}else if(y==="end_header")break}let f=o.indexOf("end_header")+10+1,h=new DataView(t,f);return{splatCount:s,chunkCount:l,chunkSize:u,typeChunks:d,vertexData:h,propertiesDesc:p}}pruneSplats(t){let r=this.decodeBuffer().pruneSplats(t);return Fn.fromCompressedGaussianSplats(r)}static fromCompressedGaussianSplats(t){let e=t.xyz.length,r=t.xyz.nchunks,o=`gspline
|
|
3497
3498
|
element vertex ${e}
|
|
3498
3499
|
element chunks ${r}
|
|
3499
3500
|
element chunkSize ${t.chunkSize}
|
|
@@ -3502,10 +3503,10 @@ property xyz ${t.xyz.method}
|
|
|
3502
3503
|
property color ${t.color.method}
|
|
3503
3504
|
property opacity ${t.opacity.method}
|
|
3504
3505
|
property scaling ${t.scaling.method}
|
|
3505
|
-
property quaternion ${t.quaternion.method}`;if(t.harmonics&&t.harmonics.length>0)for(let
|
|
3506
|
-
property harmonics_${
|
|
3506
|
+
property quaternion ${t.quaternion.method}`;if(t.harmonics&&t.harmonics.length>0)for(let D=0;D<t.harmonics.length;D++)o=`${o}
|
|
3507
|
+
property harmonics_${D} ${t.harmonics[D].method}`;o=`${o}
|
|
3507
3508
|
end_header
|
|
3508
|
-
`;let a=new TextEncoder().encode(o),s=r*2*4,l=t.xyz.quantized.data.buffer.byteLength,u=t.xyz instanceof
|
|
3509
|
+
`;let a=new TextEncoder().encode(o),s=r*2*4,l=t.xyz.quantized.data.buffer.byteLength,u=t.xyz instanceof rt?s:0,c=t.color.quantized.data.buffer.byteLength,d=t.color instanceof rt?s:0,p=t.opacity.quantized.data.buffer.byteLength,f=t.opacity instanceof rt?s:0,h=t.scaling.quantized.data.buffer.byteLength,m=t.scaling instanceof rt?s:0,y=t.quaternion.quantized.data.buffer.byteLength,g=t.quaternion instanceof rt?s:0,b=t.variableChunkSize?Uint16Array.from(t.variableChunkSize):void 0,w=b?b.byteLength:0,_=a.byteLength+w+l+u+c+d+p+f+h+m+y+g,S=0,P=0;if(t.harmonics&&t.harmonics.length>0)for(let D=0;D<t.harmonics.length;D++)S+=t.harmonics[D].quantized.data.buffer.byteLength,P+=t.harmonics[D]instanceof rt?s:0;S=0,P=0,_+=S+P;let O=new Uint8Array(_),x=0;if(O.set(a,x),x+=a.byteLength,w>0&&(O.set(new Uint8Array(b.buffer),x),x+=w),t.xyz instanceof rt&&(O.set(new Uint8Array(t.xyz.minmaxMatrix.data.buffer),x),x+=s),O.set(new Uint8Array(t.xyz.quantized.data.buffer),x),x+=l,t.color instanceof rt&&(O.set(new Uint8Array(t.color.minmaxMatrix.data.buffer),x),x+=s),O.set(new Uint8Array(t.color.quantized.data.buffer),x),x+=c,t.opacity instanceof rt&&(O.set(new Uint8Array(t.opacity.minmaxMatrix.data.buffer),x),x+=s),O.set(new Uint8Array(t.opacity.quantized.data.buffer),x),x+=p,t.scaling instanceof rt&&(O.set(new Uint8Array(t.scaling.minmaxMatrix.data.buffer),x),x+=s),O.set(new Uint8Array(t.scaling.quantized.data.buffer),x),x+=h,t.quaternion instanceof rt&&(O.set(new Uint8Array(t.quaternion.minmaxMatrix.data.buffer),x),x+=s),O.set(new Uint8Array(t.quaternion.quantized.data.buffer),x),x+=y,S>0&&t.harmonics&&t.harmonics.length>0)for(let D=0;D<t.harmonics.length;D++){let N=t.harmonics[D];N instanceof rt&&(O.set(new Uint8Array(N.minmaxMatrix.data.buffer),x),x+=s),O.set(new Uint8Array(N.quantized.data.buffer),x),x+=N.quantized.data.byteLength}return new Fn(O.buffer)}};var s1="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var No=class{};Bt(No,"DepthMapRange",1<<16),Bt(No,"MemoryPageSize",65536),Bt(No,"BytesPerFloat",4),Bt(No,"BytesPerInt",4);function AE(n){let t,e,r,o,i,a,s,l,u,c,d,p,f,h,m,y;function g(T){let I=new Float64Array(c,a,16);for(let B=0;B<16;B++)I[B]=T[B];let E;if(r>1){t.exports.sortIndexes(o,i,u,a,s,l,p.DepthMapRange,r);let B=new Uint32Array(r);E=B.buffer,B.set(new Uint32Array(c,l,r))}else if(r===1){let B=new Uint32Array(r);B[0]=new Uint32Array(c,o,e)[0],E=B.buffer}else E=new ArrayBuffer(0);n.postMessage({sortDone:!0,indexesBuffer:E},[E])}function b(T,I,E){let B=new Float32Array(c,i,e*3);r=0;let R=new Uint32Array(c,o,e);for(let k=0;k<E.length-1;k++){let V=I[k],q=T[k].elements,F=V.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?P(H):D(H)),U=V.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?P(H):D(H));for(let H=E[k];H<E[k+1];H++){let $=f[H*3],J=f[H*3+1],K=f[H*3+2];if((F.length===0||_($,J,K,F))&&(U.length===0||!_($,J,K,U))){let X=1/(q[3]*$+q[7]*J+q[11]*K+q[15]);B[r*3]=(q[0]*$+q[4]*J+q[8]*K+q[12])*X,B[r*3+1]=(q[1]*$+q[5]*J+q[9]*K+q[13])*X,B[r*3+2]=(q[2]*$+q[6]*J+q[10]*K+q[14])*X,R[r]=H,r++}}}}function w(T,I){let E=[],B=I.filter(V=>V.enabled&&V.mode==="Include").map(V=>V.type==="Box"?P(V):D(V)),R=I.filter(V=>V.enabled&&V.mode==="Exclude").map(V=>V.type==="Box"?P(V):D(V)),k=T.length;for(let V=0;V<k;V+=3){let q=T[V],F=T[V+1],U=T[V+2];(B.length===0||_(q,F,U,B))&&(R.length===0||!_(q,F,U,R))||E.push(V/3)}return console.log(E),E}function _(T,I,E,B,R){return B[R==="Intersect"?"every":"some"](k=>{let V=S(T,I,E,k.invRotationMatrix,k.cropCenter);return Array.isArray(k)?x(V.x,V.y,V.z,k):N(V.x,V.y,V.z,k)})}function S(T,I,E,B,R){let k=T-R[0],V=I-R[1],q=E-R[2],F=1/(B[3]*k+B[7]*V+B[11]*q+B[15]);return{x:(B[0]*k+B[4]*V+B[8]*q+B[12])*F+R[0],y:(B[1]*k+B[5]*V+B[9]*q+B[13])*F+R[1],z:(B[2]*k+B[6]*V+B[10]*q+B[14])*F+R[2]}}function P(T){let I=T.cropSize[0]/2,E=T.cropSize[1]/2,B=T.cropSize[2]/2,R=[T.cropCenter[0]-I,T.cropCenter[1]-E,T.cropCenter[2]-B,T.cropCenter[0]+I,T.cropCenter[1]+E,T.cropCenter[2]+B],k=O(T.cropRotation);return Object.assign(R,{invRotationMatrix:k,cropCenter:T.cropCenter})}function O(T){let I=[],E=T[0]*Math.PI/180,B=T[1]*Math.PI/180,R=T[2]*Math.PI/180,k=Math.cos(E),V=Math.sin(E),q=Math.cos(B),F=Math.sin(B),U=Math.cos(R),H=Math.sin(R),$=k*U,J=k*H,K=V*U,X=V*H;return I[0]=q*U,I[1]=-q*H,I[2]=F,I[4]=J+K*F,I[5]=$-X*F,I[6]=-V*q,I[8]=X-$*F,I[9]=K+J*F,I[10]=k*q,I[12]=0,I[13]=0,I[14]=0,I[3]=0,I[7]=0,I[11]=0,I[15]=1,I}function x(T,I,E,B){return T>=B[0]&&T<=B[3]&&I>=B[1]&&I<=B[4]&&E>=B[2]&&E<=B[5]}function D(T){let I=2/T.cropSize[0],E=2/T.cropSize[1],B=2/T.cropSize[2],R=O(T.cropRotation);return{invRadiusX:I,invRadiusY:E,invRadiusZ:B,cropCenter:T.cropCenter,invRotationMatrix:R}}function N(T,I,E,B){let R=(T-B.cropCenter[0])*B.invRadiusX,k=(I-B.cropCenter[1])*B.invRadiusY,V=(E-B.cropCenter[2])*B.invRadiusZ;return R*R+k*k+V*V<=1}n.onmessage=T=>{if(T.data.getCroppedIndexes){let I=new Uint32Array(w(new Float32Array(T.data.positions),T.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:I},[I])}else if(T.data.positions)d=T.data.positions,f=new Float32Array(d),m=T.data.meshMatrixWorlds,y=T.data.cropsArray,h=T.data.meshIndexIntervals,b(m,y,h),n.postMessage({sortSetupComplete:!0});else if(T.data.sort||T.data.newMatrixWorlds||T.data.newCropsArray)(T.data.newMatrixWorlds||T.data.newCropsArray)&&(y=T.data.newCropsArray||y,m=T.data.newMatrixWorlds||m,b(m,y,h)),g(T.data.sort.view,T.data.sort.cameraPosition);else if(T.data.init){p=T.data.init.Constants,e=T.data.init.splatCount;let I=p.BytesPerInt,E=p.BytesPerFloat*3,B=new Uint8Array(T.data.init.sorterWasmBytes),R=I+E,k=e*R,V=e*p.BytesPerInt*2+p.DepthMapRange*p.BytesPerInt*2,q=p.MemoryPageSize*32,F=k+V+q,U=Math.floor(F/p.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:U*2,maximum:U*3,shared:!0})}};WebAssembly.compile(B).then($=>WebAssembly.instantiate($,H)).then($=>{t=$,o=0,i=e*I,a=i+e*E,u=a+16*p.BytesPerFloat*2,s=u+e*p.BytesPerInt,l=s+p.DepthMapRange*p.BytesPerInt,c=H.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function l1(n){let t=new Worker(URL.createObjectURL(new Blob(["(",AE.toString(),")(self)"],{type:"application/javascript"}))),e=atob(s1),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:n,Constants:{BytesPerFloat:No.BytesPerFloat,BytesPerInt:No.BytesPerInt,DepthMapRange:No.DepthMapRange,MemoryPageSize:No.MemoryPageSize}}}),t}import{Matrix4 as GE,Quaternion as p1,Vector2 as kE,Vector3 as Bs}from"three";import{BufferAttribute as _E,BufferGeometry as PE,Color as OE,DataTexture as Md,DataUtils as CE,DoubleSide as TE,DynamicDrawUsage as ME,FloatType as u1,HalfFloatType as IE,InstancedBufferAttribute as NE,InstancedBufferGeometry as DE,Mesh as EE,NormalBlending as BE,RGBAFormat as LE,RGBAIntegerFormat as RE,RGFormat as d1,ShaderMaterial as VE,UnsignedIntType as zE,Vector2 as jn}from"three";var Td=function(){let n=new Float32Array(1),t=new Int32Array(n.buffer);return function(e){return n[0]=e,t[0]}}(),c1=function(n,t,e,r){return n+(t<<8)+(e<<16)+(r<<24)};var Id=new jn,Un=class extends EE{constructor(e,r,o,i,a=!1,s=1,l,u){super(o,i);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=u,this.splatBuffers=e,this.geometry=o,this.material=i,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,i=1,a,s){let l=Un.buildGeomtery(r),u=Un.buildMaterial(a);return new Un(e,r,l,u,o,i,a,s)}static buildMaterial(e){let r=`
|
|
3509
3510
|
precision highp float;
|
|
3510
3511
|
#include <common>
|
|
3511
3512
|
|
|
@@ -3659,4 +3660,4 @@ end_header
|
|
|
3659
3660
|
A = exp(A) * vColor.a;
|
|
3660
3661
|
gl_FragColor = vec4(color.rgb, A);
|
|
3661
3662
|
gVelocity = vec4(0.0); // so it is ignored by TAA
|
|
3662
|
-
}`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Dn},viewport:{type:"v2",value:new Dn},basisViewport:{type:"v2",value:new Dn},debugColor:{type:"v3",value:new xD},covariancesTextureSize:{type:"v2",value:new Dn(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Dn(1024,1024)},orthoZoom:{type:"f",value:-1}};return new MD({uniforms:i,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:OD,depthTest:!0,depthWrite:!1,side:vD})}static buildGeomtery(e){let r=new gD;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new yD(o,3);r.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 AD().copy(r),s=new Uint32Array(e),l=new _D(s,1,!1);return l.setUsage(SD),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,r=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(r,r+a*3).set(i.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new Dn(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Dn(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=bD.toHalfFloat(this.covariances[h]);s=new nd(l,i.x,i.y,xS,wD)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new nd(l,i.x,i.y,xS,gS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let u=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,g=h*4;u[g]=yS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),u[g+1]=od(this.centers[y]),u[g+2]=od(this.centers[y+1]),u[g+3]=od(this.centers[y+2])}let c=new nd(u,a.x,a.y,TD,ID);c.internalFormat="RGBA32UI",c.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=c,this.material.uniforms.centersColorsTextureSize.value.copy(a);let d=256*4,p=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)p.set(this.meshMatrixWorlds[h].elements,h*16);let f=new nd(p,d,1,CD,gS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:u,texture:c,size:a},meshMatrixWorlds:{data:p,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,i){this.splatCount>0&&(id.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(id),this.material.uniforms.basisViewport.value.set(2/id.x,2/id.y),this.material.uniforms.focal.value.set(r,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())}};var wl=class{constructor(t={}){_t(this,"updateSplatMeshUniforms",function(){let t=new DD;return function(){if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(this.renderer.getSize(t),this.cameraFocalLengthX=this.camera.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=this.camera.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,this.camera.isPerspectiveCamera?-1:this.camera.zoom*this.devicePixelRatio))}}());_t(this,"updateView",function(){let t=new ND,e=[],r=new hs(0,0,-1),o=new hs(0,0,-1),i=new hs,a=new hs;return function(s=!1){let l=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(this.camera.quaternion);let d=!1,p=!1;if(o.dot(r)<=.95&&(d=!0),a.copy(this.camera.position).sub(i).length()>=1&&(p=!0),!d&&!p&&!l&&!u)return}i.copy(this.camera.position),r.copy(o),t.copy(this.camera.matrixWorld).invert(),t.premultiply(this.camera.perspCamera.projectionMatrix),e[0]=this.camera.position.x,e[1]=this.camera.position.y,e[2]=this.camera.position.z;let c={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...l?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=c:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(c))}}());this.scene=t.scene,this.currentPage=null,this.renderer=t.renderer,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.splatRenderingInitialized=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null}get camera(){return this.scene.activeCamera}reloadSplats(){this.splatRenderingInitialized=!1;let t=this.loadSplat();this.renderer.pipeline.opaquePass.splatViewer=t?this:null}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new hs().fromArray(t.position)),t.orientation&&(t.orientation=new bS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseEntity(a=>{if(a.data.type==="Splat"){let s=a.visible;a.traverseAncestors(l=>{s&&(s=l.visible)}),s&&e.push(a)}}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new Nn(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of r)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[r][i]===void 0?(t=!0,this.cropsArray[r][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,u)=>l!==this.cropsArray[r][i][a][u])?(t=!0,this.cropsArray[r][i][a]=s):s!==this.cropsArray[r][i]?.[a]&&(t=!0,this.cropsArray[r][i][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new hs,o=new bS,i=!1,a=1,s,l){this.splatMesh=En.buildMesh(t,e,i,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=10,this.updateSplatMeshUniforms(),this.splatRenderCount=e}setupSortWorker(t){this.sortWorker=mS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.updateView(!0,!0),this.splatRenderingInitialized=!0)}}update(){this.splatRenderingInitialized!==!1&&(this.updateSplatMeshUniforms(),this.updateView())}getSplatMesh(){return this.splatMesh}};var GD=new VD;GD.wireframe=!0;var vS=new BD,ad=class extends ED{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new ed;this.invisibleObjects=new Pn("jflkdsafjasdifjaslk",{...Cc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Or("fdasfa",{...To.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=zv(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Vv(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Or&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],i=r;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push(i)}return r.sort((o,i)=>Cl(o.sortKey,i.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===ln)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Or&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Or&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof ui&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Or&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);i.updateVisible(this),i.resetBBoxNeedsUpdate(),An(i)&&pl(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),pl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),An(o)&&(o.freeBooleanPointer(),i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof us&&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()),An(o)&&(o.invalidateUpstreamBooleanData(),pl(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 r of this.children)r instanceof Or&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,i){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{Bv(a,r,o,{scene:this,shared:i}),a instanceof ot&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,i,a,s=[]){e.updateEntityByOp(r,o,i,a),this.traverseEntity(l=>{(l instanceof ui||l instanceof Or)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,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,r){let o=Object.entries(r.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:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(i=>{i instanceof qo&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ce.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{Ce.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,i,a,s,l){if(e){let u=i.find(e);u&&u!==i&&a.forInstancesRec(c=>{c.data=tn(c.data,d=>{let p=d.events.data(l.id),f=c.goUp(s);if(f){let h=[...Ol(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,g=Ze.zoom(p,r);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s):l.data.type==="Animation"&&this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Yo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=tn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Nc.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,r,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,r,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,r,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,r,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,r,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,r,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,r,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,r,o,i)})}),!0})}expandInstances(e,r,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof Yo&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Yu(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Yo&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)Ce.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(Ce.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let u=[];if(e.intersectObject(s,!0,u),u.length){let c=u[0];c.object=s,c.point.applyMatrix4(c.object.matrixWorld);let d=s.matrixWorld.clone().invert();c.point.applyMatrix4(d),o.push(c)}}else(An(s)||fl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),vl(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Ce.is(a)&&(a.visible||s?.object.data.visible)&&((An(a)||fl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),vl(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)Ce.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)Ce.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)Ce.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof ot&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,r).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();pl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)na.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)Ce.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,i,a,s){let l={scene:this,shared:s},u=Ju(e,r,l);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(a,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,s)),u.updateState(r,l),u instanceof ot&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(this),u.cloner&&this.toExpandCloner.add(u),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&u.traverseEntity(c=>{let d=c.dataPatched;if(c instanceof ot&&d.bones&&d.boneInverses){let p=d.bones.map(m=>this.find(m)),f=d.boneInverses.map(m=>new LD().fromArray(m)),h=new zD(p,f);c.bind(h,c.bindMatrix)}else c.matrixAutoUpdate=!0}),u}getCenter(e){let r=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],u=this.find(s),c=l?u.recursiveBBox:u.singleBBox;r.push(...c.vertices)}let o=new RD;return o.setFromPoints(r),o.getCenter(vS),vS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof bt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof rr&&e(r.material[o]);else r.material instanceof rr&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(i=>{i instanceof qo&&i.setViewplaneSize(e,r,o)})}initializeSplatViewer(e){this.splatViewer=new wl({scene:this,renderer:e}),this.reloadSplats()}reloadSplats(){this.splatViewer?.reloadSplats()}};import{DRACOLoader as FD}from"three/examples/jsm/loaders/DRACOLoader.js";var Bn;function kD(){return Bn||(Bn=new FD,Bn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Bn.decoderPending}async function jD(n){if(Bn){let t={attributeIDs:Bn.defaultAttributeIDs,attributeTypes:Bn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Bn.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function SS(n,t){let[e,r]=bd(hc.deserialize(new Uint8Array(n)));Bc(e);let o=[];e.scene.objects.traverse((i,a)=>{a.type==="Mesh"&&a.geometry.type==="NonParametricGeometry"&&a.geometry.data.draco!==void 0&&o.push(a)}),o.length&&await kD();for(let i of o){let a=await jD(et(i.geometry.data.draco));if(a){a.index&&(i.geometry.data.index={array:a.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};a.attributes.forEach(({name:l,array:u,itemSize:c})=>{s[l]={array:u,itemSize:c,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{Mesh as Vde}from"three";import{mergeBufferGeometries as Fde}from"three/examples/jsm/utils/BufferGeometryUtils.js";function wS(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as _S,ShaderLib as UD}from"three";function AS(n){let t=new Set;return n.traverse(e=>{if(e instanceof or)if(it(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(HD(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new _S,specularColor:new _S});let o=0;e.onBeforeCompile=(i,a)=>{r&&r(i,a),i.uniforms=Object.assign({},UD.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=Ux(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else qD(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function HD(n){return n.getLayersOfType("transmission").length>0}function qD(n){let t=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&&(t+=(1-t)*o.value)}}return t<1}function PS(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function OS(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let a=r;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))}}t.push(r.name)}),n}import{mergeBufferGeometries as WD}from"three/examples/jsm/utils/BufferGeometryUtils.js";function CS(n){let t=[];return n.traverse(e=>{e instanceof es&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(u){console.error(u)}return l!==void 0&&s.matrix.determinant()<0&&wS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof bt&&a.unshift(r.geometry),a.length){let s=WD(a);r instanceof bt&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:n,shared:sb})}),n}function TS(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function MS(n){Object.values(n.shared.materials).forEach(t=>{uh(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?uh(e.material):"materials"in e&&e.materials.forEach(r=>{uh(r)})})}function uh(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var BS=kt(NS(),1);function DS(n){return n.traverseMaterial(t=>{t.needsJitter=!1}),n}var ES="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",dh=class extends YD{load(t,e,r,o=console.error){let i=new $D(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(ES+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(ES),i.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await SS(t,MS);e.version&&(0,BS.default)(e.version,"1.0.22")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([mb(e)&&xx(),Ob(e)&&nb(),av(e)&&ov()].filter(Boolean));let r=new oi(e.shared);Object.values(r.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new ad(e.scene,r),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=CS(o),o=AS(o),o=PS(o),o=OS(o),o=TS(o),o=DS(o),o}};export{dh as default};
|
|
3663
|
+
}`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new jn},viewport:{type:"v2",value:new jn},basisViewport:{type:"v2",value:new jn},debugColor:{type:"v3",value:new OE},covariancesTextureSize:{type:"v2",value:new jn(1024,1024)},centersColorsTextureSize:{type:"v2",value:new jn(1024,1024)},orthoZoom:{type:"f",value:-1}};return new VE({uniforms:i,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:BE,depthTest:!0,depthWrite:!1,side:TE})}static buildGeomtery(e){let r=new PE;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new _E(o,3);r.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 DE().copy(r),s=new Uint32Array(e),l=new NE(s,1,!1);return l.setUsage(ME),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,r=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(r,r+a*3).set(i.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new jn(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new jn(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=CE.toHalfFloat(this.covariances[h]);s=new Md(l,i.x,i.y,d1,IE)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new Md(l,i.x,i.y,d1,u1);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let u=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,g=h*4;u[g]=c1(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),u[g+1]=Td(this.centers[y]),u[g+2]=Td(this.centers[y+1]),u[g+3]=Td(this.centers[y+2])}let c=new Md(u,a.x,a.y,RE,zE);c.internalFormat="RGBA32UI",c.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=c,this.material.uniforms.centersColorsTextureSize.value.copy(a);let d=256*4,p=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)p.set(this.meshMatrixWorlds[h].elements,h*16);let f=new Md(p,d,1,LE,u1);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:u,texture:c,size:a},meshMatrixWorlds:{data:p,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,i){this.splatCount>0&&(Id.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Id),this.material.uniforms.basisViewport.value.set(2/Id.x,2/Id.y),this.material.uniforms.focal.value.set(r,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())}};var jl=class{constructor(t={}){Bt(this,"updateSplatMeshUniforms",function(){let t=new kE;return function(){if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(this.renderer.getSize(t),this.cameraFocalLengthX=this.camera.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=this.camera.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,this.camera.isPerspectiveCamera?-1:this.camera.zoom*this.devicePixelRatio))}}());Bt(this,"updateView",function(){let t=new GE,e=[],r=new Bs(0,0,-1),o=new Bs(0,0,-1),i=new Bs,a=new Bs;return function(s=!1){let l=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(this.camera.quaternion);let d=!1,p=!1;if(o.dot(r)<=.95&&(d=!0),a.copy(this.camera.position).sub(i).length()>=1&&(p=!0),!d&&!p&&!l&&!u)return}i.copy(this.camera.position),r.copy(o),t.copy(this.camera.matrixWorld).invert(),t.premultiply(this.camera.perspCamera.projectionMatrix),e[0]=this.camera.position.x,e[1]=this.camera.position.y,e[2]=this.camera.position.z;let c={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...l?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=c:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(c))}}());this.scene=t.scene,this.currentPage=null,this.renderer=t.renderer,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.splatRenderingInitialized=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null}get camera(){return this.scene.activeCamera}reloadSplats(){this.splatRenderingInitialized=!1;let t=this.loadSplat();this.renderer.pipeline.opaquePass.splatViewer=t?this:null}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new Bs().fromArray(t.position)),t.orientation&&(t.orientation=new p1().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseEntity(a=>{if(a.data.type==="Splat"){let s=a.visible;a.traverseAncestors(l=>{s&&(s=l.visible)}),s&&e.push(a)}}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new Fn(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of r)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[r][i]===void 0?(t=!0,this.cropsArray[r][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,u)=>l!==this.cropsArray[r][i][a][u])?(t=!0,this.cropsArray[r][i][a]=s):s!==this.cropsArray[r][i]?.[a]&&(t=!0,this.cropsArray[r][i][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new Bs,o=new p1,i=!1,a=1,s,l){this.splatMesh=Un.buildMesh(t,e,i,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=10,this.updateSplatMeshUniforms(),this.splatRenderCount=e}setupSortWorker(t){this.sortWorker=l1(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.updateView(!0,!0),this.splatRenderingInitialized=!0)}}update(){this.splatRenderingInitialized!==!1&&(this.updateSplatMeshUniforms(),this.updateView())}getSplatMesh(){return this.splatMesh}};var $E=new qE;$E.wireframe=!0;var f1=new jE,Nd=class extends FE{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Pd;this.invisibleObjects=new Ln("jflkdsafjasdifjaslk",{...Kc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Vr("fdasfa",{...zo.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=NS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=IS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Vr&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],i=r;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push(i)}return r.sort((o,i)=>Kl(o.sortKey,i.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===xn)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Vr&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Vr&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof Pi&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Vr&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);i.updateVisible(this),i.resetBBoxNeedsUpdate(),Bn(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()),Bn(o)&&(o.freeBooleanPointer(),i instanceof mr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Is&&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()),Bn(o)&&(o.invalidateUpstreamBooleanData(),Dl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof mr&&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 r of this.children)r instanceof Vr&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,i){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{CS(a,r,o,{scene:this,shared:i}),a instanceof ft&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,i,a,s=[]){e.updateEntityByOp(r,o,i,a),this.traverseEntity(l=>{(l instanceof Pi||l instanceof Vr)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,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,r){let o=Object.entries(r.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:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(i=>{i instanceof tn&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Re.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{Re.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,i,a,s,l){if(e){let u=i.find(e);u&&u!==i&&a.forInstancesRec(c=>{c.data=pn(c.data,d=>{let p=d.events.data(l.id),f=c.goUp(s);if(f){let h=[...Ql(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,g=lt.zoom(p,r);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s):l.data.type==="Animation"&&this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof nn&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=pn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of tu.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,r,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,r,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,r,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,r,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,r,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,r,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,r,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,r,o,i)})}),!0})}expandInstances(e,r,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof nn&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),bd(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof nn&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)Re.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],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(r===!0&&s.isInstanceRoot){let u=[];if(e.intersectObject(s,!0,u),u.length){let c=u[0];c.object=s,c.point.applyMatrix4(c.object.matrixWorld);let d=s.matrixWorld.clone().invert();c.point.applyMatrix4(d),o.push(c)}}else(Bn(s)||El(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),kl(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Re.is(a)&&(a.visible||s?.object.data.visible)&&((Bn(a)||El(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),kl(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)Re.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)Re.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)Re.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof ft&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,r).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Dl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)Aa.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)Re.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,i,a,s){let l={scene:this,shared:s},u=_d(e,r,l);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(a,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,s)),u.updateState(r,l),u instanceof ft&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(this),u.cloner&&this.toExpandCloner.add(u),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&u.traverseEntity(c=>{let d=c.dataPatched;if(c instanceof ft&&d.bones&&d.boneInverses){let p=d.bones.map(m=>this.find(m)),f=d.boneInverses.map(m=>new UE().fromArray(m)),h=new WE(p,f);c.bind(h,c.bindMatrix)}else c.matrixAutoUpdate=!0}),u}getCenter(e){let r=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],u=this.find(s),c=l?u.recursiveBBox:u.singleBBox;r.push(...c.vertices)}let o=new HE;return o.setFromPoints(r),o.getCenter(f1),f1}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Nt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof fr&&e(r.material[o]);else r.material instanceof fr&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(i=>{i instanceof tn&&i.setViewplaneSize(e,r,o)})}initializeSplatViewer(e){this.splatViewer=new jl({scene:this,renderer:e}),this.reloadSplats()}reloadSplats(){this.splatViewer?.reloadSplats()}};import{DRACOLoader as YE}from"three/examples/jsm/loaders/DRACOLoader.js";var Hn;function XE(){return Hn||(Hn=new YE,Hn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Hn.decoderPending}async function QE(n){if(Hn){let t={attributeIDs:Hn.defaultAttributeIDs,attributeTypes:Hn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Hn.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function h1(n,t){let[e,r]=ep(zc.deserialize(new Uint8Array(n)));nu(e);let o=[];e.scene.objects.traverse((i,a)=>{a.type==="Mesh"&&a.geometry.type==="NonParametricGeometry"&&a.geometry.data.draco!==void 0&&o.push(a)}),o.length&&await XE();for(let i of o){let a=await QE(ut(i.geometry.data.draco));if(a){a.index&&(i.geometry.data.index={array:a.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};a.attributes.forEach(({name:l,array:u,itemSize:c})=>{s[l]={array:u,itemSize:c,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{Mesh as sfe}from"three";import{mergeBufferGeometries as ufe}from"three/examples/jsm/utils/BufferGeometryUtils.js";function m1(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as y1,ShaderLib as KE}from"three";function g1(n){let t=new Set;return n.traverse(e=>{if(e instanceof hr)if(yt(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(ZE(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new y1,specularColor:new y1});let o=0;e.onBeforeCompile=(i,a)=>{r&&r(i,a),i.uniforms=Object.assign({},KE.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=Db(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else JE(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function ZE(n){return n.getLayersOfType("transmission").length>0}function JE(n){let t=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&&(t+=(1-t)*o.value)}}return t<1}function x1(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function b1(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let a=r;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))}}t.push(r.name)}),n}import{mergeBufferGeometries as eB}from"three/examples/jsm/utils/BufferGeometryUtils.js";function v1(n){let t=[];return n.traverse(e=>{e instanceof bs&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(u){console.error(u)}return l!==void 0&&s.matrix.determinant()<0&&m1(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof Nt&&a.unshift(r.geometry),a.length){let s=eB(a);r instanceof Nt&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:n,shared:Qb})}),n}function S1(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function w1(n){Object.values(n.shared.materials).forEach(t=>{Wh(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?Wh(e.material):"materials"in e&&e.materials.forEach(r=>{Wh(r)})})}function Wh(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var C1=Zt(_1(),1);function P1(n){return n.traverseMaterial(t=>{t.needsJitter=!1}),n}var O1="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",$h=class extends rB{load(t,e,r,o=console.error){let i=new tB(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(O1+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(O1),i.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await h1(t,w1);e.version&&(0,C1.default)(e.version,"1.0.23")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([nv(e)&&sb(),mv(e)&&$b(),Xv(e)&&Wv()].filter(Boolean));let r=new gi(e.shared);Object.values(r.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new Nd(e.scene,r),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=v1(o),o=g1(o),o=x1(o),o=b1(o),o=S1(o),o=P1(o),o}};export{$h as default};
|