@splinetool/loader 0.9.521 → 0.9.522
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 +31 -31
- package/build/SplineLoader.js +36 -36
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
var qv=Object.create;var Ws=Object.defineProperty;var Wv=Object.getOwnPropertyDescriptor;var $v=Object.getOwnPropertyNames;var Yv=Object.getPrototypeOf,Xv=Object.prototype.hasOwnProperty;var Kv=(n,t,e)=>t in n?Ws(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),Qv=(n,t)=>{for(var e in t)Ws(n,e,{get:t[e],enumerable:!0})},Zv=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $v(t))!Xv.call(n,o)&&o!==e&&Ws(n,o,{get:()=>t[o],enumerable:!(r=Wv(t,o))||r.enumerable});return n};var Rt=(n,t,e)=>(e=n!=null?qv(Yv(n)):{},Zv(t||!n||!n.__esModule?Ws(e,"default",{value:n,enumerable:!0}):e,n));var yt=(n,t,e)=>(Kv(n,typeof t!="symbol"?t+"":t,e),e);var Dy=qt((Zu,Ly)=>{(function(n,t){typeof Zu=="object"?Ly.exports=t():typeof define=="function"&&define.amd?define(t):n.Alea=t()})(Zu,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 d=function(){var c=2091639*r+a*23283064365386963e-26;return r=o,o=i,i=c-(a=c|0)};return d.next=d,d.uint32=function(){return d()*4294967296},d.fract53=function(){return d()+(d()*2097152|0)*11102230246251565e-32},d.version="Alea 0.9",d.args=e,d.exportState=function(){return[r,o,i,a]},d.importState=function(c){r=+c[0]||0,o=+c[1]||0,i=+c[2]||0,a=+c[3]||0},d}(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 zy=qt((oc,Gy)=>{(function(n,t){typeof oc=="object"&&typeof Gy<"u"?t(oc):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(oc,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,d,c,u,p,f,h,m,y,g,x=t[0].length,S=t.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],b=[],_=[],A=e==="f"?S:x,v=m=p=0;v<S;v++)b[v]=new Array(A).fill(0);for(v=0;v<x;v++)_[v]=new Array(x).fill(0);var M,O=new Array(x).fill(0);for(v=0;v<S;v++)for(a=0;a<x;a++)b[v][a]=t[v][a];for(v=0;v<x;v++){for(w[v]=p,h=0,l=v+1,a=v;a<S;a++)h+=Math.pow(b[a][v],2);if(h<i)p=0;else for(f=(u=b[v][v])*(p=u<0?Math.sqrt(h):-Math.sqrt(h))-h,b[v][v]=u-p,a=l;a<x;a++){for(h=0,s=v;s<S;s++)h+=b[s][v]*b[s][a];for(u=h/f,s=v;s<S;s++)b[s][a]=b[s][a]+u*b[s][v]}for(O[v]=p,h=0,a=l;a<x;a++)h+=Math.pow(b[v][a],2);if(h<i)p=0;else{for(f=(u=b[v][v+1])*(p=u<0?Math.sqrt(h):-Math.sqrt(h))-h,b[v][v+1]=u-p,a=l;a<x;a++)w[a]=b[v][a]/f;for(a=l;a<S;a++){for(h=0,s=l;s<x;s++)h+=b[a][s]*b[v][s];for(s=l;s<x;s++)b[a][s]=b[a][s]+h*w[s]}}m<(y=Math.abs(O[v])+Math.abs(w[v]))&&(m=y)}if(r)for(v=x-1;0<=v;v--){if(p!==0){for(f=b[v][v+1]*p,a=l;a<x;a++)_[a][v]=b[v][a]/f;for(a=l;a<x;a++){for(h=0,s=l;s<x;s++)h+=b[v][s]*_[s][a];for(s=l;s<x;s++)_[s][a]=_[s][a]+h*_[s][v]}}for(a=l;a<x;a++)_[v][a]=0,_[a][v]=0;_[v][v]=1,p=w[v],l=v}if(e){if(e==="f")for(v=x;v<S;v++){for(a=x;a<S;a++)b[v][a]=0;b[v][v]=1}for(v=x-1;0<=v;v--){for(l=v+1,p=O[v],a=l;a<A;a++)b[v][a]=0;if(p!==0){for(f=b[v][v]*p,a=l;a<A;a++){for(h=0,s=l;s<S;s++)h+=b[s][v]*b[s][a];for(u=h/f,s=v;s<S;s++)b[s][a]=b[s][a]+u*b[s][v]}for(a=v;a<S;a++)b[a][v]=b[a][v]/p}else for(a=v;a<S;a++)b[a][v]=0;b[v][v]=b[v][v]+1}}for(o*=m,s=x-1;0<=s;s--)for(var T=0;T<50;T++){for(M=!1,l=s;0<=l;l--){if(Math.abs(w[l])<=o){M=!0;break}if(Math.abs(O[l-1])<=o)break}if(!M){for(c=0,d=l-(h=1),v=l;v<s+1&&(u=h*w[v],w[v]=c*w[v],!(Math.abs(u)<=o));v++)if(p=O[v],O[v]=Math.sqrt(u*u+p*p),c=p/(f=O[v]),h=-u/f,e)for(a=0;a<S;a++)y=b[a][d],g=b[a][v],b[a][d]=y*c+g*h,b[a][v]=-y*h+g*c}if(g=O[s],l===s){if(g<0&&(O[s]=-g,r))for(a=0;a<x;a++)_[a][s]=-_[a][s];break}for(m=O[l],u=(((y=O[s-1])-g)*(y+g)+((p=w[s-1])-(f=w[s]))*(p+f))/(2*f*y),p=Math.sqrt(u*u+1),u=((m-g)*(m+g)+f*(y/(u<0?u-p:u+p)-f))/m,v=l+(h=c=1);v<s+1;v++){if(p=w[v],y=O[v],f=h*p,p*=c,g=Math.sqrt(u*u+f*f),u=m*(c=u/(w[v-1]=g))+p*(h=f/g),p=-m*h+p*c,f=y*h,y*=c,r)for(a=0;a<x;a++)m=_[a][v-1],g=_[a][v],_[a][v-1]=m*c+g*h,_[a][v]=-m*h+g*c;if(g=Math.sqrt(u*u+f*f),u=(c=u/(O[v-1]=g))*p+(h=f/g)*y,m=-h*p+c*y,e)for(a=0;a<S;a++)y=b[a][v-1],g=b[a][v],b[a][v-1]=y*c+g*h,b[a][v]=-y*h+g*c}w[l]=0,w[s]=u,O[s]=m}for(v=0;v<x;v++)O[v]<o&&(O[v]=0);return{u:b,q:O,v:_}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var xg=qt((Td,Cd)=>{(function(n,t){typeof Td=="object"&&typeof Cd<"u"?Cd.exports=t():typeof define=="function"&&define.amd?define(t):(n=n||self,n.TinyQueue=t())})(Td,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,d=i[l];if(a(s,d)>=0)break;i[r]=d,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 d=(r<<1)+1,c=i[d],u=d+1;if(u<this.length&&a(i[u],c)<0&&(d=u,c=i[u]),a(c,l)>=0)break;i[r]=c,r=d}i[r]=l};function t(e,r){return e<r?-1:e>r?1:0}return n})});var bg=qt((s5,Pd)=>{"use strict";var hc=xg();hc.default&&(hc=hc.default);Pd.exports=vg;Pd.exports.default=vg;function vg(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 d=i-r,c=a-o,u=Math.min(d,c),p=u/2;if(u===0){var f=[r,o];return f.distance=0,f}for(var h=new hc(void 0,dP),m=r;m<i;m+=u)for(var y=o;y<a;y+=u)h.push(new en(m+p,y+p,p,n));var g=fP(n),x=new en(r+d/2,o+c/2,0,n);x.d>g.d&&(g=x);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 en(w.x-p,w.y-p,p,n)),h.push(new en(w.x+p,w.y-p,p,n)),h.push(new en(w.x-p,w.y+p,p,n)),h.push(new en(w.x+p,w.y+p,p,n)),S+=4)}e&&(console.log("num probes: "+S),console.log("best distance: "+g.d));var b=[g.x,g.y];return b.distance=g.d,b}function dP(n,t){return t.max-n.max}function en(n,t,e,r){this.x=n,this.y=t,this.h=e,this.d=pP(n,t,r),this.max=this.d+this.h*Math.SQRT2}function pP(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,d=l-1;s<l;d=s++){var c=a[s],u=a[d];c[1]>t!=u[1]>t&&n<(u[0]-c[0])*(t-c[1])/(u[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,hP(n,t,c,u))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function fP(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],d=o[s],c=l[0]*d[1]-d[0]*l[1];e+=(l[0]+d[0])*c,r+=(l[1]+d[1])*c,t+=c*3}return t===0?new en(o[0][0],o[0][1],0,n):new en(e/t,r/t,0,n)}function hP(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 B0=qt(jc=>{(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 u=this||t;if(c=parseFloat(c),u.ctx||d(),typeof c<"u"&&c>=0&&c<=1){if(u._volume=c,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(c,t.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=u._howls[p]._soundById(f[h]);m&&m._node&&(m._node.volume=m._volume*c)}return u}return u._volume},mute:function(c){var u=this||t;u.ctx||d(),u._muted=c,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(c?0:u._volume,t.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=u._howls[p]._soundById(f[h]);m&&m._node&&(m._node.muted=c?!0:m._muted)}return u},stop:function(){for(var c=this||t,u=0;u<c._howls.length;u++)c._howls[u].stop();return c},unload:function(){for(var c=this||t,u=c._howls.length-1;u>=0;u--)c._howls[u].unload();return c.usingWebAudio&&c.ctx&&typeof c.ctx.close<"u"&&(c.ctx.close(),c.ctx=null,d()),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 u=new Audio;typeof u.oncanplaythrough>"u"&&(c._canPlayEvent="canplay")}catch{c.noAudio=!0}else c.noAudio=!0;try{var u=new Audio;u.muted&&(c.noAudio=!0)}catch{}return c.noAudio||c._setupCodecs(),c},_setupCodecs:function(){var c=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return c}if(!u||typeof u.canPlayType!="function")return c;var p=u.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\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return c._codecs={mp3:!!(!m&&(p||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.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 u=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 x=c.ctx.createBufferSource();x.buffer=c._scratchBuffer,x.connect(c.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof c.ctx.resume=="function"&&c.ctx.resume(),x.onended=function(){x.disconnect(0),c._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var S=0;S<c._howls.length;S++)c._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),c}},_obtainHtml5Audio:function(){var c=this||t;if(c._html5AudioPool.length)return c._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(c){var u=this||t;return c._unlocked&&u._html5AudioPool.push(c),u},_autoSuspend:function(){var c=this;if(!(!c.autoSuspend||!c.ctx||typeof c.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<c._howls.length;u++)if(c._howls[u]._webAudio){for(var p=0;p<c._howls[u]._sounds.length;p++)if(!c._howls[u]._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 u=0;u<c._howls.length;u++)c._howls[u]._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 u=this;if(!c.src||c.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(c)};e.prototype={init:function(c){var u=this;return t.ctx||d(),u._autoplay=c.autoplay||!1,u._format=typeof c.format!="string"?c.format:[c.format],u._html5=c.html5||!1,u._muted=c.mute||!1,u._loop=c.loop||!1,u._pool=c.pool||5,u._preload=typeof c.preload=="boolean"||c.preload==="metadata"?c.preload:!0,u._rate=c.rate||1,u._sprite=c.sprite||{},u._src=typeof c.src!="string"?c.src:[c.src],u._volume=c.volume!==void 0?c.volume:1,u._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},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=c.onend?[{fn:c.onend}]:[],u._onfade=c.onfade?[{fn:c.onfade}]:[],u._onload=c.onload?[{fn:c.onload}]:[],u._onloaderror=c.onloaderror?[{fn:c.onloaderror}]:[],u._onplayerror=c.onplayerror?[{fn:c.onplayerror}]:[],u._onpause=c.onpause?[{fn:c.onpause}]:[],u._onplay=c.onplay?[{fn:c.onplay}]:[],u._onstop=c.onstop?[{fn:c.onstop}]:[],u._onmute=c.onmute?[{fn:c.onmute}]:[],u._onvolume=c.onvolume?[{fn:c.onvolume}]:[],u._onrate=c.onrate?[{fn:c.onrate}]:[],u._onseek=c.onseek?[{fn:c.onseek}]:[],u._onunlock=c.onunlock?[{fn:c.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var c=this,u=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)){u=c._src[p];break}}if(!u){c._emit("loaderror",null,"No codec support for selected audio sources.");return}return c._src=u,c._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(c._html5=!0,c._webAudio=!1),new r(c),c._webAudio&&i(c),c},play:function(c,u){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 u||p._loadQueue("play"),y._id;p._webAudio&&t._autoResume();var x=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-x),w=S*1e3/Math.abs(y._rate),b=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=x,y._start=b,y._stop=_,y._loop=!!(y._loop||p._sprite[c][2])};if(x>=_){p._ended(y);return}var v=y._node;if(p._webAudio){var M=function(){p._playLock=!1,A(),p._refreshBuffer(y);var P=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(P,t.ctx.currentTime),y._playStart=t.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,S):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,S),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),u||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?M():(p._playLock=!0,p.once("resume",M),p._clearTimer(y._id))}else{var O=function(){v.currentTime=x,v.muted=y._muted||p._muted||t._muted||v.muted,v.volume=y._volume*t.volume(),v.playbackRate=y._rate;try{var P=v.play();if(P&&typeof Promise<"u"&&(P instanceof Promise||typeof P.then=="function")?(p._playLock=!0,A(),P.then(function(){p._playLock=!1,v._unlocked=!0,u?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})):u||(p._playLock=!1,A(),p._emit("play",y._id)),v.playbackRate=y._rate,v.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),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(I){p._emit("playerror",y._id,I)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var T=window&&window.ejecta||!v.readyState&&t._navigator.isCocoonJS;if(v.readyState>=3||T)O();else{p._playLock=!0,p._state="loading";var C=function(){p._state="loaded",O(),v.removeEventListener(t._canPlayEvent,C,!1)};v.addEventListener(t._canPlayEvent,C,!1),p._clearTimer(y._id)}}return y._id},pause:function(c){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(c)}}),u;for(var p=u._getSoundIds(c),f=0;f<p.length;f++){u._clearTimer(p[f]);var h=u._soundById(p[f]);if(h&&!h._paused&&(h._seek=u.seek(p[f]),h._rateSeek=0,h._paused=!0,u._stopFade(p[f]),h._node))if(u._webAudio){if(!h._node.bufferSource)continue;typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),u._cleanBuffer(h._node)}else(!isNaN(h._node.duration)||h._node.duration===1/0)&&h._node.pause();arguments[1]||u._emit("pause",h?h._id:null)}return u},stop:function(c,u){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))),u||p._emit("stop",m._id))}return p},mute:function(c,u){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(c,u)}}),p;if(typeof u>"u")if(typeof c=="boolean")p._muted=c;else return p._muted;for(var f=p._getSoundIds(u),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,u=arguments,p,f;if(u.length===0)return c._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=0?f=parseInt(u[0],10):p=parseFloat(u[0])}else u.length>=2&&(p=parseFloat(u[0]),f=parseInt(u[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,u)}}),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,u[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,u,p,f){var h=this;if(h._state!=="loaded"||h._playLock)return h._queue.push({event:"fade",action:function(){h.fade(c,u,p,f)}}),h;c=Math.min(Math.max(0,parseFloat(c)),1),u=Math.min(Math.max(0,parseFloat(u)),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 x=t.ctx.currentTime,S=x+p/1e3;g._volume=c,g._node.gain.setValueAtTime(c,x),g._node.gain.linearRampToValueAtTime(u,S)}h._startFadeInterval(g,c,u,p,m[y],typeof f>"u")}}return h},_startFadeInterval:function(c,u,p,f,h,m){var y=this,g=u,x=p-u,S=Math.abs(x/.01),w=Math.max(4,S>0?f/S:f),b=Date.now();c._fadeTo=p,c._interval=setInterval(function(){var _=(Date.now()-b)/f;b=Date.now(),g+=x*_,g=Math.round(g*100)/100,x<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<u&&g<=p||p>u&&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 u=this,p=u._soundById(c);return p&&p._interval&&(u._webAudio&&p._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(p._interval),p._interval=null,u.volume(p._fadeTo,c),p._fadeTo=null,u._emit("fade",c)),u},loop:function(){var c=this,u=arguments,p,f,h;if(u.length===0)return c._loop;if(u.length===1)if(typeof u[0]=="boolean")p=u[0],c._loop=p;else return h=c._soundById(parseInt(u[0],10)),h?h._loop:!1;else u.length===2&&(p=u[0],f=parseInt(u[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,u=arguments,p,f;if(u.length===0)f=c._sounds[0]._id;else if(u.length===1){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=0?f=parseInt(u[0],10):p=parseFloat(u[0])}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[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,u)}}),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 x=c.seek(f[g]),S=(c._sprite[y._sprite][0]+c._sprite[y._sprite][1])/1e3-x,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,u=arguments,p,f;if(u.length===0)c._sounds.length&&(f=c._sounds[0]._id);else if(u.length===1){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=0?f=parseInt(u[0],10):c._sounds.length&&(f=c._sounds[0]._id,p=parseFloat(u[0]))}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[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,u)}}),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 x=function(){g&&c.play(f,!0),c._emit("seek",f)};if(g&&!c._webAudio){var S=function(){c._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(c._webAudio){var w=c.playing(f)?t.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+w*Math.abs(y._rate))}else return y._node.currentTime;return c},playing:function(c){var u=this;if(typeof c=="number"){var p=u._soundById(c);return p?!p._paused:!1}for(var f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(c){var u=this,p=u._duration,f=u._soundById(c);return f&&(p=u._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var c=this,u=c._sounds,p=0;p<u.length;p++)u[p]._paused||c.stop(u[p]._id),c._webAudio||(c._clearSound(u[p]._node),u[p]._node.removeEventListener("error",u[p]._errorFn,!1),u[p]._node.removeEventListener(t._canPlayEvent,u[p]._loadFn,!1),u[p]._node.removeEventListener("ended",u[p]._endFn,!1),t._releaseHtml5Audio(u[p]._node)),delete u[p]._node,c._clearTimer(u[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,u,p,f){var h=this,m=h["_on"+c];return typeof u=="function"&&m.push(f?{id:p,fn:u,once:f}:{id:p,fn:u}),h},off:function(c,u,p){var f=this,h=f["_on"+c],m=0;if(typeof u=="number"&&(p=u,u=null),u||p)for(m=0;m<h.length;m++){var y=p===h[m].id;if(u===h[m].fn&&y||!u&&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,u,p){var f=this;return f.on(c,u,p,1),f},_emit:function(c,u,p){for(var f=this,h=f["_on"+c],m=h.length-1;m>=0;m--)(!h[m].id||h[m].id===u||c==="load")&&(setTimeout(function(y){y.call(this,u,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 u=this;if(u._queue.length>0){var p=u._queue[0];p.event===c&&(u._queue.shift(),u._loadQueue()),c||p.action()}return u},_ended:function(c){var u=this,p=c._sprite;if(!u._webAudio&&c._node&&!c._node.paused&&!c._node.ended&&c._node.currentTime<c._stop)return setTimeout(u._ended.bind(u,c),100),u;var f=!!(c._loop||u._sprite[p][2]);if(u._emit("end",c._id),!u._webAudio&&f&&u.stop(c._id,!0).play(c._id),u._webAudio&&f){u._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);u._endTimers[c._id]=setTimeout(u._ended.bind(u,c),h)}return u._webAudio&&!f&&(c._paused=!0,c._ended=!0,c._seek=c._start||0,c._rateSeek=0,u._clearTimer(c._id),u._cleanBuffer(c._node),t._autoSuspend()),!u._webAudio&&!f&&u.stop(c._id,!0),u},_clearTimer:function(c){var u=this;if(u._endTimers[c]){if(typeof u._endTimers[c]!="function")clearTimeout(u._endTimers[c]);else{var p=u._soundById(c);p&&p._node&&p._node.removeEventListener("ended",u._endTimers[c],!1)}delete u._endTimers[c]}return u},_soundById:function(c){for(var u=this,p=0;p<u._sounds.length;p++)if(c===u._sounds[p]._id)return u._sounds[p];return null},_inactiveSound:function(){var c=this;c._drain();for(var u=0;u<c._sounds.length;u++)if(c._sounds[u]._ended)return c._sounds[u].reset();return new r(c)},_drain:function(){var c=this,u=c._pool,p=0,f=0;if(!(c._sounds.length<u)){for(f=0;f<c._sounds.length;f++)c._sounds[f]._ended&&p++;for(f=c._sounds.length-1;f>=0;f--){if(p<=u)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 u=this;if(typeof c>"u"){for(var p=[],f=0;f<u._sounds.length;f++)p.push(u._sounds[f]._id);return p}else return[c]},_refreshBuffer:function(c){var u=this;return c._node.bufferSource=t.ctx.createBufferSource(),c._node.bufferSource.buffer=o[u._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),u},_cleanBuffer:function(c){var u=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,u},_clearSound:function(c){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(c.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(c){this._parent=c,this.init()};r.prototype={init:function(){var c=this,u=c._parent;return c._muted=u._muted,c._loop=u._loop,c._volume=u._volume,c._rate=u._rate,c._seek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,u._sounds.push(c),c.create(),c},create:function(){var c=this,u=c._parent,p=t._muted||c._muted||c._parent._muted?0:c._volume;return u._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=u._src,c._node.preload=u._preload===!0?"auto":u._preload,c._node.volume=p*t.volume(),c._node.load()),c},reset:function(){var c=this,u=c._parent;return c._muted=u._muted,c._loop=u._loop,c._volume=u._volume,c._rate=u._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,u=c._parent;u._duration=Math.ceil(c._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),c._node.removeEventListener(t._canPlayEvent,c._loadFn,!1)},_endListener:function(){var c=this,u=c._parent;u._duration===1/0&&(u._duration=Math.ceil(c._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(c)),c._node.removeEventListener("ended",c._endFn,!1)}};var o={},i=function(c){var u=c._src;if(o[u]){c._duration=o[u].duration,l(c);return}if(/^data:[^;]+;base64,/.test(u)){for(var p=atob(u.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,u,!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[u],c.load())},a(m)}},a=function(c){try{c.send()}catch{c.onerror()}},s=function(c,u){var p=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(h){h&&u._sounds.length>0?(o[u._src]=h,l(u,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,u){u&&!c._duration&&(c._duration=u.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())},d=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),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=u?parseInt(u[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 jc<"u"&&(jc.Howler=t,jc.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 d=i._panner;d?(d.coneInnerAngle=l.coneInnerAngle,d.coneOuterAngle=l.coneOuterAngle,d.coneOuterGain=l.coneOuterGain,d.distanceModel=l.distanceModel,d.maxDistance=l.maxDistance,d.refDistance=l.refDistance,d.rolloffFactor=l.rolloffFactor,d.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 Ux=qt((Yre,jx)=>{"use strict";function pI(n){for(var t=new Array(n),e=0;e<n;++e)t[e]=e;return t}jx.exports=pI});var Wx=qt((Xre,qx)=>{qx.exports=function(n){return n!=null&&(Hx(n)||fI(n)||!!n._isBuffer)};function Hx(n){return!!n.constructor&&typeof n.constructor.isBuffer=="function"&&n.constructor.isBuffer(n)}function fI(n){return typeof n.readFloatLE=="function"&&typeof n.slice=="function"&&Hx(n.slice(0,0))}});var Ua=qt((Kre,$x)=>{var hI=Ux(),mI=Wx(),yI=typeof Float64Array<"u";function gI(n,t){return n[0]-t[0]}function xI(){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(gI);var r=new Array(t.length);for(e=0;e<r.length;++e)r[e]=t[e][1];return r}function vI(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(cu[n][0])}var o=["'use strict'"],i=hI(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(","),d=i.map(function(y){return"c"+y}).join(",");o.push("function "+e+"(a,"+l+","+d+",d){this.data=a","this.shape=["+l+"]","this.stride=["+d+"]","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+"]"}),u=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(",")+","+u.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(cu[n],
|
|
3
|
-
`)}function
|
|
4
|
-
`)}function
|
|
1
|
+
var qv=Object.create;var Ws=Object.defineProperty;var Wv=Object.getOwnPropertyDescriptor;var $v=Object.getOwnPropertyNames;var Yv=Object.getPrototypeOf,Xv=Object.prototype.hasOwnProperty;var Kv=(n,t,e)=>t in n?Ws(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),Qv=(n,t)=>{for(var e in t)Ws(n,e,{get:t[e],enumerable:!0})},Zv=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $v(t))!Xv.call(n,o)&&o!==e&&Ws(n,o,{get:()=>t[o],enumerable:!(r=Wv(t,o))||r.enumerable});return n};var Rt=(n,t,e)=>(e=n!=null?qv(Yv(n)):{},Zv(t||!n||!n.__esModule?Ws(e,"default",{value:n,enumerable:!0}):e,n));var yt=(n,t,e)=>(Kv(n,typeof t!="symbol"?t+"":t,e),e);var Ly=qt((Zu,Dy)=>{(function(n,t){typeof Zu=="object"?Dy.exports=t():typeof define=="function"&&define.amd?define(t):n.Alea=t()})(Zu,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 d=function(){var c=2091639*r+a*23283064365386963e-26;return r=o,o=i,i=c-(a=c|0)};return d.next=d,d.uint32=function(){return d()*4294967296},d.fract53=function(){return d()+(d()*2097152|0)*11102230246251565e-32},d.version="Alea 0.9",d.args=e,d.exportState=function(){return[r,o,i,a]},d.importState=function(c){r=+c[0]||0,o=+c[1]||0,i=+c[2]||0,a=+c[3]||0},d}(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 zy=qt((oc,Gy)=>{(function(n,t){typeof oc=="object"&&typeof Gy<"u"?t(oc):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(oc,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,d,c,u,p,f,h,m,y,g,x=t[0].length,S=t.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],b=[],_=[],A=e==="f"?S:x,v=m=p=0;v<S;v++)b[v]=new Array(A).fill(0);for(v=0;v<x;v++)_[v]=new Array(x).fill(0);var M,O=new Array(x).fill(0);for(v=0;v<S;v++)for(a=0;a<x;a++)b[v][a]=t[v][a];for(v=0;v<x;v++){for(w[v]=p,h=0,l=v+1,a=v;a<S;a++)h+=Math.pow(b[a][v],2);if(h<i)p=0;else for(f=(u=b[v][v])*(p=u<0?Math.sqrt(h):-Math.sqrt(h))-h,b[v][v]=u-p,a=l;a<x;a++){for(h=0,s=v;s<S;s++)h+=b[s][v]*b[s][a];for(u=h/f,s=v;s<S;s++)b[s][a]=b[s][a]+u*b[s][v]}for(O[v]=p,h=0,a=l;a<x;a++)h+=Math.pow(b[v][a],2);if(h<i)p=0;else{for(f=(u=b[v][v+1])*(p=u<0?Math.sqrt(h):-Math.sqrt(h))-h,b[v][v+1]=u-p,a=l;a<x;a++)w[a]=b[v][a]/f;for(a=l;a<S;a++){for(h=0,s=l;s<x;s++)h+=b[a][s]*b[v][s];for(s=l;s<x;s++)b[a][s]=b[a][s]+h*w[s]}}m<(y=Math.abs(O[v])+Math.abs(w[v]))&&(m=y)}if(r)for(v=x-1;0<=v;v--){if(p!==0){for(f=b[v][v+1]*p,a=l;a<x;a++)_[a][v]=b[v][a]/f;for(a=l;a<x;a++){for(h=0,s=l;s<x;s++)h+=b[v][s]*_[s][a];for(s=l;s<x;s++)_[s][a]=_[s][a]+h*_[s][v]}}for(a=l;a<x;a++)_[v][a]=0,_[a][v]=0;_[v][v]=1,p=w[v],l=v}if(e){if(e==="f")for(v=x;v<S;v++){for(a=x;a<S;a++)b[v][a]=0;b[v][v]=1}for(v=x-1;0<=v;v--){for(l=v+1,p=O[v],a=l;a<A;a++)b[v][a]=0;if(p!==0){for(f=b[v][v]*p,a=l;a<A;a++){for(h=0,s=l;s<S;s++)h+=b[s][v]*b[s][a];for(u=h/f,s=v;s<S;s++)b[s][a]=b[s][a]+u*b[s][v]}for(a=v;a<S;a++)b[a][v]=b[a][v]/p}else for(a=v;a<S;a++)b[a][v]=0;b[v][v]=b[v][v]+1}}for(o*=m,s=x-1;0<=s;s--)for(var T=0;T<50;T++){for(M=!1,l=s;0<=l;l--){if(Math.abs(w[l])<=o){M=!0;break}if(Math.abs(O[l-1])<=o)break}if(!M){for(c=0,d=l-(h=1),v=l;v<s+1&&(u=h*w[v],w[v]=c*w[v],!(Math.abs(u)<=o));v++)if(p=O[v],O[v]=Math.sqrt(u*u+p*p),c=p/(f=O[v]),h=-u/f,e)for(a=0;a<S;a++)y=b[a][d],g=b[a][v],b[a][d]=y*c+g*h,b[a][v]=-y*h+g*c}if(g=O[s],l===s){if(g<0&&(O[s]=-g,r))for(a=0;a<x;a++)_[a][s]=-_[a][s];break}for(m=O[l],u=(((y=O[s-1])-g)*(y+g)+((p=w[s-1])-(f=w[s]))*(p+f))/(2*f*y),p=Math.sqrt(u*u+1),u=((m-g)*(m+g)+f*(y/(u<0?u-p:u+p)-f))/m,v=l+(h=c=1);v<s+1;v++){if(p=w[v],y=O[v],f=h*p,p*=c,g=Math.sqrt(u*u+f*f),u=m*(c=u/(w[v-1]=g))+p*(h=f/g),p=-m*h+p*c,f=y*h,y*=c,r)for(a=0;a<x;a++)m=_[a][v-1],g=_[a][v],_[a][v-1]=m*c+g*h,_[a][v]=-m*h+g*c;if(g=Math.sqrt(u*u+f*f),u=(c=u/(O[v-1]=g))*p+(h=f/g)*y,m=-h*p+c*y,e)for(a=0;a<S;a++)y=b[a][v-1],g=b[a][v],b[a][v-1]=y*c+g*h,b[a][v]=-y*h+g*c}w[l]=0,w[s]=u,O[s]=m}for(v=0;v<x;v++)O[v]<o&&(O[v]=0);return{u:b,q:O,v:_}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var xg=qt((Td,Cd)=>{(function(n,t){typeof Td=="object"&&typeof Cd<"u"?Cd.exports=t():typeof define=="function"&&define.amd?define(t):(n=n||self,n.TinyQueue=t())})(Td,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,d=i[l];if(a(s,d)>=0)break;i[r]=d,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 d=(r<<1)+1,c=i[d],u=d+1;if(u<this.length&&a(i[u],c)<0&&(d=u,c=i[u]),a(c,l)>=0)break;i[r]=c,r=d}i[r]=l};function t(e,r){return e<r?-1:e>r?1:0}return n})});var bg=qt((l5,Pd)=>{"use strict";var hc=xg();hc.default&&(hc=hc.default);Pd.exports=vg;Pd.exports.default=vg;function vg(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 d=i-r,c=a-o,u=Math.min(d,c),p=u/2;if(u===0){var f=[r,o];return f.distance=0,f}for(var h=new hc(void 0,dP),m=r;m<i;m+=u)for(var y=o;y<a;y+=u)h.push(new en(m+p,y+p,p,n));var g=fP(n),x=new en(r+d/2,o+c/2,0,n);x.d>g.d&&(g=x);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 en(w.x-p,w.y-p,p,n)),h.push(new en(w.x+p,w.y-p,p,n)),h.push(new en(w.x-p,w.y+p,p,n)),h.push(new en(w.x+p,w.y+p,p,n)),S+=4)}e&&(console.log("num probes: "+S),console.log("best distance: "+g.d));var b=[g.x,g.y];return b.distance=g.d,b}function dP(n,t){return t.max-n.max}function en(n,t,e,r){this.x=n,this.y=t,this.h=e,this.d=pP(n,t,r),this.max=this.d+this.h*Math.SQRT2}function pP(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,d=l-1;s<l;d=s++){var c=a[s],u=a[d];c[1]>t!=u[1]>t&&n<(u[0]-c[0])*(t-c[1])/(u[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,hP(n,t,c,u))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function fP(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],d=o[s],c=l[0]*d[1]-d[0]*l[1];e+=(l[0]+d[0])*c,r+=(l[1]+d[1])*c,t+=c*3}return t===0?new en(o[0][0],o[0][1],0,n):new en(e/t,r/t,0,n)}function hP(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 B0=qt(jc=>{(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 u=this||t;if(c=parseFloat(c),u.ctx||d(),typeof c<"u"&&c>=0&&c<=1){if(u._volume=c,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(c,t.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=u._howls[p]._soundById(f[h]);m&&m._node&&(m._node.volume=m._volume*c)}return u}return u._volume},mute:function(c){var u=this||t;u.ctx||d(),u._muted=c,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(c?0:u._volume,t.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=u._howls[p]._soundById(f[h]);m&&m._node&&(m._node.muted=c?!0:m._muted)}return u},stop:function(){for(var c=this||t,u=0;u<c._howls.length;u++)c._howls[u].stop();return c},unload:function(){for(var c=this||t,u=c._howls.length-1;u>=0;u--)c._howls[u].unload();return c.usingWebAudio&&c.ctx&&typeof c.ctx.close<"u"&&(c.ctx.close(),c.ctx=null,d()),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 u=new Audio;typeof u.oncanplaythrough>"u"&&(c._canPlayEvent="canplay")}catch{c.noAudio=!0}else c.noAudio=!0;try{var u=new Audio;u.muted&&(c.noAudio=!0)}catch{}return c.noAudio||c._setupCodecs(),c},_setupCodecs:function(){var c=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return c}if(!u||typeof u.canPlayType!="function")return c;var p=u.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\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return c._codecs={mp3:!!(!m&&(p||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.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 u=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 x=c.ctx.createBufferSource();x.buffer=c._scratchBuffer,x.connect(c.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof c.ctx.resume=="function"&&c.ctx.resume(),x.onended=function(){x.disconnect(0),c._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var S=0;S<c._howls.length;S++)c._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),c}},_obtainHtml5Audio:function(){var c=this||t;if(c._html5AudioPool.length)return c._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(c){var u=this||t;return c._unlocked&&u._html5AudioPool.push(c),u},_autoSuspend:function(){var c=this;if(!(!c.autoSuspend||!c.ctx||typeof c.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<c._howls.length;u++)if(c._howls[u]._webAudio){for(var p=0;p<c._howls[u]._sounds.length;p++)if(!c._howls[u]._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 u=0;u<c._howls.length;u++)c._howls[u]._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 u=this;if(!c.src||c.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(c)};e.prototype={init:function(c){var u=this;return t.ctx||d(),u._autoplay=c.autoplay||!1,u._format=typeof c.format!="string"?c.format:[c.format],u._html5=c.html5||!1,u._muted=c.mute||!1,u._loop=c.loop||!1,u._pool=c.pool||5,u._preload=typeof c.preload=="boolean"||c.preload==="metadata"?c.preload:!0,u._rate=c.rate||1,u._sprite=c.sprite||{},u._src=typeof c.src!="string"?c.src:[c.src],u._volume=c.volume!==void 0?c.volume:1,u._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},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=c.onend?[{fn:c.onend}]:[],u._onfade=c.onfade?[{fn:c.onfade}]:[],u._onload=c.onload?[{fn:c.onload}]:[],u._onloaderror=c.onloaderror?[{fn:c.onloaderror}]:[],u._onplayerror=c.onplayerror?[{fn:c.onplayerror}]:[],u._onpause=c.onpause?[{fn:c.onpause}]:[],u._onplay=c.onplay?[{fn:c.onplay}]:[],u._onstop=c.onstop?[{fn:c.onstop}]:[],u._onmute=c.onmute?[{fn:c.onmute}]:[],u._onvolume=c.onvolume?[{fn:c.onvolume}]:[],u._onrate=c.onrate?[{fn:c.onrate}]:[],u._onseek=c.onseek?[{fn:c.onseek}]:[],u._onunlock=c.onunlock?[{fn:c.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var c=this,u=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)){u=c._src[p];break}}if(!u){c._emit("loaderror",null,"No codec support for selected audio sources.");return}return c._src=u,c._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(c._html5=!0,c._webAudio=!1),new r(c),c._webAudio&&i(c),c},play:function(c,u){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 u||p._loadQueue("play"),y._id;p._webAudio&&t._autoResume();var x=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-x),w=S*1e3/Math.abs(y._rate),b=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=x,y._start=b,y._stop=_,y._loop=!!(y._loop||p._sprite[c][2])};if(x>=_){p._ended(y);return}var v=y._node;if(p._webAudio){var M=function(){p._playLock=!1,A(),p._refreshBuffer(y);var P=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(P,t.ctx.currentTime),y._playStart=t.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,S):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,S),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),u||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?M():(p._playLock=!0,p.once("resume",M),p._clearTimer(y._id))}else{var O=function(){v.currentTime=x,v.muted=y._muted||p._muted||t._muted||v.muted,v.volume=y._volume*t.volume(),v.playbackRate=y._rate;try{var P=v.play();if(P&&typeof Promise<"u"&&(P instanceof Promise||typeof P.then=="function")?(p._playLock=!0,A(),P.then(function(){p._playLock=!1,v._unlocked=!0,u?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})):u||(p._playLock=!1,A(),p._emit("play",y._id)),v.playbackRate=y._rate,v.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),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(I){p._emit("playerror",y._id,I)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var T=window&&window.ejecta||!v.readyState&&t._navigator.isCocoonJS;if(v.readyState>=3||T)O();else{p._playLock=!0,p._state="loading";var C=function(){p._state="loaded",O(),v.removeEventListener(t._canPlayEvent,C,!1)};v.addEventListener(t._canPlayEvent,C,!1),p._clearTimer(y._id)}}return y._id},pause:function(c){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(c)}}),u;for(var p=u._getSoundIds(c),f=0;f<p.length;f++){u._clearTimer(p[f]);var h=u._soundById(p[f]);if(h&&!h._paused&&(h._seek=u.seek(p[f]),h._rateSeek=0,h._paused=!0,u._stopFade(p[f]),h._node))if(u._webAudio){if(!h._node.bufferSource)continue;typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),u._cleanBuffer(h._node)}else(!isNaN(h._node.duration)||h._node.duration===1/0)&&h._node.pause();arguments[1]||u._emit("pause",h?h._id:null)}return u},stop:function(c,u){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))),u||p._emit("stop",m._id))}return p},mute:function(c,u){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(c,u)}}),p;if(typeof u>"u")if(typeof c=="boolean")p._muted=c;else return p._muted;for(var f=p._getSoundIds(u),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,u=arguments,p,f;if(u.length===0)return c._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=0?f=parseInt(u[0],10):p=parseFloat(u[0])}else u.length>=2&&(p=parseFloat(u[0]),f=parseInt(u[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,u)}}),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,u[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,u,p,f){var h=this;if(h._state!=="loaded"||h._playLock)return h._queue.push({event:"fade",action:function(){h.fade(c,u,p,f)}}),h;c=Math.min(Math.max(0,parseFloat(c)),1),u=Math.min(Math.max(0,parseFloat(u)),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 x=t.ctx.currentTime,S=x+p/1e3;g._volume=c,g._node.gain.setValueAtTime(c,x),g._node.gain.linearRampToValueAtTime(u,S)}h._startFadeInterval(g,c,u,p,m[y],typeof f>"u")}}return h},_startFadeInterval:function(c,u,p,f,h,m){var y=this,g=u,x=p-u,S=Math.abs(x/.01),w=Math.max(4,S>0?f/S:f),b=Date.now();c._fadeTo=p,c._interval=setInterval(function(){var _=(Date.now()-b)/f;b=Date.now(),g+=x*_,g=Math.round(g*100)/100,x<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<u&&g<=p||p>u&&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 u=this,p=u._soundById(c);return p&&p._interval&&(u._webAudio&&p._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(p._interval),p._interval=null,u.volume(p._fadeTo,c),p._fadeTo=null,u._emit("fade",c)),u},loop:function(){var c=this,u=arguments,p,f,h;if(u.length===0)return c._loop;if(u.length===1)if(typeof u[0]=="boolean")p=u[0],c._loop=p;else return h=c._soundById(parseInt(u[0],10)),h?h._loop:!1;else u.length===2&&(p=u[0],f=parseInt(u[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,u=arguments,p,f;if(u.length===0)f=c._sounds[0]._id;else if(u.length===1){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=0?f=parseInt(u[0],10):p=parseFloat(u[0])}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[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,u)}}),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 x=c.seek(f[g]),S=(c._sprite[y._sprite][0]+c._sprite[y._sprite][1])/1e3-x,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,u=arguments,p,f;if(u.length===0)c._sounds.length&&(f=c._sounds[0]._id);else if(u.length===1){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=0?f=parseInt(u[0],10):c._sounds.length&&(f=c._sounds[0]._id,p=parseFloat(u[0]))}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[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,u)}}),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 x=function(){g&&c.play(f,!0),c._emit("seek",f)};if(g&&!c._webAudio){var S=function(){c._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(c._webAudio){var w=c.playing(f)?t.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+w*Math.abs(y._rate))}else return y._node.currentTime;return c},playing:function(c){var u=this;if(typeof c=="number"){var p=u._soundById(c);return p?!p._paused:!1}for(var f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(c){var u=this,p=u._duration,f=u._soundById(c);return f&&(p=u._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var c=this,u=c._sounds,p=0;p<u.length;p++)u[p]._paused||c.stop(u[p]._id),c._webAudio||(c._clearSound(u[p]._node),u[p]._node.removeEventListener("error",u[p]._errorFn,!1),u[p]._node.removeEventListener(t._canPlayEvent,u[p]._loadFn,!1),u[p]._node.removeEventListener("ended",u[p]._endFn,!1),t._releaseHtml5Audio(u[p]._node)),delete u[p]._node,c._clearTimer(u[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,u,p,f){var h=this,m=h["_on"+c];return typeof u=="function"&&m.push(f?{id:p,fn:u,once:f}:{id:p,fn:u}),h},off:function(c,u,p){var f=this,h=f["_on"+c],m=0;if(typeof u=="number"&&(p=u,u=null),u||p)for(m=0;m<h.length;m++){var y=p===h[m].id;if(u===h[m].fn&&y||!u&&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,u,p){var f=this;return f.on(c,u,p,1),f},_emit:function(c,u,p){for(var f=this,h=f["_on"+c],m=h.length-1;m>=0;m--)(!h[m].id||h[m].id===u||c==="load")&&(setTimeout(function(y){y.call(this,u,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 u=this;if(u._queue.length>0){var p=u._queue[0];p.event===c&&(u._queue.shift(),u._loadQueue()),c||p.action()}return u},_ended:function(c){var u=this,p=c._sprite;if(!u._webAudio&&c._node&&!c._node.paused&&!c._node.ended&&c._node.currentTime<c._stop)return setTimeout(u._ended.bind(u,c),100),u;var f=!!(c._loop||u._sprite[p][2]);if(u._emit("end",c._id),!u._webAudio&&f&&u.stop(c._id,!0).play(c._id),u._webAudio&&f){u._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);u._endTimers[c._id]=setTimeout(u._ended.bind(u,c),h)}return u._webAudio&&!f&&(c._paused=!0,c._ended=!0,c._seek=c._start||0,c._rateSeek=0,u._clearTimer(c._id),u._cleanBuffer(c._node),t._autoSuspend()),!u._webAudio&&!f&&u.stop(c._id,!0),u},_clearTimer:function(c){var u=this;if(u._endTimers[c]){if(typeof u._endTimers[c]!="function")clearTimeout(u._endTimers[c]);else{var p=u._soundById(c);p&&p._node&&p._node.removeEventListener("ended",u._endTimers[c],!1)}delete u._endTimers[c]}return u},_soundById:function(c){for(var u=this,p=0;p<u._sounds.length;p++)if(c===u._sounds[p]._id)return u._sounds[p];return null},_inactiveSound:function(){var c=this;c._drain();for(var u=0;u<c._sounds.length;u++)if(c._sounds[u]._ended)return c._sounds[u].reset();return new r(c)},_drain:function(){var c=this,u=c._pool,p=0,f=0;if(!(c._sounds.length<u)){for(f=0;f<c._sounds.length;f++)c._sounds[f]._ended&&p++;for(f=c._sounds.length-1;f>=0;f--){if(p<=u)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 u=this;if(typeof c>"u"){for(var p=[],f=0;f<u._sounds.length;f++)p.push(u._sounds[f]._id);return p}else return[c]},_refreshBuffer:function(c){var u=this;return c._node.bufferSource=t.ctx.createBufferSource(),c._node.bufferSource.buffer=o[u._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),u},_cleanBuffer:function(c){var u=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,u},_clearSound:function(c){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(c.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(c){this._parent=c,this.init()};r.prototype={init:function(){var c=this,u=c._parent;return c._muted=u._muted,c._loop=u._loop,c._volume=u._volume,c._rate=u._rate,c._seek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,u._sounds.push(c),c.create(),c},create:function(){var c=this,u=c._parent,p=t._muted||c._muted||c._parent._muted?0:c._volume;return u._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=u._src,c._node.preload=u._preload===!0?"auto":u._preload,c._node.volume=p*t.volume(),c._node.load()),c},reset:function(){var c=this,u=c._parent;return c._muted=u._muted,c._loop=u._loop,c._volume=u._volume,c._rate=u._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,u=c._parent;u._duration=Math.ceil(c._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),c._node.removeEventListener(t._canPlayEvent,c._loadFn,!1)},_endListener:function(){var c=this,u=c._parent;u._duration===1/0&&(u._duration=Math.ceil(c._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(c)),c._node.removeEventListener("ended",c._endFn,!1)}};var o={},i=function(c){var u=c._src;if(o[u]){c._duration=o[u].duration,l(c);return}if(/^data:[^;]+;base64,/.test(u)){for(var p=atob(u.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,u,!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[u],c.load())},a(m)}},a=function(c){try{c.send()}catch{c.onerror()}},s=function(c,u){var p=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(h){h&&u._sounds.length>0?(o[u._src]=h,l(u,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,u){u&&!c._duration&&(c._duration=u.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())},d=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),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=u?parseInt(u[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 jc<"u"&&(jc.Howler=t,jc.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 d=i._panner;d?(d.coneInnerAngle=l.coneInnerAngle,d.coneOuterAngle=l.coneOuterAngle,d.coneOuterGain=l.coneOuterGain,d.distanceModel=l.distanceModel,d.maxDistance=l.maxDistance,d.refDistance=l.refDistance,d.rolloffFactor=l.rolloffFactor,d.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 Ux=qt(($re,jx)=>{"use strict";function fI(n){for(var t=new Array(n),e=0;e<n;++e)t[e]=e;return t}jx.exports=fI});var Wx=qt((Yre,qx)=>{qx.exports=function(n){return n!=null&&(Hx(n)||hI(n)||!!n._isBuffer)};function Hx(n){return!!n.constructor&&typeof n.constructor.isBuffer=="function"&&n.constructor.isBuffer(n)}function hI(n){return typeof n.readFloatLE=="function"&&typeof n.slice=="function"&&Hx(n.slice(0,0))}});var ja=qt((Xre,$x)=>{var mI=Ux(),yI=Wx(),gI=typeof Float64Array<"u";function xI(n,t){return n[0]-t[0]}function vI(){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(xI);var r=new Array(t.length);for(e=0;e<r.length;++e)r[e]=t[e][1];return r}function bI(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(cu[n][0])}var o=["'use strict'"],i=mI(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(","),d=i.map(function(y){return"c"+y}).join(",");o.push("function "+e+"(a,"+l+","+d+",d){this.data=a","this.shape=["+l+"]","this.stride=["+d+"]","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+"]"}),u=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(",")+","+u.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(cu[n],vI)}function SI(n){if(yI(n))return"buffer";if(gI)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 cu={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],bigint64:[],biguint64:[],buffer:[],generic:[]};function wI(n,t,e,r){if(n===void 0){var d=cu.array[0];return d([])}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=SI(n),l=cu[s];l.length<=o+1;)l.push(bI(s,l.length-1));var d=l[o+1];return d(n,t,e,r)}$x.exports=wI});var Xx=qt((Kre,Yx)=>{"use strict";function _I(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 AI(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 TI(n,t,e){return n.length===0?n:t?(e||n.sort(t),_I(n,t)):(e||n.sort(),AI(n))}Yx.exports=TI});var Zx=qt((Qre,Qx)=>{"use strict";var CI=Xx();function Kx(n,t,e){var r=n.length,o=t.arrayArgs.length,i=t.indexArgs.length>0,a=[],s=[],l=0,d=0,c,u;for(c=0;c<r;++c)s.push(["i",c,"=0"].join(""));for(u=0;u<o;++u)for(c=0;c<r;++c)d=l,l=n[c],c===0?s.push(["d",u,"s",c,"=t",u,"p",l].join("")):s.push(["d",u,"s",c,"=(t",u,"p",l,"-s",d,"*t",u,"p",d,")"].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(d=l,l=n[c],u=0;u<o;++u)a.push(["p",u,"+=d",u,"s",c].join(""));i&&(c>0&&a.push(["index[",d,"]-=s",d].join("")),a.push(["++index[",l,"]"].join(""))),a.push("}")}return a.join(`
|
|
3
|
+
`)}function PI(n,t,e,r){for(var o=t.length,i=e.arrayArgs.length,a=e.blockSize,s=e.indexArgs.length>0,l=[],d=0;d<i;++d)l.push(["var offset",d,"=p",d].join(""));for(var d=n;d<o;++d)l.push(["for(var j"+d+"=SS[",t[d],"]|0;j",d,">0;){"].join("")),l.push(["if(j",d,"<",a,"){"].join("")),l.push(["s",t[d],"=j",d].join("")),l.push(["j",d,"=0"].join("")),l.push(["}else{s",t[d],"=",a].join("")),l.push(["j",d,"-=",a,"}"].join("")),s&&l.push(["index[",t[d],"]=j",d].join(""));for(var d=0;d<i;++d){for(var c=["offset"+d],u=n;u<o;++u)c.push(["j",u,"*t",d,"p",t[u]].join(""));l.push(["p",d,"=(",c.join("+"),")"].join(""))}l.push(Kx(t,e,r));for(var d=n;d<o;++d)l.push("}");return l.join(`
|
|
4
|
+
`)}function OI(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 Up(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"),d="",c=t.arrayArgs.indexOf(a);switch(t.argTypes[a]){case"offset":var u=t.offsetArgIndex.indexOf(a),p=t.offsetArgs[u];c=p.array,d="+q"+u;case"array":d="p"+c+d;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(",d,")"].join("")),r=r.replace(l,f),i.push([h,".set(",d,",",f,")"].join(""))):r=r.replace(l,[h,".get(",d,")"].join("")):r=r.replace(l,[h,"[",d,"]"].join("")):e[c]==="generic"?(o.push(["var ",f,"=",h,".get(",d,")"].join("")),r=r.replace(l,f),s.lvalue&&i.push([h,".set(",d,",",f,")"].join(""))):(o.push(["var ",f,"=",h,"[",d,"]"].join("")),r=r.replace(l,f),s.lvalue&&i.push([h,"[",d,"]=",f].join("")));else{for(var m=[s.name],y=[d],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"),d=y.join("+"),e[c]==="generic")throw new Error("cwise: Generic arrays not supported in combination with blocks!");r=r.replace(l,[h,"[",d,"]"].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
5
|
`),r,i.join(`
|
|
6
6
|
`)].join(`
|
|
7
|
-
`).trim()}function
|
|
7
|
+
`).trim()}function MI(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 II(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=[],d=[],c=[],i=0;i<n.arrayArgs.length;++i){n.arrayBlockIndices[i]<0?(l.push(0),d.push(e),a.push(e),s.push(e+n.arrayBlockIndices[i])):(l.push(n.arrayBlockIndices[i]),d.push(n.arrayBlockIndices[i]+e),a.push(0),s.push(n.arrayBlockIndices[i]));for(var u=[],p=0;p<r[i].length;p++)l[i]<=r[i][p]&&r[i][p]<d[i]&&u.push(r[i][p]-l[i]);c.push(u)}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],x=[],p=0;p<g.offset.length;++p)g.offset[p]!==0&&(g.offset[p]===1?x.push(["t",g.array,"p",p].join("")):x.push([g.offset[p],"*t",g.array,"p",p].join("")));x.length===0?m.push("q"+i+"=0"):m.push(["q",i,"=",x.join("+")].join(""))}var S=CI([].concat(n.pre.thisVars).concat(n.body.thisVars).concat(n.post.thisVars));m=m.concat(S),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(Up(n.pre,n,o));var w=Up(n.body,n,o),b=OI(c);b<e?h.push(PI(b,c[0],n,w)):h.push(Kx(c[0],n,w)),n.post.body.length>3&&h.push(Up(n.post,n,o)),n.debug&&console.log("-----Generated cwise routine for ",t,`:
|
|
8
8
|
`+h.join(`
|
|
9
9
|
`)+`
|
|
10
|
-
----------`);var _=[n.funcName||"unnamed","_cwise_loop_",r[0].join("s"),"m",b,
|
|
11
|
-
`),"} return ",_].join(""));return A()}Qx.exports=
|
|
10
|
+
----------`);var _=[n.funcName||"unnamed","_cwise_loop_",r[0].join("s"),"m",b,MI(o)].join(""),A=new Function(["function ",_,"(",f.join(","),"){",h.join(`
|
|
11
|
+
`),"} return ",_].join(""));return A()}Qx.exports=II});var ev=qt((Zre,Jx)=>{"use strict";var NI=Zx();function EI(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=[],d=0;d<n.arrayArgs.length;++d){var c=n.arrayArgs[d];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"),d>0&&(s.push("array"+n.arrayArgs[0]+".shape.length===array"+c+".shape.length+"+(Math.abs(n.arrayBlockIndices[0])-Math.abs(n.arrayBlockIndices[d]))),l.push("array"+n.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,n.arrayBlockIndices[0])+"]===array"+c+".shape[shapeIndex+"+Math.max(0,n.arrayBlockIndices[d])+"]"))}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 d=0;d<n.scalarArgs.length;++d)a.push("scalar"+n.scalarArgs[d]);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
12
|
`+t.join(`
|
|
13
13
|
`)+`
|
|
14
14
|
----------`);var u=new Function("compile",t.join(`
|
|
15
|
-
`));return u(II.bind(void 0,n))}Jx.exports=NI});var rv=qt((eoe,tv)=>{"use strict";var EI=ev();function LI(){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 DI(n){var t=new LI;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,EI(t)}tv.exports=DI});var Ha=qt(Te=>{"use strict";var er=rv(),uu={body:"",args:[],thisVars:[],localVars:[]};function Hp(n){if(!n)return uu;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 BI(n){return er({args:n.args,pre:Hp(n.pre),body:Hp(n.body),post:Hp(n.proc),funcName:n.funcName})}function Qe(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(BI(n))}var ov={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var n in ov){var t=ov[n];Te[n]=Qe({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"eq"]=Qe({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:n+"eq"}),Te[n+"s"]=Qe({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"seq"]=Qe({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:n+"seq"})}})();var nv={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var n in nv){var t=nv[n];Te[n]=Qe({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:n}),Te[n+"eq"]=Qe({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:n+"eq"})}})();var iv={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};(function(){for(var n in iv){var t=iv[n];Te[n]=Qe({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"s"]=Qe({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"eq"]=Qe({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:n+"eq"}),Te[n+"seq"]=Qe({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:n+"seq"})}})();var av=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];(function(){for(var n=0;n<av.length;++n){var t=av[n];Te[t]=Qe({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"]=Qe({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 sv=["max","min","atan2","pow"];(function(){for(var n=0;n<sv.length;++n){var t=sv[n];Te[t]=Qe({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"]=Qe({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"]=Qe({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"]=Qe({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 lv=["atan2","pow"];(function(){for(var n=0;n<lv.length;++n){var t=lv[n];Te[t+"op"]=Qe({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"]=Qe({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"]=Qe({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"]=Qe({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=er({args:["array"],pre:uu,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=er({args:["array"],pre:uu,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=er({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=er({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=er({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=er({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=er({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=er({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=er({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=er({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=er({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=er({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=Qe({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=Qe({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"});Te.assigns=Qe({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"});Te.equals=er({args:["array","array"],pre:uu,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 Dv=qt((zie,Lv)=>{Lv.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 vN,Loader as bN}from"three";function ef(n){for(let t of Object.keys(n))n[t]===void 0&&delete n[t];return n}function Wt(n,t){return Object.setPrototypeOf(n,t),n}function $s(n){return Array.isArray(n)?n:[n]}function tf(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 Jv=typeof global=="object"&&global&&global.Object===Object&&global,Ys=Jv;var eb=typeof self=="object"&&self&&self.Object===Object&&self,tb=Ys||eb||Function("return this")(),lt=tb;var rb=lt.Symbol,gt=rb;var rf=Object.prototype,ob=rf.hasOwnProperty,nb=rf.toString,Wa=gt?gt.toStringTag:void 0;function ib(n){var t=ob.call(n,Wa),e=n[Wa];try{n[Wa]=void 0;var r=!0}catch{}var o=nb.call(n);return r&&(t?n[Wa]=e:delete n[Wa]),o}var of=ib;var ab=Object.prototype,sb=ab.toString;function lb(n){return sb.call(n)}var nf=lb;var cb="[object Null]",ub="[object Undefined]",af=gt?gt.toStringTag:void 0;function db(n){return n==null?n===void 0?ub:cb:af&&af in Object(n)?of(n):nf(n)}var rr=db;function pb(n){return n!=null&&typeof n=="object"}var Ct=pb;var fb="[object Symbol]";function hb(n){return typeof n=="symbol"||Ct(n)&&rr(n)==fb}var Zn=hb;function mb(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 Xs=mb;var yb=Array.isArray,Ze=yb;var gb=1/0,sf=gt?gt.prototype:void 0,lf=sf?sf.toString:void 0;function cf(n){if(typeof n=="string")return n;if(Ze(n))return Xs(n,cf)+"";if(Zn(n))return lf?lf.call(n):"";var t=n+"";return t=="0"&&1/n==-gb?"-0":t}var uf=cf;function xb(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var or=xb;function vb(n){return n}var df=vb;var bb="[object AsyncFunction]",Sb="[object Function]",wb="[object GeneratorFunction]",_b="[object Proxy]";function Ab(n){if(!or(n))return!1;var t=rr(n);return t==Sb||t==wb||t==bb||t==_b}var Ks=Ab;var Tb=lt["__core-js_shared__"],Qs=Tb;var pf=function(){var n=/[^.]+$/.exec(Qs&&Qs.keys&&Qs.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Cb(n){return!!pf&&pf in n}var ff=Cb;var Pb=Function.prototype,Ob=Pb.toString;function Mb(n){if(n!=null){try{return Ob.call(n)}catch{}try{return n+""}catch{}}return""}var po=Mb;var Ib=/[\\^$.*+?()[\]{}|]/g,Nb=/^\[object .+?Constructor\]$/,Eb=Function.prototype,Lb=Object.prototype,Db=Eb.toString,Bb=Lb.hasOwnProperty,Rb=RegExp("^"+Db.call(Bb).replace(Ib,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Vb(n){if(!or(n)||ff(n))return!1;var t=Ks(n)?Rb:Nb;return t.test(po(n))}var hf=Vb;function Gb(n,t){return n?.[t]}var mf=Gb;function zb(n,t){var e=mf(n,t);return hf(e)?e:void 0}var $t=zb;var kb=$t(lt,"WeakMap"),Zs=kb;var yf=Object.create,Fb=function(){function n(){}return function(t){if(!or(t))return{};if(yf)return yf(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),gf=Fb;function jb(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 xf=jb;function Ub(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var vf=Ub;var Hb=800,qb=16,Wb=Date.now;function $b(n){var t=0,e=0;return function(){var r=Wb(),o=qb-(r-e);if(e=r,o>0){if(++t>=Hb)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var bf=$b;function Yb(n){return function(){return n}}var Sf=Yb;var Xb=function(){try{var n=$t(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Jn=Xb;var Kb=Jn?function(n,t){return Jn(n,"toString",{configurable:!0,enumerable:!1,value:Sf(t),writable:!0})}:df,wf=Kb;var Qb=bf(wf),_f=Qb;function Zb(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Af=Zb;var Jb=9007199254740991,eS=/^(?:0|[1-9]\d*)$/;function tS(n,t){var e=typeof n;return t=t??Jb,!!t&&(e=="number"||e!="symbol"&&eS.test(n))&&n>-1&&n%1==0&&n<t}var ei=tS;function rS(n,t,e){t=="__proto__"&&Jn?Jn(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Js=rS;function oS(n,t){return n===t||n!==n&&t!==t}var ti=oS;var nS=Object.prototype,iS=nS.hasOwnProperty;function aS(n,t,e){var r=n[t];(!(iS.call(n,t)&&ti(r,e))||e===void 0&&!(t in n))&&Js(n,t,e)}var ri=aS;function sS(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?Js(e,s,l):ri(e,s,l)}return e}var Rr=sS;var Tf=Math.max;function lS(n,t,e){return t=Tf(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Tf(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),xf(n,this,s)}}var Cf=lS;var cS=9007199254740991;function uS(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=cS}var oi=uS;function dS(n){return n!=null&&oi(n.length)&&!Ks(n)}var el=dS;var pS=Object.prototype;function fS(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||pS;return n===e}var ni=fS;function hS(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Pf=hS;var mS="[object Arguments]";function yS(n){return Ct(n)&&rr(n)==mS}var yu=yS;var Of=Object.prototype,gS=Of.hasOwnProperty,xS=Of.propertyIsEnumerable,vS=yu(function(){return arguments}())?yu:function(n){return Ct(n)&&gS.call(n,"callee")&&!xS.call(n,"callee")},ii=vS;function bS(){return!1}var Mf=bS;var Ef=typeof exports=="object"&&exports&&!exports.nodeType&&exports,If=Ef&&typeof module=="object"&&module&&!module.nodeType&&module,SS=If&&If.exports===Ef,Nf=SS?lt.Buffer:void 0,wS=Nf?Nf.isBuffer:void 0,_S=wS||Mf,xn=_S;var AS="[object Arguments]",TS="[object Array]",CS="[object Boolean]",PS="[object Date]",OS="[object Error]",MS="[object Function]",IS="[object Map]",NS="[object Number]",ES="[object Object]",LS="[object RegExp]",DS="[object Set]",BS="[object String]",RS="[object WeakMap]",VS="[object ArrayBuffer]",GS="[object DataView]",zS="[object Float32Array]",kS="[object Float64Array]",FS="[object Int8Array]",jS="[object Int16Array]",US="[object Int32Array]",HS="[object Uint8Array]",qS="[object Uint8ClampedArray]",WS="[object Uint16Array]",$S="[object Uint32Array]",qe={};qe[zS]=qe[kS]=qe[FS]=qe[jS]=qe[US]=qe[HS]=qe[qS]=qe[WS]=qe[$S]=!0;qe[AS]=qe[TS]=qe[VS]=qe[CS]=qe[GS]=qe[PS]=qe[OS]=qe[MS]=qe[IS]=qe[NS]=qe[ES]=qe[LS]=qe[DS]=qe[BS]=qe[RS]=!1;function YS(n){return Ct(n)&&oi(n.length)&&!!qe[rr(n)]}var Lf=YS;function XS(n){return function(t){return n(t)}}var ai=XS;var Df=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$a=Df&&typeof module=="object"&&module&&!module.nodeType&&module,KS=$a&&$a.exports===Df,gu=KS&&Ys.process,QS=function(){try{var n=$a&&$a.require&&$a.require("util").types;return n||gu&&gu.binding&&gu.binding("util")}catch{}}(),fo=QS;var Bf=fo&&fo.isTypedArray,ZS=Bf?ai(Bf):Lf,tl=ZS;var JS=Object.prototype,e1=JS.hasOwnProperty;function t1(n,t){var e=Ze(n),r=!e&&ii(n),o=!e&&!r&&xn(n),i=!e&&!r&&!o&&tl(n),a=e||r||o||i,s=a?Pf(n.length,String):[],l=s.length;for(var d in n)(t||e1.call(n,d))&&!(a&&(d=="length"||o&&(d=="offset"||d=="parent")||i&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||ei(d,l)))&&s.push(d);return s}var rl=t1;function r1(n,t){return function(e){return n(t(e))}}var ol=r1;var o1=ol(Object.keys,Object),Rf=o1;var n1=Object.prototype,i1=n1.hasOwnProperty;function a1(n){if(!ni(n))return Rf(n);var t=[];for(var e in Object(n))i1.call(n,e)&&e!="constructor"&&t.push(e);return t}var Vf=a1;function s1(n){return el(n)?rl(n):Vf(n)}var si=s1;function l1(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Gf=l1;var c1=Object.prototype,u1=c1.hasOwnProperty;function d1(n){if(!or(n))return Gf(n);var t=ni(n),e=[];for(var r in n)r=="constructor"&&(t||!u1.call(n,r))||e.push(r);return e}var zf=d1;function p1(n){return el(n)?rl(n,!0):zf(n)}var li=p1;var f1=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,h1=/^\w*$/;function m1(n,t){if(Ze(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Zn(n)?!0:h1.test(n)||!f1.test(n)||t!=null&&n in Object(t)}var kf=m1;var y1=$t(Object,"create"),ho=y1;function g1(){this.__data__=ho?ho(null):{},this.size=0}var Ff=g1;function x1(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var jf=x1;var v1="__lodash_hash_undefined__",b1=Object.prototype,S1=b1.hasOwnProperty;function w1(n){var t=this.__data__;if(ho){var e=t[n];return e===v1?void 0:e}return S1.call(t,n)?t[n]:void 0}var Uf=w1;var _1=Object.prototype,A1=_1.hasOwnProperty;function T1(n){var t=this.__data__;return ho?t[n]!==void 0:A1.call(t,n)}var Hf=T1;var C1="__lodash_hash_undefined__";function P1(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=ho&&t===void 0?C1:t,this}var qf=P1;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=Ff;ci.prototype.delete=jf;ci.prototype.get=Uf;ci.prototype.has=Hf;ci.prototype.set=qf;var xu=ci;function O1(){this.__data__=[],this.size=0}var Wf=O1;function M1(n,t){for(var e=n.length;e--;)if(ti(n[e][0],t))return e;return-1}var Eo=M1;var I1=Array.prototype,N1=I1.splice;function E1(n){var t=this.__data__,e=Eo(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():N1.call(t,e,1),--this.size,!0}var $f=E1;function L1(n){var t=this.__data__,e=Eo(t,n);return e<0?void 0:t[e][1]}var Yf=L1;function D1(n){return Eo(this.__data__,n)>-1}var Xf=D1;function B1(n,t){var e=this.__data__,r=Eo(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var Kf=B1;function ui(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])}}ui.prototype.clear=Wf;ui.prototype.delete=$f;ui.prototype.get=Yf;ui.prototype.has=Xf;ui.prototype.set=Kf;var Lo=ui;var R1=$t(lt,"Map"),Do=R1;function V1(){this.size=0,this.__data__={hash:new xu,map:new(Do||Lo),string:new xu}}var Qf=V1;function G1(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var Zf=G1;function z1(n,t){var e=n.__data__;return Zf(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Bo=z1;function k1(n){var t=Bo(this,n).delete(n);return this.size-=t?1:0,t}var Jf=k1;function F1(n){return Bo(this,n).get(n)}var eh=F1;function j1(n){return Bo(this,n).has(n)}var th=j1;function U1(n,t){var e=Bo(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var rh=U1;function di(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])}}di.prototype.clear=Qf;di.prototype.delete=Jf;di.prototype.get=eh;di.prototype.has=th;di.prototype.set=rh;var vn=di;var H1="Expected a function";function vu(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(H1);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(vu.Cache||vn),e}vu.Cache=vn;var oh=vu;var q1=500;function W1(n){var t=oh(n,function(r){return e.size===q1&&e.clear(),r}),e=t.cache;return t}var nh=W1;var $1=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Y1=/\\(\\)?/g,X1=nh(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace($1,function(e,r,o,i){t.push(o?i.replace(Y1,"$1"):r||e)}),t}),ih=X1;function K1(n){return n==null?"":uf(n)}var ah=K1;function Q1(n,t){return Ze(n)?n:kf(n,t)?[n]:ih(ah(n))}var cr=Q1;var Z1=1/0;function J1(n){if(typeof n=="string"||Zn(n))return n;var t=n+"";return t=="0"&&1/n==-Z1?"-0":t}var Ro=J1;function ew(n,t){t=cr(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Ro(t[e++])];return e&&e==r?n:void 0}var nl=ew;function tw(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var pi=tw;var sh=gt?gt.isConcatSpreadable:void 0;function rw(n){return Ze(n)||ii(n)||!!(sh&&n&&n[sh])}var lh=rw;function ch(n,t,e,r,o){var i=-1,a=n.length;for(e||(e=lh),o||(o=[]);++i<a;){var s=n[i];t>0&&e(s)?t>1?ch(s,t-1,e,r,o):pi(o,s):r||(o[o.length]=s)}return o}var uh=ch;function ow(n){var t=n==null?0:n.length;return t?uh(n,1):[]}var dh=ow;function nw(n){return _f(Cf(n,void 0,dh),n+"")}var il=nw;var iw=ol(Object.getPrototypeOf,Object),fi=iw;var aw="[object Object]",sw=Function.prototype,lw=Object.prototype,ph=sw.toString,cw=lw.hasOwnProperty,uw=ph.call(Object);function dw(n){if(!Ct(n)||rr(n)!=aw)return!1;var t=fi(n);if(t===null)return!0;var e=cw.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&ph.call(e)==uw}var fh=dw;function pw(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 hh=pw;function fw(){this.__data__=new Lo,this.size=0}var mh=fw;function hw(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var yh=hw;function mw(n){return this.__data__.get(n)}var gh=mw;function yw(n){return this.__data__.has(n)}var xh=yw;var gw=200;function xw(n,t){var e=this.__data__;if(e instanceof Lo){var r=e.__data__;if(!Do||r.length<gw-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new vn(r)}return e.set(n,t),this.size=e.size,this}var vh=xw;function hi(n){var t=this.__data__=new Lo(n);this.size=t.size}hi.prototype.clear=mh;hi.prototype.delete=yh;hi.prototype.get=gh;hi.prototype.has=xh;hi.prototype.set=vh;var mi=hi;function vw(n,t){return n&&Rr(t,si(t),n)}var bh=vw;function bw(n,t){return n&&Rr(t,li(t),n)}var Sh=bw;var Th=typeof exports=="object"&&exports&&!exports.nodeType&&exports,wh=Th&&typeof module=="object"&&module&&!module.nodeType&&module,Sw=wh&&wh.exports===Th,_h=Sw?lt.Buffer:void 0,Ah=_h?_h.allocUnsafe:void 0;function ww(n,t){if(t)return n.slice();var e=n.length,r=Ah?Ah(e):new n.constructor(e);return n.copy(r),r}var Ch=ww;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 Ph=_w;function Aw(){return[]}var al=Aw;var Tw=Object.prototype,Cw=Tw.propertyIsEnumerable,Oh=Object.getOwnPropertySymbols,Pw=Oh?function(n){return n==null?[]:(n=Object(n),Ph(Oh(n),function(t){return Cw.call(n,t)}))}:al,yi=Pw;function Ow(n,t){return Rr(n,yi(n),t)}var Mh=Ow;var Mw=Object.getOwnPropertySymbols,Iw=Mw?function(n){for(var t=[];n;)pi(t,yi(n)),n=fi(n);return t}:al,sl=Iw;function Nw(n,t){return Rr(n,sl(n),t)}var Ih=Nw;function Ew(n,t,e){var r=t(n);return Ze(n)?r:pi(r,e(n))}var ll=Ew;function Lw(n){return ll(n,si,yi)}var Ya=Lw;function Dw(n){return ll(n,li,sl)}var cl=Dw;var Bw=$t(lt,"DataView"),ul=Bw;var Rw=$t(lt,"Promise"),dl=Rw;var Vw=$t(lt,"Set"),pl=Vw;var Nh="[object Map]",Gw="[object Object]",Eh="[object Promise]",Lh="[object Set]",Dh="[object WeakMap]",Bh="[object DataView]",zw=po(ul),kw=po(Do),Fw=po(dl),jw=po(pl),Uw=po(Zs),bn=rr;(ul&&bn(new ul(new ArrayBuffer(1)))!=Bh||Do&&bn(new Do)!=Nh||dl&&bn(dl.resolve())!=Eh||pl&&bn(new pl)!=Lh||Zs&&bn(new Zs)!=Dh)&&(bn=function(n){var t=rr(n),e=t==Gw?n.constructor:void 0,r=e?po(e):"";if(r)switch(r){case zw:return Bh;case kw:return Nh;case Fw:return Eh;case jw:return Lh;case Uw:return Dh}return t});var mo=bn;var Hw=Object.prototype,qw=Hw.hasOwnProperty;function Ww(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&qw.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Rh=Ww;var $w=lt.Uint8Array,gi=$w;function Yw(n){var t=new n.constructor(n.byteLength);return new gi(t).set(new gi(n)),t}var xi=Yw;function Xw(n,t){var e=t?xi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Vh=Xw;var Kw=/\w*$/;function Qw(n){var t=new n.constructor(n.source,Kw.exec(n));return t.lastIndex=n.lastIndex,t}var Gh=Qw;var zh=gt?gt.prototype:void 0,kh=zh?zh.valueOf:void 0;function Zw(n){return kh?Object(kh.call(n)):{}}var Fh=Zw;function Jw(n,t){var e=t?xi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var jh=Jw;var e_="[object Boolean]",t_="[object Date]",r_="[object Map]",o_="[object Number]",n_="[object RegExp]",i_="[object Set]",a_="[object String]",s_="[object Symbol]",l_="[object ArrayBuffer]",c_="[object DataView]",u_="[object Float32Array]",d_="[object Float64Array]",p_="[object Int8Array]",f_="[object Int16Array]",h_="[object Int32Array]",m_="[object Uint8Array]",y_="[object Uint8ClampedArray]",g_="[object Uint16Array]",x_="[object Uint32Array]";function v_(n,t,e){var r=n.constructor;switch(t){case l_:return xi(n);case e_:case t_:return new r(+n);case c_:return Vh(n,e);case u_:case d_:case p_:case f_:case h_:case m_:case y_:case g_:case x_:return jh(n,e);case r_:return new r;case o_:case a_:return new r(n);case n_:return Gh(n);case i_:return new r;case s_:return Fh(n)}}var Uh=v_;function b_(n){return typeof n.constructor=="function"&&!ni(n)?gf(fi(n)):{}}var Hh=b_;var S_="[object Map]";function w_(n){return Ct(n)&&mo(n)==S_}var qh=w_;var Wh=fo&&fo.isMap,__=Wh?ai(Wh):qh,$h=__;var A_="[object Set]";function T_(n){return Ct(n)&&mo(n)==A_}var Yh=T_;var Xh=fo&&fo.isSet,C_=Xh?ai(Xh):Yh,Kh=C_;var P_=1,O_=2,M_=4,Qh="[object Arguments]",I_="[object Array]",N_="[object Boolean]",E_="[object Date]",L_="[object Error]",Zh="[object Function]",D_="[object GeneratorFunction]",B_="[object Map]",R_="[object Number]",Jh="[object Object]",V_="[object RegExp]",G_="[object Set]",z_="[object String]",k_="[object Symbol]",F_="[object WeakMap]",j_="[object ArrayBuffer]",U_="[object DataView]",H_="[object Float32Array]",q_="[object Float64Array]",W_="[object Int8Array]",$_="[object Int16Array]",Y_="[object Int32Array]",X_="[object Uint8Array]",K_="[object Uint8ClampedArray]",Q_="[object Uint16Array]",Z_="[object Uint32Array]",Ue={};Ue[Qh]=Ue[I_]=Ue[j_]=Ue[U_]=Ue[N_]=Ue[E_]=Ue[H_]=Ue[q_]=Ue[W_]=Ue[$_]=Ue[Y_]=Ue[B_]=Ue[R_]=Ue[Jh]=Ue[V_]=Ue[G_]=Ue[z_]=Ue[k_]=Ue[X_]=Ue[K_]=Ue[Q_]=Ue[Z_]=!0;Ue[L_]=Ue[Zh]=Ue[F_]=!1;function fl(n,t,e,r,o,i){var a,s=t&P_,l=t&O_,d=t&M_;if(e&&(a=o?e(n,r,o,i):e(n)),a!==void 0)return a;if(!or(n))return n;var c=Ze(n);if(c){if(a=Rh(n),!s)return vf(n,a)}else{var u=mo(n),p=u==Zh||u==D_;if(xn(n))return Ch(n,s);if(u==Jh||u==Qh||p&&!o){if(a=l||p?{}:Hh(n),!s)return l?Ih(n,Sh(a,n)):Mh(n,bh(a,n))}else{if(!Ue[u])return o?n:{};a=Uh(n,u,s)}}i||(i=new mi);var f=i.get(n);if(f)return f;i.set(n,a),Kh(n)?n.forEach(function(y){a.add(fl(y,t,e,y,n,i))}):$h(n)&&n.forEach(function(y,g){a.set(g,fl(y,t,e,g,n,i))});var h=d?l?cl:Ya:l?li:si,m=c?void 0:h(n);return Af(m||n,function(y,g){m&&(g=y,y=n[g]),ri(a,g,fl(y,t,e,g,n,i))}),a}var hl=fl;var J_=1,eA=4;function tA(n){return hl(n,J_|eA)}var yo=tA;var rA="__lodash_hash_undefined__";function oA(n){return this.__data__.set(n,rA),this}var em=oA;function nA(n){return this.__data__.has(n)}var tm=nA;function ml(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new vn;++t<e;)this.add(n[t])}ml.prototype.add=ml.prototype.push=em;ml.prototype.has=tm;var rm=ml;function iA(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 om=iA;function aA(n,t){return n.has(t)}var nm=aA;var sA=1,lA=2;function cA(n,t,e,r,o,i){var a=e&sA,s=n.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var d=i.get(n),c=i.get(t);if(d&&c)return d==t&&c==n;var u=-1,p=!0,f=e&lA?new rm:void 0;for(i.set(n,t),i.set(t,n);++u<s;){var h=n[u],m=t[u];if(r)var y=a?r(m,h,u,t,n,i):r(h,m,u,n,t,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!om(t,function(g,x){if(!nm(f,x)&&(h===g||o(h,g,e,r,i)))return f.push(x)})){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 yl=cA;function uA(n){var t=-1,e=Array(n.size);return n.forEach(function(r,o){e[++t]=[o,r]}),e}var im=uA;function dA(n){var t=-1,e=Array(n.size);return n.forEach(function(r){e[++t]=r}),e}var am=dA;var pA=1,fA=2,hA="[object Boolean]",mA="[object Date]",yA="[object Error]",gA="[object Map]",xA="[object Number]",vA="[object RegExp]",bA="[object Set]",SA="[object String]",wA="[object Symbol]",_A="[object ArrayBuffer]",AA="[object DataView]",sm=gt?gt.prototype:void 0,bu=sm?sm.valueOf:void 0;function TA(n,t,e,r,o,i,a){switch(e){case AA:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case _A:return!(n.byteLength!=t.byteLength||!i(new gi(n),new gi(t)));case hA:case mA:case xA:return ti(+n,+t);case yA:return n.name==t.name&&n.message==t.message;case vA:case SA:return n==t+"";case gA:var s=im;case bA:var l=r&pA;if(s||(s=am),n.size!=t.size&&!l)return!1;var d=a.get(n);if(d)return d==t;r|=fA,a.set(n,t);var c=yl(s(n),s(t),r,o,i,a);return a.delete(n),c;case wA:if(bu)return bu.call(n)==bu.call(t)}return!1}var lm=TA;var CA=1,PA=Object.prototype,OA=PA.hasOwnProperty;function MA(n,t,e,r,o,i){var a=e&CA,s=Ya(n),l=s.length,d=Ya(t),c=d.length;if(l!=c&&!a)return!1;for(var u=l;u--;){var p=s[u];if(!(a?p in t:OA.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;++u<l;){p=s[u];var g=n[p],x=t[p];if(r)var S=a?r(x,g,p,t,n,i):r(g,x,p,n,t,i);if(!(S===void 0?g===x||o(g,x,e,r,i):S)){m=!1;break}y||(y=p=="constructor")}if(m&&!y){var w=n.constructor,b=t.constructor;w!=b&&"constructor"in n&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof b=="function"&&b instanceof b)&&(m=!1)}return i.delete(n),i.delete(t),m}var cm=MA;var IA=1,um="[object Arguments]",dm="[object Array]",gl="[object Object]",NA=Object.prototype,pm=NA.hasOwnProperty;function EA(n,t,e,r,o,i){var a=Ze(n),s=Ze(t),l=a?dm:mo(n),d=s?dm:mo(t);l=l==um?gl:l,d=d==um?gl:d;var c=l==gl,u=d==gl,p=l==d;if(p&&xn(n)){if(!xn(t))return!1;a=!0,c=!1}if(p&&!c)return i||(i=new mi),a||tl(n)?yl(n,t,e,r,o,i):lm(n,t,l,e,r,o,i);if(!(e&IA)){var f=c&&pm.call(n,"__wrapped__"),h=u&&pm.call(t,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?t.value():t;return i||(i=new mi),o(m,y,e,r,i)}}return p?(i||(i=new mi),cm(n,t,e,r,o,i)):!1}var fm=EA;function hm(n,t,e,r,o){return n===t?!0:n==null||t==null||!Ct(n)&&!Ct(t)?n!==n&&t!==t:fm(n,t,e,r,hm,o)}var mm=hm;function LA(n,t){return n!=null&&t in Object(n)}var ym=LA;function DA(n,t,e){t=cr(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var a=Ro(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&&oi(o)&&ei(a,o)&&(Ze(n)||ii(n)))}var gm=DA;function BA(n,t){return n!=null&&gm(n,t,ym)}var xm=BA;function RA(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var vm=RA;function VA(n,t){return t.length<2?n:nl(n,hh(t,0,-1))}var bm=VA;function GA(n,t){return mm(n,t)}var Su=GA;function zA(n,t){return t=cr(t,n),n=bm(n,t),n==null||delete n[Ro(vm(t))]}var Sm=zA;function kA(n){return fh(n)?void 0:n}var wm=kA;var FA=1,jA=2,UA=4,HA=il(function(n,t){var e={};if(n==null)return e;var r=!1;t=Xs(t,function(i){return i=cr(i,n),r||(r=i.length>1),i}),Rr(n,cl(n),e),r&&(e=hl(e,FA|jA|UA,wm));for(var o=t.length;o--;)Sm(e,t[o]);return e}),vi=HA;function qA(n,t,e,r){if(!or(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=Ro(t[o]),d=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var c=s[l];d=r?r(c,l,s):void 0,d===void 0&&(d=or(c)?c:ei(t[o+1])?[]:{})}ri(s,l,d),s=s[l]}return n}var _m=qA;function WA(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],s=nl(n,a);e(s,a)&&_m(i,cr(a,n),s)}return i}var Am=WA;function $A(n,t){return Am(n,t,function(e,r){return xm(n,r)})}var Tm=$A;var YA=il(function(n,t){return n==null?{}:Tm(n,t)}),xr=YA;var he=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,he.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,he.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,he.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function Xa(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"&&Xa(r)}return Object.freeze(n)}function Cm(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 bi=class extends Error{};function xl(n){let t={...n};return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Vr(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 Si(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 Pm(){return typeof process<"u"}function Om(n,t){for(let e of n)t(e.id,e.data)!==!0&&Om(e.children,t)}function Mm(n,t){if(t(n.id,n.data)!==!0)for(let e of n.children)Mm(e,t)}var $e=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,$e.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Xa(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&&Mm(o,r)}}traverse(e){Om(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 d=i.findIndex(c=>c.id===l);if(d<0)throw new Error;i=[...i],i[d]={...i[d],children:s}}Object.setPrototypeOf(i,$e.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,d=this.childrenArray(l),c={fi:o,id:i,data:a,children:s};return d=[...d,c],d.sort((p,f)=>p.fi-f.fi),e.localIndex=d.indexOf(c),{data:this.modifyArrayBy(l,d),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(d=>d.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 bi("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),d=l.findIndex(f=>f.id===i);l=[...l];let c=l.splice(d,1)[0],u=this.modifyArrayBy(a,l);a=r,l=u.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),u=u.modifyArrayBy(a,l),{data:u,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)=>Cm(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 Vr(0,o,o);{let a=i[0].fi;return Vr(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 Vr(l,l+o,o)}else return Vr(a.fi,s.fi,o)}}};var wi;(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 d=parseInt(l);if(isNaN(d))throw new Error("wrong index");i[l]=a[d],a[d]=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 d=o[l];d===void 0?delete a[l]:a[l]=d,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(wi||(wi={}));var ye=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ye.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Xa(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(d=>d.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,ye.prototype);let r=e;return Pm()||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((d,c)=>d.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,u)=>c.fi-u.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 Vr(0,r,r);{let i=o[0].fi;return Vr(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 Vr(s,s+r,r)}else return Vr(i.fi,a.fi,r)}}};function _i(n){return n&&typeof n=="object"&&n instanceof ke}var ke=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&&!_i(r))return null;o+=1}r=r?xl(r):new ke;for(let[l,d]of Object.entries(t.props)){let c=r[l];i[l]=c,d===void 0?delete r[l]:r[l]=d}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=xl(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let d=xl(l);d[t.path[o-1]]=r,r=d}else{let d=new ke;d[t.path[o-1]]=r,r=d}}o-=1}let a=Object.setPrototypeOf(r,ke.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},Gr;(r=>{function n(o,i){return Ka(o,i)??o}r.apply=n;function t(o,i){return _u(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=ot.zoomOnce(l,s[a]),l===void 0)return i;if(!_i(l))return;a+=1}if(l===void 0)return i;if(!!_i(l))if(i.type===0){let d={...i.props};for(let c of Object.keys(l))delete d[c];return{...i,props:d}}else if(i.type===1||i.type===4||i.type===7){let d=wu([i],l);return d?(console.log(d),d):i}else return i}r.filterOp=e})(Gr||(Gr={}));function wu(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=Ka(o.data,t[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=wu(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 XA(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=Ka(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 Ka(n,t){if(!_i(t))return t;if(n instanceof $e){let e=wu(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ye)return XA(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let a=Ka(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 ke)return _u(n,t);if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let a=Ka(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 _u(n,t){if(n===void 0)return t;if(t===void 0)return n;if(!_i(t))return t;if(!_i(n))return Gr.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 ke;for(let o of e){let i=_u(n===void 0?void 0:n[o],t===void 0?void 0:t[o]);r[o]=i}return r}function Im(n,t){let e={cur:[],result:[],len:0};return n=Qa(n,t,e)??n,[n,e.result]}function vl(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function bl(n){n&&(n.len-=1)}function KA(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Nm(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=Qa(i.data,t,vl(e,a));bl(e),r=r||l!==void 0,l===void 0&&(l=i.data);let d=Nm(i.children,t,e);return d!==void 0?r=!0:d=i.children,{...i,id:a,data:l,children:d}});if(r)return o}function QA(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=Qa(i.data,t,vl(e,a));return bl(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 Qa(n,t,e){if(n instanceof $e){let r=Nm(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof ye)return QA(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,a)=>{let s=Qa(i,t,vl(e,a));return bl(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"&&!Si(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=Qa(a,t,vl(e,i));bl(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&&KA(e),r}else return}}var Sl;(t=>{function n(e,r){let o=ot.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})(Sl||(Sl={}));var nt;(s=>{function n(l,d){return{...l,path:l.path.slice(d)}}s.drop=n;function t(l,d){return e(l,d)?.data??l}s.applySimple=t;function e(l,d){let c=d.path;for(var u=[];;){let p;if(l instanceof ke&&d.type===0&&(p=l.runOp({...d,path:c.slice(u.length)}),p===null&&(p=void 0)),p===void 0&&u.length===c.length&&(l instanceof $e||l instanceof ye||l instanceof he?p=l.runOp(d):p=wi.runOp(l,d)),p!==void 0)if(p!==null){let m=p.data;for(let y=u.length-1;y>=0;y--){let g=c[y],x=u[y];if(x instanceof $e){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof ye){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof he){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof ke){let S={...x,[g]:m};m=Object.setPrototypeOf(S,ke.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let S=m;m=[...x],m[g]=S}else m={...x,[g]:m};else return null}return{data:m,actual:{...p.actual,path:c},reverse:{...p.reverse,path:c}}}else return null;let f=c[u.length],h;if(l instanceof $e){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof ye){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)u.push(l),l=h;else return null}}s.apply=e;function r(l,d){for(let c=0;c<l.length&&c<d.length;c++)if(l[c]!==d[c])return!0;return!1}s.pathDisjoint=r;function o(l,d){if(l.length!==d.length)return!1;for(let c=0;c<l.length;c++)if(l[c]!==d[c])return!1;return!0}s.pathEq=o;function i(l,d){return r(l.path,d.path)}s.commutative=i;function a(l,d){return l.type===0&&d.type===0&&o(l.path,d.path)?Object.keys(l.props).every(c=>d.props[c]!==void 0):!1}s.subsumed=a})(nt||(nt={}));var Za;(l=>{function n(){return[]}l.empty=n;function t(d,c){let u=[];for(let p of d){let[f,...h]=p.path;f===c&&u.push({...p,path:h})}return u}l.removePrefix=t;function e(d,c){return d.map(u=>({...u,path:[c,...u.path]}))}l.addPrefix=e;function r(d,c){return[...d,...c]}l.concat=r;function o(d,c){return[...d.filter(p=>!c.some(f=>nt.subsumed(p,f))),...c]}l.compress=o;function i(d,c){return d.every(u=>c.every(p=>nt.commutative(u,p)))}l.commutative=i;function a(d,c){for(let u of c){let p=s(d,u);p!==null&&(d=p.data)}return d}l.applyAll=a;function s(d,c){var u=d;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=ot.zoom(u,[...h.path,h.id]),g=nt.apply(u,{...h,type:2})):(m=ot.zoom(u,[...h.path,h.id,"value"]),g=nt.apply(u,h)),g!==null){u=g.data;let[x,S]=Im(u,{[h.id]:m});u=x;for(let w=0;w<S.length;w++){let b=S[w],_=b.pop();if(typeof _=="number"){let A=[_];for(let M=w+1;M<S.length;M++){let O=S[M],T=O[O.length-1];if(typeof T=="number"&&ot.equal(b,O.slice(0,O.length-1)))A.push(T),S.splice(M,1);else break}let v=ot.zoom(u,b);y=v.map((M,O)=>A.includes(O)?h.id:M),m=v,_=b.pop()}else{if(_==="alphaOverride"||_==="alpha"){m/=100;let A=m,v=ot.zoom(u,b.slice(0,b.length-2)),M=v.layers.map(O=>O.id===b[b.length-1]?{...O,data:{...O.data,[_]:A}}:O);Object.setPrototypeOf(M,Object.getPrototypeOf(v.layers)),v.layers=M}y=h.id}p.push({type:0,path:b,props:{[_]:m}}),f.push({type:0,path:b,props:{[_]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let m=nt.apply(u,h);m!==null&&(p.push(m.actual),u=m.data,f.push(m.reverse))}}catch(m){if(m instanceof bi)return null;throw m}return{data:u,actual:p,reverse:f.reverse()}}l.apply=s})(Za||(Za={}));var Em=Symbol(),ZA=Symbol(),_l=Symbol(),Sn=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof wl);){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[_l];r&&r(),delete this._children[t]}}}},Tu=class extends Sn{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,wi.runOp(this._current,t),t.path)}},Cu=class extends Sn{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,he.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Lm={get(n,t){if(t===_l)return()=>{n._parent=null};if(t===Em)return n._current;if(t===ZA)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=Al(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]}}},JA={...Lm,set(n,t,e){let r={type:0,props:{[t]:Ye(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}},eT={...Lm,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}},Ai=class extends Sn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[_l]=()=>{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=Al(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)}},Ti=class extends Sn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[_l]=()=>{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=Al(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 Au(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&ot.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var wl=class extends Sn{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){Au(this.ts,e,t),Au(this.actual,r,t),Au(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Al(n,t,e){return e instanceof $e?new Ai(n,t,e):e instanceof ye?new Ti(n,t,e):e instanceof he?new Proxy(new Cu(n,t,e),eT):e!==null&&typeof e=="object"?Si(e)?e:new Proxy(new Tu(n,t,e),JA):e}function Pu(n){let t=new wl(n);return[Al(t,"",n),t]}function Vo(n,t){let[e,r]=Pu(n);return t(e),r.result()}function Ye(n){return n instanceof Ai||n instanceof Ti?n._current:n!==null&&typeof n=="object"?n[Em]:n}var ot;(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 d={...a};return Object.keys(l).forEach(c=>{delete d[c]}),d}else return a}o.removeOverridden=t;function e(i,a){if((i instanceof $e||i instanceof Ai)&&typeof a=="string")return i.data(a);if((i instanceof ye||i instanceof Ti)&&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})(ot||(ot={}));function Dm(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 Dt(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 Tl=class{},Ja=class extends Tl{constructor(e){super();this.id=e}},es=class extends Tl{constructor(e){super();this.data=e}};var Mu;try{Mu=new TextDecoder}catch{}var re,zo,E=0;var jm=[],Iu=jm,Nu=0,Yt={},Le,Go,ur=0,zr=0,nr,go,Vt=[],Be,Bm={useRecords:!1,mapsAsObjects:!0},ts=class{},Lu=new ts;Lu.name="MessagePack 0xC1";var Ci=!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 $m(()=>(Pl(),this?this.unpack(t,e):kr.prototype.unpack.call(Bm,t,e)));zo=e>-1?e:t.length,E=0,Nu=0,zr=0,Go=null,Iu=jm,nr=null,re=t;try{Be=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(Yt=this,this.structures)return Le=this.structures,Cl();(!Le||Le.length>0)&&(Le=[])}else Yt=Bm,(!Le||Le.length>0)&&(Le=[]);return Cl()}unpackMultiple(t,e){let r,o=0;try{Ci=!0;let i=t.length,a=this?this.unpack(t,i):Il.unpack(t,i);if(e){for(e(a);E<i;)if(o=E,e(Cl())===!1)return}else{for(r=[a];E<i;)o=E,r.push(Cl());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Ci=!1,Pl()}}_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 Cl(){try{if(!Yt.trusted&&!Ci){let t=Le.sharedLength||0;t<Le.length&&(Le.length=t)}let n=Je();if(E==zo)Le.restoreStructures&&Rm(),Le=null,re=null,go&&(go=null);else if(E>zo){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ci)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Le.restoreStructures&&Rm(),Pl(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Rm(){for(let n in Le.restoreStructures)Le[n]=Le.restoreStructures[n];Le.restoreStructures=null}function Je(){let n=re[E++];if(n<160)if(n<128){if(n<64)return n;{let t=Le[n&63]||Yt.getStructures&&Um()[n&63];return t?(t.read||(t.read=Du(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,Yt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[qm()]=Je();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Je(),Je());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Je();return t}else if(n<192){let t=n-160;if(zr>=E)return Go.slice(E-ur,(E+=t)-ur);if(zr==0&&zo<140){let e=t<16?Bu(t):Hm(t);if(e!=null)return e}return Eu(t)}else{let t;switch(n){case 192:return null;case 193:return nr?(t=Je(),t>0?nr[1].slice(nr.position1,nr.position1+=t):nr[0].slice(nr.position0,nr.position0-=t)):Lu;case 194:return!1;case 195:return!0;case 196:return Ou(re[E++]);case 197:return t=Be.getUint16(E),E+=2,Ou(t);case 198:return t=Be.getUint32(E),E+=4,Ou(t);case 199:return wn(re[E++]);case 200:return t=Be.getUint16(E),E+=2,wn(t);case 201:return t=Be.getUint32(E),E+=4,wn(t);case 202:if(t=Be.getFloat32(E),Yt.useFloat32>2){let e=Ml[(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=Be.getFloat64(E),E+=8,t;case 204:return re[E++];case 205:return t=Be.getUint16(E),E+=2,t;case 206:return t=Be.getUint32(E),E+=4,t;case 207:return Yt.int64AsNumber?(t=Be.getUint32(E)*4294967296,t+=Be.getUint32(E+4)):t=Be.getBigUint64(E),E+=8,t;case 208:return Be.getInt8(E++);case 209:return t=Be.getInt16(E),E+=2,t;case 210:return t=Be.getInt32(E),E+=4,t;case 211:return Yt.int64AsNumber?(t=Be.getInt32(E)*4294967296,t+=Be.getUint32(E+4)):t=Be.getBigInt64(E),E+=8,t;case 212:if(t=re[E++],t==114)return Fm(re[E++]&63);{let e=Vt[t];if(e)return e.read?(E++,e.read(Je())):e.noBuffer?(E++,e()):e(re.subarray(E,++E));throw new Error("Unknown extension "+t)}case 213:return t=re[E],t==114?(E++,Fm(re[E++]&63,re[E++])):wn(2);case 214:return wn(4);case 215:return wn(8);case 216:return wn(16);case 217:return t=re[E++],zr>=E?Go.slice(E-ur,(E+=t)-ur):rT(t);case 218:return t=Be.getUint16(E),E+=2,zr>=E?Go.slice(E-ur,(E+=t)-ur):oT(t);case 219:return t=Be.getUint32(E),E+=4,zr>=E?Go.slice(E-ur,(E+=t)-ur):nT(t);case 220:return t=Be.getUint16(E),E+=2,Gm(t);case 221:return t=Be.getUint32(E),E+=4,Gm(t);case 222:return t=Be.getUint16(E),E+=2,zm(t);case 223:return t=Be.getUint32(E),E+=4,zm(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 tT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Du(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>tT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Je);return n.highByte===0&&(n.read=Vm(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let a=n[o];r[a]=Je()}return r}return e.count=0,n.highByte===0?Vm(t,e):e}var Vm=(n,t)=>function(){let e=re[E++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=Le[r]||Um()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Du(o,n)),o.read()};function Um(){let n=$m(()=>(re=null,Yt.getStructures()));return Le=Yt._mergeStructures(n,Le)}var Eu=Ol,rT=Ol,oT=Ol,nT=Ol;function Ol(n){let t;if(n<16&&(t=Bu(n)))return t;if(n>64&&Mu)return Mu.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+=xt.apply(String,r),r.length=0)}return r.length>0&&(t+=xt.apply(String,r)),t}function Gm(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Je();return t}function zm(n){if(Yt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[qm()]=Je();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Je(),Je());return t}}var xt=String.fromCharCode;function Hm(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 xt.apply(String,e)}function Bu(n){if(n<4)if(n<2){if(n===0)return"";{let t=re[E++];if((t&128)>1){E-=1;return}return xt(t)}}else{let t=re[E++],e=re[E++];if((t&128)>0||(e&128)>0){E-=2;return}if(n<3)return xt(t,e);let r=re[E++];if((r&128)>0){E-=3;return}return xt(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 xt(t,e,r,o);{let i=re[E++];if((i&128)>0){E-=5;return}return xt(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 xt(t,e,r,o,i,a);let s=re[E++];if((s&128)>0){E-=7;return}return xt(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 xt(t,e,r,o,i,a,s,l);{let d=re[E++];if((d&128)>0){E-=9;return}return xt(t,e,r,o,i,a,s,l,d)}}else if(n<12){let d=re[E++],c=re[E++];if((d&128)>0||(c&128)>0){E-=10;return}if(n<11)return xt(t,e,r,o,i,a,s,l,d,c);let u=re[E++];if((u&128)>0){E-=11;return}return xt(t,e,r,o,i,a,s,l,d,c,u)}else{let d=re[E++],c=re[E++],u=re[E++],p=re[E++];if((d&128)>0||(c&128)>0||(u&128)>0||(p&128)>0){E-=12;return}if(n<14){if(n===12)return xt(t,e,r,o,i,a,s,l,d,c,u,p);{let f=re[E++];if((f&128)>0){E-=13;return}return xt(t,e,r,o,i,a,s,l,d,c,u,p,f)}}else{let f=re[E++],h=re[E++];if((f&128)>0||(h&128)>0){E-=14;return}if(n<15)return xt(t,e,r,o,i,a,s,l,d,c,u,p,f,h);let m=re[E++];if((m&128)>0){E-=15;return}return xt(t,e,r,o,i,a,s,l,d,c,u,p,f,h,m)}}}}}function Ou(n){return Yt.copyBuffers?Uint8Array.prototype.slice.call(re,E,E+=n):re.subarray(E,E+=n)}function wn(n){let t=re[E++];if(Vt[t])return Vt[t](re.subarray(E,E+=n));throw new Error("Unknown extension type "+t)}var km=new Array(4096);function qm(){let n=re[E++];if(n>=160&&n<192){if(n=n-160,zr>=E)return Go.slice(E-ur,(E+=n)-ur);if(!(zr==0&&zo<180))return Eu(n)}else return E--,Je();let t=(n<<5^(n>1?Be.getUint16(E):n>0?re[E]:0))&4095,e=km[t],r=E,o=E+n-3,i,a=0;if(e&&e.bytes==n){for(;r<o;){if(i=Be.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=[],km[t]=e,e.bytes=n;r<o;)i=Be.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=re[r++],e.push(i);let s=n<16?Bu(n):Hm(n);return s!=null?e.string=s:e.string=Eu(n)}var Fm=(n,t)=>{var e=Je();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=Le[n];return o&&o.isShared&&((Le.restoreStructures||(Le.restoreStructures=[]))[n]=o),Le[n]=e,e.read=Du(e,r),e.read()},Wm=typeof self=="object"?self:global;Vt[0]=()=>{};Vt[0].noBuffer=!0;Vt[101]=()=>{let n=Je();return(Wm[n[0]]||Error)(n[1])};Vt[105]=n=>{let t=Be.getUint32(E-4);go||(go=new Map);let e=re[E],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};go.set(t,o);let i=Je();return o.used?Object.assign(r,i):(o.target=i,i)};Vt[112]=n=>{let t=Be.getUint32(E-4),e=go.get(t);return e.used=!0,e.target};Vt[115]=()=>new Set(Je());var Ru=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Vt[116]=n=>{let t=n[0],e=Ru[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Wm[e](Uint8Array.prototype.slice.call(n,1).buffer)};Vt[120]=()=>{let n=Je();return new RegExp(n[0],n[1])};Vt[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=E;E+=t-4,nr=[Je(),Je()],nr.position0=0,nr.position1=0;let r=E;E=e;try{return Je()}finally{E=r}};Vt[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 $m(n){let t=zo,e=E,r=Nu,o=ur,i=zr,a=Go,s=Iu,l=go,d=nr,c=new Uint8Array(re.slice(0,zo)),u=Le,p=Le.slice(0,Le.length),f=Yt,h=Ci,m=n();return zo=t,E=e,Nu=r,ur=o,zr=i,Go=a,Iu=s,go=l,nr=d,re=c,Ci=h,Le=u,Le.splice(0,Le.length,...p),Yt=f,Be=new DataView(re.buffer,re.byteOffset,re.byteLength),m}function Pl(){re=null,go=null,Le=null}function Ym(n){n.unpack?Vt[n.type]=n.unpack:Vt[n.type]=n}var Ml=new Array(147);for(let n=0;n<256;n++)Ml[n]=+("1e"+Math.floor(45.15-n*.30103));var Il=new kr({useRecords:!1}),iT=Il.unpack,aT=Il.unpackMultiple,sT=Il.unpack,Nl={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},lT=new Float32Array(1),zz=new Uint8Array(lT.buffer,0,4);var El;try{El=new TextEncoder}catch{}var Ll,Gu,Dl=typeof Buffer<"u",Vu=Dl?Buffer.allocUnsafeSlow:Uint8Array,Zm=Dl?Buffer:Uint8Array,Xm=Dl?4294967296:2144337920,j,it,D=0,Fr,jr=null,cT=/[\u0080-\uFFFF]/,rs=Symbol("record-id"),_n=class extends kr{constructor(t){super(t),this.offset=0;let e,r,o,i,a,s,l=0,d=Zm.prototype.utf8Write?function(v,M,O){return j.utf8Write(v,M,O)}:El&&El.encodeInto?function(v,M){return El.encodeInto(v,j.subarray(M)).written}:!1,c=this;t||(t={});let u=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),u&&!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 x=[],S=0,w=0;this.pack=this.encode=function(v,M){if(j||(j=new Vu(8192),it=new DataView(j.buffer,0,8192),D=0),Fr=j.length-10,Fr-D<2048?(j=new Vu(j.length),it=new DataView(j.buffer,0,j.length),Fr=j.length-10,D=0):D=D+7&2147483640,r=D,s=c.structuredClone?new Map:null,c.bundleStrings?(jr=["",""],j[D++]=214,j[D++]=98,jr.position=D-r,D+=4):jr=null,o=c.structures,o){o.uninitialized&&(o=c._mergeStructures(c.getStructures()));let O=o.sharedLength||0;if(O>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<O;T++){let C=o[T];if(!C)continue;let P,I=o.transitions;for(let L=0,G=C.length;L<G;L++){let N=C[L];P=I[N],P||(P=I[N]=Object.create(null)),I=P}I[rs]=T+64}l=O}u||(o.nextId=O+64)}i&&(i=!1),a=o||[];try{if(b(v),jr){it.setUint32(jr.position+r,D-jr.position-r);let O=jr;jr=null,b(O[0]),b(O[1])}if(c.offset=D,s&&s.idsToInsert){D+=s.idsToInsert.length*6,D>Fr&&A(D),c.offset=D;let O=dT(j.subarray(r,D),s.idsToInsert);return s=null,O}return M&ey?(j.start=r,j.end=D,j):j.subarray(r,D)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,x.length>0&&(x=[]);else if(x.length>0&&!u){for(let O=0,T=x.length;O<T;O++)x[O][rs]=0;x=[]}if(i&&c.saveStructures){let O=o.sharedLength||f;o.length>O&&(o=o.slice(0,O));let T=j.subarray(r,D);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(v)):(l=O,T)}}M&xT&&(D=r)}};let b=v=>{D>Fr&&(j=A(D));var M=typeof v,O;if(M==="string"){let T=v.length;if(jr&&T>=8&&T<4096){let I=cT.test(v);jr[I?0:1]+=v,j[D++]=193,b(I?-T:T);return}let C;T<32?C=1:T<256?C=2:T<65536?C=3:C=5;let P=T*3;if(D+P>Fr&&(j=A(D+P)),T<64||!d){let I,L,G,N=D+C;for(I=0;I<T;I++)L=v.charCodeAt(I),L<128?j[N++]=L:L<2048?(j[N++]=L>>6|192,j[N++]=L&63|128):(L&64512)===55296&&((G=v.charCodeAt(I+1))&64512)===56320?(L=65536+((L&1023)<<10)+(G&1023),I++,j[N++]=L>>18|240,j[N++]=L>>12&63|128,j[N++]=L>>6&63|128,j[N++]=L&63|128):(j[N++]=L>>12|224,j[N++]=L>>6&63|128,j[N++]=L&63|128);O=N-D-C}else O=d(v,D+C,P);O<32?j[D++]=160|O:O<256?(C<2&&j.copyWithin(D+2,D+1,D+1+O),j[D++]=217,j[D++]=O):O<65536?(C<3&&j.copyWithin(D+3,D+2,D+2+O),j[D++]=218,j[D++]=O>>8,j[D++]=O&255):(C<5&&j.copyWithin(D+5,D+3,D+3+O),j[D++]=219,it.setUint32(D,O),D+=4),D+=O}else if(M==="number")if(v>>>0===v)v<64?j[D++]=v:v<256?(j[D++]=204,j[D++]=v):v<65536?(j[D++]=205,j[D++]=v>>8,j[D++]=v&255):(j[D++]=206,it.setUint32(D,v),D+=4);else if(v>>0===v)v>=-32?j[D++]=256+v:v>=-128?(j[D++]=208,j[D++]=v+256):v>=-32768?(j[D++]=209,it.setInt16(D,v),D+=2):(j[D++]=210,it.setInt32(D,v),D+=4);else{let T;if((T=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){j[D++]=202,it.setFloat32(D,v);let C;if(T<4||(C=v*Ml[(j[D]&127)<<1|j[D+1]>>7])>>0===C){D+=4;return}else D--}j[D++]=203,it.setFloat64(D,v),D+=8}else if(M==="object")if(!v)j[D++]=192;else{if(s){let C=s.get(v);if(C){if(!C.id){let P=s.idsToInsert||(s.idsToInsert=[]);C.id=P.push(C)}j[D++]=214,j[D++]=112,it.setUint32(D,C.id),D+=4;return}else s.set(v,{offset:D-r})}let T=v.constructor;if(T===Object)_(v,!0);else if(T===Array){O=v.length,O<16?j[D++]=144|O:O<65536?(j[D++]=220,j[D++]=O>>8,j[D++]=O&255):(j[D++]=221,it.setUint32(D,O),D+=4);for(let C=0;C<O;C++)b(v[C])}else if(T===Map){O=v.size,O<16?j[D++]=128|O:O<65536?(j[D++]=222,j[D++]=O>>8,j[D++]=O&255):(j[D++]=223,it.setUint32(D,O),D+=4);for(let[C,P]of v)b(C),b(P)}else{for(let C=0,P=Ll.length;C<P;C++){let I=Gu[C];if(v instanceof I){let L=Ll[C];if(L.write){L.type&&(j[D++]=212,j[D++]=L.type,j[D++]=0),b(L.write.call(this,v));return}let G=j,N=it,F=D;j=null;let B;try{B=L.pack.call(this,v,R=>(j=G,G=null,D+=R,D>Fr&&A(D),{target:j,targetView:it,position:D-R}),b)}finally{G&&(j=G,it=N,D=F,Fr=j.length-10)}B&&(B.length+D>Fr&&A(B.length+D),D=uT(B,j,D,L.type));return}}_(v,!v.hasOwnProperty)}}else if(M==="boolean")j[D++]=v?195:194;else if(M==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))j[D++]=211,it.setBigInt64(D,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)j[D++]=207,it.setBigUint64(D,v);else if(this.largeBigIntToFloat)j[D++]=203,it.setFloat64(D,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");D+=8}else if(M==="undefined")this.encodeUndefinedAsNil?j[D++]=192:(j[D++]=212,j[D++]=0,j[D++]=0);else if(M==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+M)},_=this.useRecords===!1?this.variableMapSize?v=>{let M=Object.keys(v),O=M.length;O<16?j[D++]=128|O:O<65536?(j[D++]=222,j[D++]=O>>8,j[D++]=O&255):(j[D++]=223,it.setUint32(D,O),D+=4);let T;for(let C=0;C<O;C++)b(T=M[C]),b(v[T])}:(v,M)=>{j[D++]=222;let O=D-r;D+=2;let T=0;for(let C in v)(M||v.hasOwnProperty(C))&&(b(C),b(v[C]),T++);j[O+++r]=T>>8,j[O+r]=T&255}:v=>{let M=Object.keys(v),O,T=a.transitions||(a.transitions=Object.create(null)),C=0;for(let I=0,L=M.length;I<L;I++){let G=M[I];O=T[G],O||(O=T[G]=Object.create(null),C++),T=O}let P=T[rs];if(P)P>=96&&m?(j[D++]=((P-=96)&31)+96,j[D++]=P>>5):j[D++]=P;else{P=a.nextId,P||(P=64),P<y&&this.shouldShareStructure&&!this.shouldShareStructure(M)?(P=a.nextOwnId,P<g||(P=y),a.nextOwnId=P+1):(P>=g&&(P=y),a.nextId=P+1);let I=M.highByte=P>=96&&m?P-96>>5:-1;T[rs]=P,a[P-64]=M,P<y?(M.isShared=!0,a.sharedLength=P-63,i=!0,I>=0?(j[D++]=(P&31)+96,j[D++]=I):j[D++]=P):(I>=0?(j[D++]=213,j[D++]=114,j[D++]=(P&31)+96,j[D++]=I):(j[D++]=212,j[D++]=114,j[D++]=P),C&&(S+=w*C),x.length>=h&&(x.shift()[rs]=0),x.push(T),b(M))}for(let I=0,L=M.length;I<L;I++)b(v[M[I]])},A=v=>{let M;if(v>16777216){if(v-r>Xm)throw new Error("Packed buffer would be larger than maximum buffer size");M=Math.min(Xm,Math.round(Math.max((v-r)*(v>67108864?1.25:2),4194304)/4096)*4096)}else M=(Math.max(v-r<<2,j.length-1)>>12)+1<<12;let O=new Vu(M);return it=new DataView(O.buffer,0,M),j.copy?j.copy(O,0,r,v):O.set(j.slice(r,v)),D-=r,r=0,Fr=O.length-10,j=O}}useBuffer(t){j=t,it=new DataView(j.buffer,j.byteOffset,j.byteLength),D=0}};Gu=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ts];Ll=[{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?Km(n,16,t):Qm(Dl?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==Zm&&this.structuredClone?Km(n,Ru.indexOf(e.name),t):Qm(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function Km(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 Qm(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 uT(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 dT(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 ko(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)");Gu.unshift(n.Class),Ll.unshift(n)}Ym(n)}var Jm=new _n({useRecords:!1}),pT=Jm.pack,fT=Jm.pack;var{NEVER:hT,ALWAYS:mT,DECIMAL_ROUND:yT,DECIMAL_FIT:gT}=Nl,ey=512,xT=1024;var ty=new _n({structuredClone:!0});ko({Class:he.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,he.prototype),n}});ko({Class:ye.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ye.prototype),n}});ko({Class:$e.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,$e.prototype),n}});ko({Class:Ja.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ja(n)}});ko({Class:es.prototype.constructor,type:5,write(n){return n.data},read(n){return new es(n)}});ko({Class:ke.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,ke.prototype),n}});function vT(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 zu(n){if(Si(n))return n;if(Array.isArray(n))return n.map(zu);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=zu(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var Bl;(r=>{function n(o){return ty.pack(o)}r.serialize=n;function t(o){return ty.unpack(o)}r.deserialize=t;function e(o){return vT(n(zu(o))).toString()}r.checksum=e})(Bl||(Bl={}));var Uo="personal camera",Ho="a218fcc3-276b-49b9-b485-49037fd14f5f",sy=2960946,dt=5526619;var ry;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(ry||(ry={}));var Fo;(s=>{function n(l,d){return l[0]===d[0]&&l[1]===d[1]&&l[2]===d[2]}s.isEqual=n;function t(l,d){return[l[0]+d[0],l[1]+d[1],l[2]+d[2]]}s.add=t;function e(l,d){return[l[0]-d[0],l[1]-d[1],l[2]-d[2]]}s.sub=e;function r(l,d){return[l[0]/d[0],l[1]/d[1],l[2]/d[2]]}s.div=r;function o(l,d){return[l[0]*d[0],l[1]*d[1],l[2]*d[2]]}s.mul=o;function i(l,d){return Math.hypot(l[0]-d[0],l[1]-d[1],l[2]-d[2])}s.dist=i;function a(l,d,c){return[l[0]+(d[0]-l[0])*c,l[1]+(d[1]-l[1])*c,l[2]+(d[2]-l[2])*c]}s.lerp=a})(Fo||(Fo={}));var oy;(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})(oy||(oy={}));var jo;(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,d=a.length;l<d;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})(jo||(jo={}));var vt;(c=>{function n(u){return typeof u=="object"&&typeof u.r=="number"&&typeof u.g=="number"&&typeof u.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(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:1}}c.toRgb255a1=o;function i(u){return{r:u.r,g:u.g,b:u.b}}c.clone=i;function a(u){return u=Math.floor(u),{r:(u>>16&255)/255,g:(u>>8&255)/255,b:(u&255)/255}}c.fromHex=a;function s(u){return Math.round(u.r*255)*65536+Math.round(u.g*255)*256+Math.round(u.b*255)}c.toHex=s;function l(u,p){return u.r===p.r&&u.g===p.g&&u.b===p.b}c.equals=l;function d(u,p,f){return{r:u.r+(p.r-u.r)*f,g:u.g+(p.g-u.g)*f,b:u.b+(p.b-u.b)*f}}c.lerp=d})(vt||(vt={}));var Gt;(s=>{s.white={...vt.white,a:1},s.transparent={...vt.white,a:0};function e(l){return{r:l[0],g:l[1],b:l[2],a:l[3]}}s.from0to1=e;function r(l,d){return{...vt.fromHex(l),a:d}}s.fromHexAndA=r;function o(l){return{r:Math.round(l.r*255),g:Math.round(l.g*255),b:Math.round(l.b*255),a:l.a}}s.toRgb255a1=o;function i(l,d){return vt.equals(l,d)&&l.a===d.a}s.equals=i;function a(l,d,c){return{r:l.r+(d.r-l.r)*c,g:l.g+(d.g-l.g)*c,b:l.b+(d.b-l.b)*c,a:l.a+(d.a-l.a)*c}}s.lerp=a})(Gt||(Gt={}));var Rl;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Rl||(Rl={}));var ny;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(ny||(ny={}));var iy;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(iy||(iy={}));var ay;(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]))(ay||(ay={}));function ku(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 vr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(vr||(vr={}));var qo;(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})(qo||(qo={}));var Ur;(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(bT.forEach(a=>{Object.assign(i,{[a]:o[a]??r[a]})}),i.radial={...r.radial},o.radial){let a=r.radial,s=o.radial;ST.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;wT.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;_T.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;AT.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;TT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=t})(Ur||(Ur={}));var Vl;(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})(Vl||(Vl={}));var bT=["count"],ST=["radius","start","end","position","scale","rotation"],wT=["position","scale","rotation"],_T=["count","size"],AT=["count","position","scale","rotation"],TT=["strength","scale","rotation","position","movement","seed","freqScale"];var Gl;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Gl||(Gl={}));var zl;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Gt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Gt.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:Gt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(zl||(zl={}));var Wo;(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]})(Wo||(Wo={}));var Fu;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Fu||(Fu={}));var ju;(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})(ju||(ju={}));var kl;(t=>t.defaultData={...ju.defaultData,...Fu.defaultData})(kl||(kl={}));var ly;(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})(ly||(ly={}));var Pi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Pi||(Pi={}));var cy;(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==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}t.is=n})(cy||(cy={}));function dy(n){return n.type!=="displace"}var uy;(t=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=n})(uy||(uy={}));var py=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],fy=["wrapping","image","video","name"],zt;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let d=i.texture;d&&Object.assign(d,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]},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:Pi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...a,type:"color",color:vt.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:{...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:Gt.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:Gt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Gt.fromHexAndA(0,1),contourColor:Gt.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]}};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}}}})(zt||(zt={}));var Pt;(l=>{function n(d){return!d.layers.some(u=>u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")}l.isMergable=n;function t(d){let c="";return d.layers.forEach(u=>{Object.entries(u.data).forEach(([p,f])=>{c+=`${p}${f}`,Array.isArray(f)?f.forEach(h=>c+=`${h}`):typeof f=="object"?Object.values(f).forEach(h=>{typeof h=="number"?c+=`${h.toFixed(4)}`:c+=`${h}`}):c+=`${f}`})}),c}l.getHash=t;function e(){return{layers:new ye}}l.defaultEmptyData=e;function r(d="layer1",c="layer2"){return i("phong",d,c)}l.defaultData=r;function o(d,c){return{...d,name:c}}l.withName=o;function i(d,c="layer1",u="layer2"){let p=new ye;return p.push({fi:0,data:zt.defaultData("light",d),id:c}),p.push({fi:1,data:zt.defaultData("color"),id:u}),{layers:p}}l.defaultTwoLayerData=i;function a(d,c="phong",u="layer1",p="layer2"){let f=zt.defaultData("texture");Object.assign(f.texture,{image:d});let h=new ye;return h.push({fi:0,data:f,id:u}),h.push({fi:1,data:zt.defaultData("light",c),id:p}),{layers:h}}l.defaultTwoLayerTextureData=a;function s(d,c="phong",u="layer1",p="layer2"){let f=zt.defaultData("video");Object.assign(f.texture,{video:d});let h=new ye;return h.push({fi:0,data:f,id:u}),h.push({fi:1,data:zt.defaultData("light",c),id:p}),{layers:h}}l.defaultTwoLayerVideoTextureData=s})(Pt||(Pt={}));var Oi;(t=>{function n(){return{points:new ye,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Oi||(Oi={}));var Mi;(t=>{function n(){return{points:new ye,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=n})(Mi||(Mi={}));var Uu={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Fl;(t=>{function n(e,r){let o={...e};return CT.forEach(i=>{Object.assign(o,{[i]:r[i]??e[i]})}),o}t.merge=n})(Fl||(Fl={}));var jl={shape:Uu,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},CT=["depth","offset","angle","twist","startScale","endScale"];var os;(e=>{function n(r){return r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"}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})(os||(os={}));var Ul;(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,Fl.merge(o.extrusion,r.extrusion))),o}t.merge=n})(Ul||(Ul={}));var $o;(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==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:Mi.defaultData(),extrusion:jl};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Oi.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})($o||($o={}));var Hl;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:vt.white,near:.1,far:2e3})(Hl||(Hl={}));var ql;(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}}})(ql||(ql={}));var Hu;(t=>t.defaultData={softShadowQuality:"low"})(Hu||(Hu={}));var qu;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(qu||(qu={}));var Wu;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Wu||(Wu={}));var ns;(t=>t.defaultData={usePhysics:!1,gravity:-10})(ns||(ns={}));var $u;(t=>t.defaultData={playCamera:Uo,gameControlObject:null})($u||($u={}));var Wl;(t=>t.defaultData={backgroundColor:Gt.fromHexAndA(sy,1),postprocessing:ql.defaultData,fog:Hl.defaultData,globalPhysics:ns.defaultData,ambient:qu.defaultData,ao:Wu.defaultData,shadow:Hu.defaultData,publish:$u.defaultData})(Wl||(Wl={}));var hy;(e=>{function n(r){return r==="Component"||r==="Instance"}e.isComponentRelated=n;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(hy||(hy={}));var Ii;(o=>{o.identity={...Rl.identity,hiddenMatrix:jo.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 ef({position:Fo.isEqual(i.position,a.position)?void 0:a.position,rotation:Fo.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:Fo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:jo.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(Ii||(Ii={}));var Ot;(t=>t.defaultData={states:new ye,events:new ye,visible:!0,raycastLock:!1,physics:Wo.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Ii.identity,cloner:null})(Ot||(Ot={}));var $l;(t=>t.defaultData={type:"Empty",...Ot.defaultData})($l||($l={}));var my;(t=>t.defaultData={type:"Component",...Ot.defaultData})(my||(my={}));var An;(t=>t.defaultData={type:"Mesh",...Ot.defaultData,...kl.defaultData})(An||(An={}));var Tn;(t=>t.defaultData={...Ot.defaultData,...Ii.identity,position:[0,0,qo.DefaultTargetOffset],...qo.defaultData})(Tn||(Tn={}));var Yl;(e=>{function n(r){return{...Ot.defaultData,...zl.defaultData(r)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Yl||(Yl={}));var Ni;(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})(Ni||(Ni={}));var Hr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...Ot.defaultData,...s,component:a,overrides:new ke,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=r;function o(a){let s=Ii.fromObject(a.data);return r(a.id,s)}i.fromComponentData=o})(Hr||(Hr={}));var xo;(t=>t.defaultData={type:"Page",...Ot.defaultData,physics:{...Wo.defaultData,fusedBody:!1},...Wl.defaultData,camera:Tn.defaultData})(xo||(xo={}));var Xl;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:jo.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Wo.defaultData,states:new ye,events:new ye,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...qo.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",...Ot.defaultData,...An.defaultData,geometry:$o.defaultData("RectangleGeometry"),material:Pt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Ot.defaultData,...An.defaultData,geometry:$o.defaultData("BooleanGeometry"),material:Pt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Ot.defaultData,...An.defaultData,geometry:$o.defaultData("TextGeometry"),material:Pt.defaultTwoLayerData("phong","layer1","layer2")}))(Xl||(Xl={}));var Cn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new ke}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new ke})))):vr.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=Vo(s.material,l=>{if(typeof l!="string")for(let[d,c]of Object.entries(a.material.layers)){let u=l.layers.data(d);u&&zt.patch(u,c)}}).data),s.materials&&a.materials&&(s.materials=Vo(s.materials,l=>{for(let d=0;d<s.materials.length;d++){let c=a.materials[d];if(typeof c!="string")for(let[u,p]of Object.entries(c.layers)){let f=l[d]?.layers?.data(u);f&&zt.patch(f,p)}}}).data),s}function e(i,a){let s,l=[],d={orthographic:0,perspective:0,geometry:0};function c(u,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:[...u,"layers",f,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...u,"layers",f],props:y,type:0};l.push(g)}}}for(let[u,p]of Object.entries(a))if(u!=="name")if(u==="cloner")l.push(...Vl.toOps(p,["cloner"]));else if(u==="pathSnapping")l.push({path:[u],props:{slide:p.slide,offset:p.offset},type:0});else if(u==="material")c(["material"],p);else if(u==="materials")for(let[f,h]of Object.entries(p))c(["materials",f],h);else if(d[u]===0){if(u==="geometry"&&p.extrusion!==void 0){let f={path:[u,"extrusion"],props:p.extrusion,type:0};l.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[u],props:p,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[u]=p;return l}o.toOps=e;function r(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Ii.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})}),vr.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:Ul.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Ur.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Ur.merge(s.cloner,a.cloner)});else if(Gl.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})(Cn||(Cn={}));var Li;(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})(Li||(Li={}));var qr;(t=>t.defaultData={orbitControls:Li.defaultData,playPage:Ho,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})(qr||(qr={}));var Yu;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Yu||(Yu={}));var Xu;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Xu||(Xu={}));var Yo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Yu.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Xu.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Yo||(Yo={}));var yy;(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=Di.getComponentData(r,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=t})(yy||(yy={}));var Xo;(s=>{s.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function t(l={withLight:!0,withSquare:!0}){let d=[],c=Xl.defaultMeshObject;l.withLight===!0&&d.push({fi:-1,data:Yl.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),l.withSquare===!0&&d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:c,children:[]});let u=new $e;return u.push({fi:1,id:Ho,data:{...xo.defaultData,name:"Scene 1"},children:d}),u}s.defaultData={objects:t(),publish:qr.defaultData,styles:Yo.defaultData()},s.emptyDataWithoutPage=function(){return{objects:new $e,publish:qr.defaultData,styles:Yo.defaultData()}},s.emptyDataWithPage=function(l){return{objects:t(l),publish:qr.defaultData,styles:Yo.defaultData()}};function i(l){return{...s.defaultData,objects:Wt(l,$e.prototype)}}s.withObjs=i;function a(l,d){return i([{id:l,data:d,children:[],fi:0}])}s.withObj=a})(Xo||(Xo={}));var Bi;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Bi||(Bi={}));var Ri;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Ri||(Ri={}));var Kl;(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})(Kl||(Kl={}));var Ku;(t=>t.all=["images","videos","colors","audios","fonts","materials","variables"])(Ku||(Ku={}));var gy;(t=>t.all=[...Ku.all,"components"])(gy||(gy={}));var xy;(t=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,fonts:new he,materials:new he,components:new he,variables:new he}}t.defaultData=n})(xy||(xy={}));var Ko;(t=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,fonts:new he,materials:new he,components:new he,variables:new he}}t.defaultData=n})(Ko||(Ko={}));var br;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Wt(a,he.prototype)}i.defaultColors=n;function t(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Ri.emptyImage,name:"AI generated image"}),Wt(s,he.prototype)}i.defaultImages=t;function e(){return{catelogs:new he,materials:new he,images:new he,videos:new he,colors:new he,audios:new he,fonts:new he,variables:new ye,lib:Ko.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),d=Math.floor((a-l*3600)/60),c=Math.round(a-l*3600-d*60);return{textValue:[l,d,c]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),d=Math.round(a-l*60);return{textValue:[l,d]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(br||(br={}));import{MathUtils as Jl}from"three";var Ql;(t=>t.list=["idle","move","jump","run"])(Ql||(Ql={}));var Zl;(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 ye,move:new ye,jump:new ye,run:new ye},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Gt.fromHexAndA(3728051,1)}}))(Zl||(Zl={}));function vy(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={...xr(Ye(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={...Ye(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function vo(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function bo(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,i)=>{o===void 0&&(r.materials[i]=Pt.defaultData(),o=r.materials[i]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Pt.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Pt.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&t(o.material)})})}function PT(n){Object.assign(n.scene.publish,{orbitControls:{...Li.defaultData,...Ye(n.scene.publish.orbitControls)}})}function OT(n){Object.assign(n.scene.publish.settings,{video:{...qr.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function MT(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((py.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(i))(fy.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 IT(n){n.scene.publish.withBackground=!0}function NT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function ET(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 LT(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 DT(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.unproxy().parent(t);if(r){let o=Ye(n.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Ye(e).booleanExclude!==!0)}})}function BT(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 RT(n){function t(r){Object.setPrototypeOf(r,ke.prototype),r.texture&&Object.setPrototypeOf(r.texture,ke.prototype)}function e(r){Object.setPrototypeOf(r,ke.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=Ye(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],d=Ye(l).layers;e(d),l.layers=d}})})}function by(n){n.layers===void 0&&Object.assign(n,Pt.defaultTwoLayerData("lambert"))}function Qu(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={...Ye(t),colors:e,steps:r};Object.assign(t,o)}})}function VT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Sy(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Qu(r)}):"material"in e&&typeof e.material!="string"&&Qu(e.material)}),Object.values(n.shared.materials).forEach(t=>Qu(t))}function GT(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 zT(n){n.shared.audios=Wt({},he.prototype)}function kT(n){n.shared.videos=Wt({},he.prototype)}function FT(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 jT(n){Object.entries(Ye(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(Ye(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function UT(n){n.scene.publish.settings.web.preload=!1}function wy(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 _y(n){n.layers&&n.layers.forEach(t=>{dy(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 HT(n){n.shared.fonts=Wt({},he.prototype)}function qT(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 WT(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=Pt.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=qT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...Ot.defaultData,...An.defaultData,flatShading:!1,wireframe:!1,geometry:{...$o.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:Ye(o.states),events:Ye(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},d=Ye(n.scene.objects).parent(e);n.scene.objects.insertAfter(d??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function $T(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 ye,move:new ye,jump:new ye}});else{let i=new ye;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:Jl.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let d={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,xr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(c,{control1:{...a.control1},control2:{...a.control2}});let u={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,...u,...c},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ye({fi:0,id:Jl.generateUUID(),data:d},{fi:1,id:Jl.generateUUID(),data:p})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function YT(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let a=new ye,s=[];if(e.events.forEach((l,d,c)=>{if(l.type==="Audio"&&l.trigger===i){let u;s.push(d),l.interaction==="play"?u={...xr(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")&&(u={...xr(l,"interaction","delay","object","playAudio"),type:"Audio"}),u&&a.push({fi:c,id:d,data:u})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(d=>d.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Jl.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Ay(n){let t=n.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=zt.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function Ty(n){vo(n,Ay),bo(n,Ay)}function XT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function KT(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 QT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Pt.defaultTwoLayerData("phong"))})}function ZT(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 JT(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 eC(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 tC(n){let{video:t}=n.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function rC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function oC(n){let t=n.scene.environment.usePhysics;n.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function nC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=Zl.defaultDataThirdPerson.navmesh)})})}function iC(n){n.scene.styles||(n.scene.styles=Yo.defaultData())}function Cy(n){n.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function aC(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}),bo(n,Cy),vo(n,Cy)}function sC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new ye})})})}function lC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Py(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function Oy(n,t){if(t<1&&(bo(n,vy),vo(n,vy),n.schema=1),t<2&&(PT(n),n.schema=2),t<3&&(MT(n),n.schema=3),t<4&&(IT(n),n.schema=4),t<5&&(NT(n),n.schema=5),t<6&&(ET(n),n.schema=6),t<7&&(LT(n),n.schema=7),t<8&&(n.schema=8),t<9&&(Sy(n),n.schema=9),t<10&&(VT(n),n.schema=10),t<11&&(GT(n),n.schema=11),t<12&&(Sy(n),n.schema=12),t<13&&(zT(n),n.schema=13),t<14&&(FT(n),n.schema=14),t<15&&(jT(n),n.schema=15),t<16&&(UT(n),n.schema=16),t<17&&(bo(n,wy),vo(n,wy),n.schema=17),t<18&&(bo(n,by),vo(n,by),n.schema=18),t<19&&(OT(n),n.schema=19),t<20&&(HT(n),WT(n),n.schema=20),t<21&&($T(n),YT(n),n.schema=21),t<22&&(Ty(n),n.schema=22),t<23&&(XT(n),n.schema=23),t<24&&(KT(n),n.schema=24),(t<25||n.shared.videos===void 0)&&(kT(n),t<25&&(n.schema=25)),t<26&&(DT(n),n.schema=26),t<27&&(BT(n),n.schema=27),t<28&&(Ty(n),n.schema=28),t<29&&(RT(n),n.schema=29),t<30&&(QT(n),n.schema=30),t<31&&(ZT(n),n.schema=31),t<33&&(JT(n),n.schema=33),t<34&&(eC(n),n.schema=34),t<35&&(tC(n),n.schema=35),t<36&&(rC(n),n.schema=36),t<37&&(oC(n),n.schema=37),t<38&&(bo(n,_y),vo(n,_y),n.schema=38),t<39&&(nC(n),n.schema=39),t<40&&(iC(n),n.schema=40),t<41&&(aC(n),n.schema=41),t<42&&(sC(n),n.schema=42),t<43&&(lC(n),n.schema=43),t<99){bo(n,Py),vo(n,Py),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Uo);let e=Ye(n.scene.objects),r=n.scene.objects;n.scene.publish.playPage=Ho,r.insertBefore(null,null,[{id:Ho,data:{...xo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:xr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:xr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...ns.defaultData,...xr(n.scene.environment,"usePhysics","gravity")},camera:Ye(n.scene.ownerCamera)??xo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Xo.TRASH_CAN_ID&&r.move(Ho,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,Wo.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function My(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function cC(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"))})}var Vi=180/Math.PI;function Iy(n){n.rotation=n.rotation.slice(0,3).map(t=>t*Vi)}function Ny(n){Iy(n),n.type==="Page"&&Iy(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*Vi))});let t=n.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*Vi),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*Vi),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=Vi,t.extrusion.twist*=Vi),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(Ye(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":"Once")})}function uC(n){n.shared.variables=Wt({},he.prototype)}function dC(n){let t=Ye(n.shared.variables);n.shared.variables=Wt(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),ye.prototype)}var So=107;function Ey(n,t){t(n.data);for(let e of n.children)Ey(e,t)}function pC(n){let t=n.schema??104;t!==So&&t<105&&(Ey(n.asset,Ny),n.schema=105)}function ec(n){let t=n.schema??0;if(t!==So){console.warn("updating from ",t,"to ",So),Oy(n,t),t<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=qr.defaultData.joystickSizeAndXYOffset),n.schema=100),t<101&&(bo(n,My),vo(n,My),n.schema=101),t<102&&(cC(n),n.schema=102),t<104&&(n.shared.catelogs=new he,n.shared.lib=Ko.defaultData(),n.schema=104),t<105&&(uC(n),n.scene.objects.traverse((e,r)=>{Ny(r)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))pC(e);t<106&&(dC(n),n.schema=106),t<107&&(n.shared.lib.variables=Ko.defaultData().variables,n.schema=107)}}var Di;(s=>{s.defaultData={schema:So,scene:Xo.defaultData,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Bi.defaultData),shared:{...br.emptyData(),colors:br.defaultColors()}},s.emptyDataForImports=function(l){let d=Xo.emptyDataWithPage(l);return{schema:So,scene:d,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Bi.defaultData),shared:{...br.emptyData(),colors:br.defaultColors(),images:br.defaultImages(l)}}},s.emptyData=function(){return{schema:So,scene:Xo.emptyDataWithPage(),frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Bi.defaultData),shared:br.emptyData()}},s.collabHelper={...Za,updateSchema(l){return(l.schema??0)<So?Vo(l,ec):(l.schema??0)-So}};function o(l){let d=s.collabHelper.updateSchema(l);return typeof d=="number"?d===0?l:null:d.data}s.updateSchemaDirectly=o;function i(l){return{...l,shared:{...l.shared,lib:Ko.defaultData()}}}s.withoutLib=i;function a(l,d){let c=l.scene.objects.get(d);if(c&&c.data.type==="Component")return c;{let u=l.shared.lib.components[d];if(u)return u.asset}}s.getComponentData=a})(Di||(Di={}));var Ea=Rt(Dy());import{Object3D as aM,Vector3 as lr,Euler as Ep,MathUtils as dx,Matrix4 as $n}from"three";var fC=.5*(Math.sqrt(3)-1),is=(3-Math.sqrt(3))/6,hC=1/3,Wr=1/6,wU=(Math.sqrt(5)-1)/4,_U=(5-Math.sqrt(5))/20,as=n=>Math.floor(n)|0,By=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]),Ju=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 tc(n=Math.random){let t=Vy(n),e=new Float64Array(t).map(o=>By[o%12*2]),r=new Float64Array(t).map(o=>By[o%12*2+1]);return function(i,a){let s=0,l=0,d=0,c=(i+a)*fC,u=as(i+c),p=as(a+c),f=(u+p)*is,h=u-f,m=p-f,y=i-h,g=a-m,x,S;y>g?(x=1,S=0):(x=0,S=1);let w=y-x+is,b=g-S+is,_=y-1+2*is,A=g-1+2*is,v=u&255,M=p&255,O=.5-y*y-g*g;if(O>=0){let P=v+t[M],I=e[P],L=r[P];O*=O,s=O*O*(I*y+L*g)}let T=.5-w*w-b*b;if(T>=0){let P=v+x+t[M+S],I=e[P],L=r[P];T*=T,l=T*T*(I*w+L*b)}let C=.5-_*_-A*A;if(C>=0){let P=v+1+t[M+1],I=e[P],L=r[P];C*=C,d=C*C*(I*_+L*A)}return 70*(s+l+d)}}function Ry(n=Math.random){let t=Vy(n),e=new Float64Array(t).map(i=>Ju[i%12*3]),r=new Float64Array(t).map(i=>Ju[i%12*3+1]),o=new Float64Array(t).map(i=>Ju[i%12*3+2]);return function(a,s,l){let d,c,u,p,f=(a+s+l)*hC,h=as(a+f),m=as(s+f),y=as(l+f),g=(h+m+y)*Wr,x=h-g,S=m-g,w=y-g,b=a-x,_=s-S,A=l-w,v,M,O,T,C,P;b>=_?_>=A?(v=1,M=0,O=0,T=1,C=1,P=0):b>=A?(v=1,M=0,O=0,T=1,C=0,P=1):(v=0,M=0,O=1,T=1,C=0,P=1):_<A?(v=0,M=0,O=1,T=0,C=1,P=1):b<A?(v=0,M=1,O=0,T=0,C=1,P=1):(v=0,M=1,O=0,T=1,C=1,P=0);let I=b-v+Wr,L=_-M+Wr,G=A-O+Wr,N=b-T+2*Wr,F=_-C+2*Wr,B=A-P+2*Wr,R=b-1+3*Wr,V=_-1+3*Wr,q=A-1+3*Wr,Y=h&255,$=m&255,H=y&255,X=.6-b*b-_*_-A*A;if(X<0)d=0;else{let z=Y+t[$+t[H]];X*=X,d=X*X*(e[z]*b+r[z]*_+o[z]*A)}let k=.6-I*I-L*L-G*G;if(k<0)c=0;else{let z=Y+v+t[$+M+t[H+O]];k*=k,c=k*k*(e[z]*I+r[z]*L+o[z]*G)}let W=.6-N*N-F*F-B*B;if(W<0)u=0;else{let z=Y+T+t[$+C+t[H+P]];W*=W,u=W*W*(e[z]*N+r[z]*F+o[z]*B)}let U=.6-R*R-V*V-q*q;if(U<0)p=0;else{let z=Y+1+t[$+1+t[H+1]];U*=U,p=U*U*(e[z]*R+r[z]*V+o[z]*q)}return 32*(d+c+u+p)}}function Vy(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 Sr=new mC,rc=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;Sr.a.fromBufferAttribute(t,o),Sr.b.fromBufferAttribute(t,o+1),Sr.c.fromBufferAttribute(t,o+2),i*=Sr.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),Sr.a.fromBufferAttribute(this.positionAttribute,t*3),Sr.b.fromBufferAttribute(this.positionAttribute,t*3+1),Sr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Sr.a,o).addScaledVector(Sr.b,i).addScaledVector(Sr.c,1-(o+i)),Sr.getNormal(r),this}};import{Object3D as bC}from"three";var ky=Rt(zy());import{Object3D as yC,Matrix4 as $r}from"three";var gC=new $r,xC=new $r,vC=new $r,Gi;(t=>{function n(e){return e&&e.__isSPEObject}t.is=n})(Gi||(Gi={}));var zi=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new $r;this.copyPreviousMatrix=!0;this.hiddenMatrix=new $r;this.matrixWorldRigid=new $r;this.shearScale=new $r;this.shearScaleInv=new $r}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)Gi.is(i)&&i.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Gi.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,ky.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),d=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=vC.copy(d).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(d),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,c).copyPosition(this.matrixWorld),s.every(u=>Math.abs(s[0]-u)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let i=new $r().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),i.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof $r?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 ed=class extends zi(bC){},SC=n=>n.type==="Mesh",wo=class extends ed{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 wo(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 I2,BufferGeometry as N2,MeshBasicMaterial as E2}from"three";import{Matrix4 as O2,Mesh as M2}from"three";import{Matrix4 as ic,Vector3 as Uy,Euler as PC,MathUtils as ls}from"three";import{Box3 as wC,Line3 as _C,Matrix4 as td,Vector3 as ir}from"three";var Pn=new ir,On=new ir,ki=new td,jy=[new ir(-1,1,1),new ir(-1,-1,1),new ir(1,-1,1),new ir(1,1,1),new ir(-1,1,-1),new ir(-1,-1,-1),new ir(1,-1,-1),new ir(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]],TC=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Fy=(n,t,e)=>{n.updateEntityBoxSize(Pn,On),ki.copy(t).multiply(n.matrixWorld),On.x===0&&On.y===0&&On.z===0?e.push(new ir(Pn.x,Pn.y,Pn.z).applyMatrix4(ki)):jy.forEach(r=>{e.push(r.clone().multiply(On).add(Pn).applyMatrix4(ki))})},ss=class extends wC{constructor(){super(...arguments);this.matrix=new td;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 td().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 ir);return}Fy(a,r,i)}}):Fy(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(ki.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(On).multiplyScalar(.5),this.getCenter(Pn),ki.copy(this.matrix).setPosition(Pn),this.vertices=jy.map(e=>e.clone().multiply(On).applyMatrix4(ki))}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 ir))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=TC.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var wr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as CC,CubicBezierCurve3 as rd,Vector3 as _r}from"three";var nd=class extends CC{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 d=l[s],c=s===0?o[s]:o[s]-o[s-1],u=Math.ceil(t*c/a),p=d.getPoints(u);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 id=.001;function ad(n,t,e){return t.clone().sub(n).cross(t.clone().sub(e)).length()<=id}function od(n,t){let e=new _r(...n.position),r=new _r(...n.controlNext.position),o=new _r(...t.controlPrevious.position),i=new _r(...t.position);return ad(e,r,i)&&ad(e,o,i)}function nc(n){let t=n.points.map(c=>new _r(...c.data.position)),e=[n.points[0]],r=new _r(...e[0].data.position);for(let c=0;c<n.points.length-1;c++)ad(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 u=e[c].data,p=new _r(...u.position),f=new _r(...u.controlPrevious.position),h=new _r(...u.controlNext.position),m={position:p,baseRoundness:u.roundness,controlPrevious:f,controlNext:h};if(u.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,x=e[y].data,S=e[g].data,w=new _r(...x.position),b=new _r(...S.position),_=w.clone().sub(p).normalize(),A=b.clone().sub(p).normalize();Object.assign(m,{prevDir:_,nextDir:A});let v=od(x,u),M=od(u,S);if(!v||!M)s[c]={...m,removedLength:0};else{let O=_.clone().add(A).normalize(),T=O.clone().cross(_).length()/_.dot(O);s[c]={...m,tan:T,removedLength:u.roundness/T}}}for(let c=0;c<i;c++){let u=c,p=o&&c===a-1?0:c+1,f=s[u],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 u=c,p=o&&c===a-1?0:c+1,f=s[u],h=s[p],m=null;if(!od(e[u].data,e[p].data))f.position.distanceTo(h.position)>id&&(m=new rd(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)>id&&(m=new rd(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 u=s[c];if(u.removedLength===0){l[2*c]=null;continue}let p=u.position,f=u.prevDir.clone().multiplyScalar(u.removedLength).add(p),h=u.nextDir.clone().multiplyScalar(u.removedLength).add(p),m=u.tan*u.removedLength,y=u.prevDir.clone().add(u.nextDir).normalize(),g=f.clone().lerp(h,.5),x=f.distanceTo(h)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-m).add(S),b=p.distanceTo(w)/p.distanceTo(g),_=u.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),A=_.clone().lerp(w,2),v=f.clone().lerp(_,4/3),M=h.clone().lerp(A,4/3);l[2*c]=new rd(f,v,M,h)}let d=new nd;return l.forEach(c=>{c&&d.add(c)}),d}var Ae;(t=>{function n(e){return e&&e.__isEntity}t.is=n})(Ae||(Ae={}));var Fi=n=>Ae.is(n),OC={type:"completeState",isfromEntity:!0},MC=["x","y","z"],sd=new Uy,IC=new Uy().set(0,1,0),ji=n=>class extends zi(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 ss;this._recursiveBBox=new ss;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(Ae.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(Ae.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(Ae.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)Cn.toOps(this.data,a.data).forEach(l=>{let d=Sl.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(d,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=Cn.patch(this.data,a),Cn.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=>{Fi(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(Ae.is(o[i]))return o[i];if(Ae.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&Ae.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)Fi(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{Ae.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Fi(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Fi(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)Fi(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=>Fi(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&&(sd.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(ls.DEG2RAD),this.rotation.setFromVector3(sd),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??jo.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)Ae.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{Ae.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,d=Dt(r.path,["states","*"]);if(d!==null){if(r.type===0){let[c]=d;if(this?.stateSelection===c){let u={...r.props};if(delete u.name,Object.values(r.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=ot.zoom(p,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(u[h]=f[h])}}l={...r,props:u,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 u=ot.removeOverridden(r.path,r.props,c);l={...r,props:u}}}if(this.updateByPatchedOpBase(l,Cn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Dt(r.path,["overrides"])){let c=[],u=[...r.path];for(c.push(u[1]),u.splice(0,2);u.length>0&&u[0]==="descendants";)c.push(u[1]),u.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(Gr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...c]);if(p){let f=ot.zoom(p.component.data,u);if(r={...r,path:u},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=Ni.resolve(o.overrides,c),p.updateByOp(r,nt.applySimple(p.data,r),i,!1)}}}else if(this.instances.length>0){let c;if(r.path.length===0&&r.type===0){let u;for(let p of Hr.rootOverrideProps)p in r.props&&(u===void 0&&(u={}),u[p]=r.props[p]);u&&(c={...r,props:u})}else for(let u of Hr.rootOverrideProps)if(Dt(r.path,[u])){c=r;break}c!==void 0&&this.instances.forEach(u=>{if(u.isInstanceRoot){let p=Gr.filterOp(u.overrideData,c);p&&u.updateByOp(p,nt.applySimple(u.data,p),i,!0)}}),this.instances.forEach(u=>{if(!u.isInstanceRoot){let p=Gr.filterOp(u.overrideData,r);if(p){let f;s===u.data&&r===p?f=o:f=nt.applySimple(u.data,p),u.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&&!vr.is(r.props.type)&&wr.changeEntityProptotype(this,o,i);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){wr.changeEntityProptotype(this,o,i);for(let a of this.children)Ae.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),Dt(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Dt(r.path,["cloner"])!==null){let a=nt.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 d=l.data;if(d.geometry.path.points.length<=1)return;let c=nc(d.geometry.path),u=(i+a)%1;i+a===1&&u===0&&(u=1);let p=c.getPointAt(u);if(p===null)return;let f=this.parent?this.parent?.matrixWorld:new ic;l.updateMatrixWorld();let h=new ic().multiplyMatrices(f.clone().invert(),l.matrixWorld);p.applyMatrix4(h);let m={position:p.toArray(),rotation:d.rotation};if(s==="tangential"){let y=new ic().extractRotation(l.matrixWorld),g=c.getTangentAt(u).applyMatrix4(y).add(p),x=new ic().lookAt(p,g,IC),S=sd.setFromEuler(new PC().setFromRotationMatrix(x)).multiplyScalar(ls.RAD2DEG);m={...m,rotation:S.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(OC)})}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 wr.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 wr.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)}};import{BufferGeometry as LC,ConeGeometry as DC,Float32BufferAttribute as BC,MathUtils as RC}from"three";import{BufferGeometry as qy,CylinderGeometry as NC,Float32BufferAttribute as sc,MathUtils as EC,Vector2 as Ar,Vector3 as ac}from"three";var Wy=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=EC.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:d,radiusBottom:c,cornerRadius:u,cornerSegments:p,hollow:f}=n.parameters,h;return l===0?(h=new qy,h.setAttribute("position",new sc([],3))):u||f?h=new cs(d,c,r,o,i,a,s,l*Math.PI/180,u,u,p,f):h=new NC(d,c,r,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function Qo(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Hy(n){return new Ar(n.y,-n.x)}var cs=class extends qy{constructor(t,e,r,o,i,a,s,l,d,c,u,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&&(d=0,c=0);let h=[],m=[],y=[],g=[],x=0,S=r/2,w=new ac,b=new ac;f&&t==0&&(t=d),f&&e==0&&(e=c);let _=new Ar(t,S),A=new Ar(e,-S),v=null,M=null,O=null,T=null,C=_.clone().sub(A),P=0,I=0,L=0;p>0&&(P=Math.min(t,e)*(1-p),I=t-P,L=e-P);let G=_.clone();G.x-=P;let N=Math.PI-C.angle(),F=C.angle(),B=Math.tan(F/2),R=Math.tan(N/2),V=B+R,q=p?V:R,Y=p?V:B;if(d=Math.min(d,(t-I)/q,C.length()/V),c=Math.min(c,(e-L)/Y,C.length()/V),d>0){let U=d/B;v=_.clone().sub(new Ar(U,d)),p&&(O=v.clone(),O.x-=P-V*d),_.sub(C.clone().setLength(U))}if(c>0){let U=c/R;M=A.clone().sub(new Ar(U,-c)),A.add(C.clone().setLength(U)),p&&(T=M.clone(),T.x-=P-V*c,G.sub(C.clone().setLength(U)))}C=_.clone().sub(A);let $=C.length()<.5,H=[];for(let U=0;U<=o;U++){let z=[],oe=U/o,ee=oe*l+s,Q=new Ar(Math.sin(ee),Math.cos(ee));T&&M?(X(z,oe,Q,N,c,T,-1,!0),X(z,oe,Q,F,c,M,-1,!1)):M?(k(z,Q,M.x,0,-1),X(z,oe,Q,F,c,M,-1,!1)):a||k(z,Q,e,L,-1);let te=Hy(C).normalize();if(Qo(te,Q,w),!$)for(let Z=0;Z<=i;Z++){let se=Z/i,ne=C.clone().multiplyScalar(se).add(A);Qo(ne,Q,b),m.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(oe,.5+b.y/r),z.push(x++)}if(O&&v?(X(z,oe,Q,N,d,v,1,!1),X(z,oe,Q,F,d,O,1,!0)):v?(X(z,oe,Q,N,d,v,1,!1),k(z,Q,v.x,0,1)):a||k(z,Q,t,I,1),p&&!$){let Z=Hy(C).multiplyScalar(-1).normalize();Qo(Z,Q,w);for(let se=0;se<=i;se++){let ne=se/i,ie=C.clone().multiplyScalar(-ne).add(G);Qo(ie,Q,b),m.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(oe,.5+b.y/r),z.push(x++)}}p&&!a&&z.push(z[0]),H.push(z)}for(let U=0;U<H.length-1;U++)for(let z=0;z<H[0].length-1;z++){if(a&&p&&z==i)continue;let oe=H[U][z],ee=H[U+1][z],Q=H[U+1][z+1],te=H[U][z+1],Z=m[Q*3+0],se=m[Q*3+2];h.push(oe,ee,te),(Z!=0||se!=0)&&h.push(ee,Q,te)}l<Math.PI*2&&(W(-1,H[0],s),W(1,H[H.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new sc(m,3)),this.setAttribute("normal",new sc(y,3)),this.setAttribute("uv",new sc(g,2));function X(U,z,oe,ee,Q,te,Z,se){for(let ne=0;ne<u+1;ne++){let ie=ne/u,ue=Z<0?ie:1-ie;se&&(ue-=1),ue*=ee;let le=new Ar(Math.sin(ue),Math.cos(ue)*Z),de=le.clone().multiplyScalar(Q).add(te);Qo(de,oe,b),m.push(b.x,b.y,b.z),Qo(le,oe,w),y.push(w.x,w.y,w.z),g.push(z,.5+b.y/r),U.push(x++)}}function k(U,z,oe,ee,Q){let te=new ac,Z=new Ar,se=[oe,ee];Q<0&&se.reverse();for(let ne of se)Z.set(ne,S*Q),Qo(Z,z,te),m.push(te.x,te.y,te.z),y.push(0,Q,0),g.push(.5,.5),U.push(x++)}function W(U,z,oe){let ee=new Ar(Math.sin(oe),Math.cos(oe)),Q=new Ar(-Math.cos(oe),Math.sin(oe)),te=new ac,Z=U<0?(ie,ue,le)=>h.push(ie,ue,le):(ie,ue,le)=>h.push(ie,le,ue),se=new Ar((t+e+I+L)/4,0);Qo(se,ee,te),m.push(te.x,te.y,te.z),y.push(Q.x,0,Q.y),g.push(.5,.5);let ne=x++;for(let ie of z){let ue=m.slice(ie*3,ie*3+3);m.push(...ue),y.push(Q.x,0,Q.y);let le=g.slice(ie*2,ie*2+2);g.push(...le),x++}for(let ie=ne+1;ie<x-1;ie++)Z(ne,ie,ie+1);Z(ne,x-1,ne+1)}}};var $y=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:d,cornerRadiusBottom:c,cornerSegments:u}=n.parameters,p;return l===0?(p=new LC,p.setAttribute("position",new BC([],3))):d>0||c>0||l<360?p=new cs(0,t/2,r,o,i,a,s,l*Math.PI/180,d,c,u,0,!0):p=new DC(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 GC,Float32BufferAttribute as ld,Vector3 as us}from"three";var Yy=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,d;return s==0?d=new VC(t,e,r,o,i,a):d=new ud(t,e,r,o,i,a,s,l),Object.assign(d,{userData:{...n,type:"CubeGeometry"}})}},cd=Math.PI/2,ud=class extends GC{constructor(t=1,e=1,r=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let d=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=[],u=[],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),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new ld(u,3)),this.setAttribute("normal",new ld(p,3)),this.setAttribute("uv",new ld(f,2));function y(S,w,b,_,A,v,M,O,T,C,P){let I=(v-2*s)/T,L=(M-2*s)/C,G=v/2-s,N=M/2-s,F=O/2,B=T+1,R=C+1,V=0,q=0,Y=new us;for(let $=0;$<R;$++){let H=$*L-N;for(let X=0;X<B;X++){let k=X*I-G;Y[S]=k*_,Y[w]=H*A,Y[b]=F,u.push(Y.x,Y.y,Y.z),Y[S]=0,Y[w]=0,Y[b]=O>0?1:-1,p.push(Y.x,Y.y,Y.z),f.push(X/T),f.push(1-$/C),V+=1}}for(let $=0;$<C;$++)for(let H=0;H<T;H++){let X=h+H+B*$,k=h+H+B*($+1),W=h+(H+1)+B*($+1),U=h+(H+1)+B*$;c.push(X,k,U),c.push(k,W,U),q+=6}d.addGroup(m,q,P),m+=q,h+=V}function g(S,w,b,_,A,v,M,O,T,C,P){let I=(M-2*s)/C,L=M/2-s,G=O/2-s,N=T/2,F=C+1,B=0,R=0,V=new us,q=new us;for(let Y=0;Y<l+1;Y++){let $=Y/l*cd,H=Math.sin($)*s,X=(1-Math.cos($))*s,k=Math.sin($),W=Math.cos($);V[w]=(G+H)*A,V[b]=(N-X)*v,q[S]=0,q[w]=k*Math.sign(V[w]),q[b]=W*Math.sign(V[b]);for(let U=0;U<F;U++){let z=U*I-L;V[S]=z*_,u.push(V.x,V.y,V.z),p.push(q.x,q.y,q.z),f.push(U/C),f.push(0),B+=1}}for(let Y=0;Y<l;Y++)for(let $=0;$<C;$++){let H=h+$+F*Y,X=h+$+F*(Y+1),k=h+($+1)+F*(Y+1),W=h+($+1)+F*Y;c.push(H,X,W),c.push(X,k,W),R+=6}d.addGroup(m,R,P),m+=R,h+=B}function x(S,w,b){let _=new us,A=new us(t/2,e/2,r/2);A.subScalar(s);let v=[],M=S*w*b>0?(T,C,P)=>c.push(T,C,P):(T,C,P)=>c.push(T,P,C);for(let T=0;T<=l;T++){let C=[],P=cd*(1-T/l),I=Math.cos(P),L=Math.sin(P),G=0;for(let N=0;N<=T;N++){let F=Math.cos(G),B=Math.sin(G);_.x=I*F,_.y=L,_.z=I*B;let R=A.clone().addScaledVector(_,s);u.push(S*R.x,w*R.y,b*R.z),p.push(S*_.x,w*_.y,b*_.z),f.push(0,0),C.push(h++),G+=cd/T}v.push(C)}let O=v.length-1;for(let T=0;T<O;T++){let C=v[T],P=v[T+1],I=C.length-1;M(C[0],P[1],P[0]);for(let L=1;L<=I;L++)M(C[L-1],C[L],P[L]),M(C[L],P[L+1],P[L])}}}};import{BufferGeometry as zC,Float32BufferAttribute as dd,Triangle as kC,Vector3 as _o,Vector2 as pd}from"three";var Zo=class extends zC{constructor(t=[],e=[],r="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],d=[];c(),u(),this.setAttribute("position",new dd(s,3)),this.setAttribute("normal",new dd(d,3)),this.setAttribute("uv",new dd(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 _o,m=h.clone(),y=new kC,g=i*o,x=o-g,S=a+1,w=new _o,b=(B,R)=>w.subVectors(B,R).normalize(),_=(B,R)=>Array(B).fill(void 0).map(R),A=_(t.length/3,(B,R)=>new _o().fromArray(t,R*3).setLength(o)),v=[],M=1e6;for(let B=0;B<A.length;B++){let R=A[B],V=[],q,Y,$,H=1e10,X=-1;for(;(X=e.indexOf(B,X+1))!=-1;){let z=X-X%3;q=e[z+(X+1)%3],Y=e[z+(X+2)%3],$=R.distanceToSquared(A[q]),H=Math.min(H,$),V.push([q,Y,$])}H+=1e-6;let k=[],W=0,U=V.length;for(let z=0;z<U;z++){[q,Y,$]=V[W];let oe=v[q]?.includes(B)==!0;$<=H&&k.push(q+ +oe*M),W=V.findIndex(ee=>ee[0]==Y)}v.push(k)}let O=[];{let B=0,R=0,V,q,Y=f==3;for(let $=0;$<=a;$++){V=$*($+1)/2,q=($+1)*($+2)/2;for(let H=0;H<a-$;H++)[B,R]=[V+H+$+2,q+H+$+3],O.push(V,q,...Y?[R,V]:[B,q],R,B),[V,q]=[B,R];O.push(V,q,V+a+2)}}let T=h.clone(),C=h.clone(),P=h.clone(),I=h.clone(),L=h.clone(),G=[],N=_(A.length,()=>_(f,()=>h.clone()));for(let B=0;B<A.length;B++){h.copy(A[B]).normalize(),T.copy(h).multiplyScalar(x);let R=v[B];for(let k=0;k<R.length;k++){let W=R[k],U=R[(k+1)%f];y.setFromPointsAndIndices(A,B,W%M,U%M),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(T,N[B][k])}let V=[],q=[],Y=[],$=new _o;a==0&&[...N[B]].reduce((k,W)=>k.add(W),$).multiplyScalar(1/f);for(let k=0;k<f;k++){let W=[],U=(k-1+f)%f,z=N[B][U],oe=N[B][k];h.copy(z).sub(T),m.copy(oe).sub(T);let ee=T.angleTo(h),Q=h.angleTo(m),te=Math.cos(ee)*g;a==0?C.copy($):C.copy(T).setLength(x+te),q.push(te);let Z=[C,z,oe];for(let se=0;se<2;se++){let ne=Z[se],ie=Z[se+1];I.subVectors(ne,T),L.subVectors(ie,T),P.crossVectors(I,L).normalize();for(let ue=0;ue<S;ue++){let le=[ee,Q][se]*ue/S;h.copy(I).applyAxisAngle(P,le).add(T),V.push(h.clone()),se&&(b(h,T),W.push([ue==0?ne:h.clone(),w.clone()]))}se&&(b(ie,T),W.push([ie,w.clone()]))}Y.push(W)}G.push(Y);let H=2*S,X=2;for(let k=0;k<f;k++){let W=H*k,U=H*((k+1)%f),z=[V[W]];for(let ee=1;ee<S;ee++){I=V[W+ee],L=V[U+ee],z.push(I);for(let Q=1,te=ee-X+1;Q<=te;Q++)h.lerpVectors(I,L,Q/(te+1)),h.sub(T).setLength(q[k]).add(T),z.push(h.clone());z.push(L)}for(let ee=0;ee<S;ee++)z.push(V[ee+S+W]);z.push(V[U+S]);let oe=O.map(ee=>z[ee]);s.push(...oe.map(ee=>[ee.x,ee.y,ee.z]).flat()),d.push(...oe.map(ee=>(b(ee,T),[w.x,w.y,w.z])).flat())}}let F=[];for(let B=0;B<v.length;B++)for(let R=0;R<f;R++){let V=v[B][R];if(V<M){let q=v[V].findIndex(H=>H%M==B),Y=G[B][R],$=G[V][q];for(let H=0;H<S;H++){let X=Y[H],k=$[S-H],W=Y[H+1],U=$[S-(H+1)];[X,k,W,W,k,U].forEach(z=>{s.push(z[0].x,z[0].y,z[0].z),d.push(z[1].x,z[1].y,z[1].z)})}F.push(Y[0][0],$[S][0],Y[S][0],$[0][0])}}for(;F.length;){let B,R,V,q;[B,R]=F.splice(0,2);let Y=[B];for(;B!=R;)Y.push(R),V=F.indexOf(R),q=V%2,R=F.splice(V-q,2)[1-q];w.subVectors(Y[0],Y[1]).cross(h.subVectors(Y[0],Y[2])).normalize();let $=w.dot(Y[0])<0;$&&w.negate();for(let H=1;H<=Y.length-2;H++)[Y[H+ +$],Y[H+1-+$],Y[0]].forEach(X=>{s.push(X.x,X.y,X.z),d.push(w.x,w.y,w.z)})}}function u(){let p=new _o;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 v=b(p)/2/Math.PI+.5,M=_(p)/Math.PI+.5;l.push(v,1-M)}let f=new _o,h=new _o,m=new _o,y=new _o,g=new pd,x=new pd,S=new pd,w=(A,v,M,O)=>{O<0&&A.x===1&&(l[v]=A.x-1),M.x===0&&M.z===0&&(l[v]=O/2/Math.PI+.5)};for(let A=0,v=0;A<s.length;A+=9,v+=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[v+0],l[v+1]),x.set(l[v+2],l[v+3]),S.set(l[v+4],l[v+5]),y.copy(f).add(h).add(m).divideScalar(3);let M=b(y);w(g,v+0,f,M),w(x,v+2,h,M),w(S,v+4,m,M)}for(let A=0;A<l.length;A+=6){let v=l[A+0],M=l[A+2],O=l[A+4],T=Math.max(v,M,O),C=Math.min(v,M,O);T>.9&&C<.1&&(v<.2&&(l[A+0]+=1),M<.2&&(l[A+2]+=1),O<.2&&(l[A+4]+=1))}function b(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 Zo(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as FC}from"three";var Xy=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 ds(t*.5,i,a):new FC(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},ds=class extends Zo{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 ds(t.radius,t.corner,t.cornerSides)}};import{Plane as ZC,Shape as ug,Vector2 as Ao,Vector3 as JC,MathUtils as vd,LineCurve as bd,QuadraticBezierCurve as dg,CubicBezierCurve as dc}from"three";import{CubicBezierCurve as lc,EllipseCurve as jC,LineCurve as cc,LineCurve3 as UC,MathUtils as HC,QuadraticBezierCurve as hd,SplineCurve as qC,Vector2 as Bt,Vector3 as Zy}from"three";var ps=1e-12,Ui=class{constructor(t){this.position=new Bt;this.startPosition=new Bt;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 Ui(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Hi=class extends Ui{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Hi(this.parent).copy(this)}},Tr=class extends Ui{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Hi(this),new Hi(this))}static create(e,r){let o=new Tr(e,new Bt(...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 Tr(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 Bt,r=new Bt){let[o,i]=this.computeTangents();return o&&i&&(Ky(o,e),Ky(i,r)),[e,r]}computeTangent(e=new Bt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new Bt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Ky(n,t=new Bt){let e=n.length();return t.set(-n.y/e,n.x/e)}var md=n=>n,qi=new Bt,uc=new Bt,WC=new Bt,$C=new Bt,YC=new Bt,XC=new Bt,Jy=new Zy,eg=new Zy;function tg(n){let t=new Bt;t.addVectors(n.v0,qi.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Bt;return e.addVectors(n.v2,uc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new lc(n.v0,t,e,n.v2)}function fs(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function KC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function QC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function yd(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 rg(n,t,e){return Qy(n,t)&&Qy(t,e)&&fd(n.position,t.position,e.position)}function fd(n,t,e){return qi.copy(t).sub(n).cross(uc.copy(e).sub(n))===0}function og(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,d=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(s+l,a+d),o.set(s-l,a-d),[r,o]}function ng(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function ig(n,t,e,r,o,i){let a=t.x-n.x,s=t.y-n.y,l=e.x-n.x,d=e.y-n.y,c=Math.sqrt((a+l)*(a+l)+(s+d)*(s+d)),u;return yd(t,n,e)>Math.PI&&(c*=-1),fs(d,s)?u=(s+d)*(r/c-.5)*8/3/(a-l):u=(a+l)*(r/c-.5)*8/3/(d-s),o.set(t.x-u*s,t.y+u*a),i.set(e.x+u*d,e.y-u*l),[o,i]}function gd(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Qy(n,t){return fd(n.position,n.controls[1].position,t.position)&&fd(n.position,t.controls[0].position,t.position)}function ag(n,t,e,r,o=.5){let i=qi.subVectors(t,n).multiplyScalar(o).add(n),a=uc.subVectors(e,t).multiplyScalar(o).add(t),s=WC.subVectors(r,e).multiplyScalar(o).add(e),l=i,d=$C.subVectors(a,i).multiplyScalar(o).add(i),c=YC.subVectors(s,a).multiplyScalar(o).add(a),u=s,p=XC.subVectors(c,d).multiplyScalar(o).add(d);return[n.x,n.y,l.x,l.y,d.x,d.y,p.x,p.y,c.x,c.y,u.x,u.y,r.x,r.y]}function sg(n,t,e=12,r=!0){let o=eg.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let d=md(t[l]),c=qi,u=Jo(d,e);s.push(u);for(let p=0;p<=u;p++)if(d instanceof lc||d instanceof hd||d instanceof cc){if(d.getPoint(p/u,c),o.set(c.x,c.y,0),i!==void 0&&QC(i,o))continue;i===void 0&&(i=Jy),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 lg(n,t,e,r=12,o=!0){let i=eg.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let d,c=md(t[l]),u=qi,p=Jo(c,r);s.push(p);for(let f=0;f<=p;f++)if(c instanceof lc||c instanceof hd||c instanceof cc){if(c.getPoint(f/p,u),i.set(u.x,u.y,0),d?.equals(i))continue;d===void 0?d=Jy:(n.setXYZ(a,d.x,d.y,d.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),d.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 xd(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=Jo(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=Jo(a.curveAfter,t)),r.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Jo(n[0].roundedCurveCorner,t)*.5),r}function Jo(n,t=12){return n&&n instanceof jC?t*2:n&&(n instanceof cc||n instanceof UC)?1:n&&n instanceof qC?t*n.points.length:t}function cg(n,t,e=12,r=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=md(t[a]),l=Jo(s,e),d=qi;for(let c=0;c<=l;c++)if(s instanceof lc||s instanceof hd||s instanceof cc){if(s.getPoint(c/l,d),o!==void 0&&KC(o,d,ps))continue;o===void 0&&(o=uc),o.copy(d),n.push(d.x,d.y),i++}}return fs(n[0],n[n.length-2],ps)&&fs(n[1],n[n.length-1],ps)&&(n.pop(),n.pop()),r&&i>1&&!(fs(n[i-1],n[1],ps)&&fs(n[i-2],n[0],ps))&&(n.push(n[0],n[1]),i++),n}var Sd=new Ao,eP=new Ao,tP=new Ao,rP=new Ao,oP=new Ao,nP=new Ao,Ne=class extends ug{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=vd.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Ne;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Tr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Ne.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],d=l.points.length,c=l.getPointIndexById(e);if(c<0)i+=d;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=Sd.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=vd.generateUUID()){let i;e instanceof Ao?i=e:i=new Ao(e,r);let a=new Tr(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 sg(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=xd(this.points,e,!1),this.roundedCurveDivisions=xd(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return lg(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),cg(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=Jo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,d)=>l+d,0));for(let l=0,d=i.length;l<d;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(gd(i,a)){let u=i.position.distanceTo(a.position);return i.position.distanceTo(Sd.set(o.x,o.y))/u}let d=0;for(let u=0;u<e;u++)d+=s[u];return(r-d)/l}dispose(){}_applyCurveForPoint(e,r){gd(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],d=a.roundness,c=s&&l&&rg(s,a,l);if(!a.controlsMoved()&&d>0&&!c){let u=a.curveBefore,p=a.curveAfter;if(u===void 0||p===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=u.getLength(),y=p.getLength(),g=Math.min(d,m*.499),x=Math.min(d,y*.499),S=Math.min(g,x),w=1-S/m,b=S/y,_=u.getPointAt(w,Sd),A=p.getPointAt(b,eP);this._subSplitCurve(u,f,w,_,void 0),this._subSplitCurve(p,h,b,void 0,A);let v;if(this.useCubicForRoundedCorners){let M=yd(_,a.position,A)/2,O=Math.tan(M)*_.distanceTo(a.position),[T,C]=og(_,A,O,tP,rP),P=ng(T,C,a.position),[I,L]=ig(P,_,A,O,oP,nP);v=new dc(_.clone(),I.clone(),L.clone(),A.clone())}else v=new dg(_.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=v,this.roundedCurves.splice(o+r,0,v),r++}}}}_subSplitCurve(e,r,o,i,a){if(e instanceof bd)i!==void 0&&r.v2.copy(i),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,d=s.getUtoTmapping(o,0),c=ag(s.v0,s.v1,s.v2,s.v3,d);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 Ne(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],d=e.points[i+3],c=e.points[i+4],u=e.points[i+5],p=e.points[i+6],f=new Tr(vd.generateUUID(),new Ao(a,s));f.controls[0].position.set(l,d),f.controls[1].position.set(c,u),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Ne;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 dc&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,d;for(l=0,d=a.length;l<d;l++)a[l]instanceof dg&&(a[l]=tg(a[l]));for(l=0,d=a.length;l<d;l++){let p=a[l],f=l>0?a[l-1]:null,h;p instanceof dc?(h=this.createPoint(p.v0),h.controls[1].position.copy(p.v1)):p instanceof bd&&(h=this.createPoint(p.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let c=a[a.length-1],u=!1;return c instanceof dc?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),u=!0):c instanceof bd&&c.v2.equals(s[0].position)&&(u=!0),this.isClosed=u,s};return this.points=i(e.curves),e instanceof ug&&(this.shapeHoles=e.holes.map(a=>{let s=new Ne;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 _d=Math.PI*2;function wd({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function iP(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 pg(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 aP(n,t,e,r,o,i,a,s,l,d){let c=Math.pow(o,2),u=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),h=c*u-c*f-u*p;h<0&&(h=0),h/=c*f+u*p,h=Math.sqrt(h)*(l===d?-1:1);let m=h*o/i*s,y=h*-i/o*a,g=m+(n+e)/2,x=y+(t+r)/2,S=(a-m)/o,w=(s-y)/i,b=(-a-m)/o,_=(-s-y)/i,A=pg(1,0,S,w),v=pg(S,w,b,_);return!d&&v>0&&(v-=_d),d&&v<0&&(v+=_d),{centerx:g,centery:x,ang1:A,ang2:v}}function fg({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 d=(n-e)/2,c=(t-r)/2;if(d===0&&c===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(d,2)/Math.pow(o,2)+Math.pow(c,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let p=aP(n,t,e,r,o,i,d,c,a,s),{ang1:f,ang2:h}=p,{centerx:m,centery:y}=p,g=Math.abs(h)/(_d/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);h/=x;for(let S=0;S<x;S++)l.push(iP(f,h)),f+=h;return l.map(S=>{let{x:w,y:b}=wd(S[0],o,i,m,y),{x:_,y:A}=wd(S[1],o,i,m,y),{x:v,y:M}=wd(S[2],o,i,m,y);return{x1:w,y1:b,x2:_,y2:A,x:v,y:M}})}import{BufferAttribute as yc,BufferGeometry as xP}from"three";var Pe;(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"})(Pe||(Pe={}));var Xe;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Xe||(Xe={}));function me(n,t){if(!n)throw t||"Assertion Failed!"}var pe=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){me(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){me(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){me(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){me(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}(),hs=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}(),pc=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}(),Wi=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}(),hg=function(){function n(){var t=new Wi,e=new hs,r=new pc(0),o=new pc(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 pc(0),r=new pc(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;me(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;me(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 Wi,e=new Wi,r=new hs,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 Wi;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var a=new hs;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 hs;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 Wi;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 hs;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&&pe.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&pe.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,d;for(i=t,i=t;(o=i.next)!==t;i=o){me(o.prev===i),l=o.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(me(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){me(a.prev===s),l=a.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(me(a.prev===s&&a.anEdge===null),d=r,d=r;(l=d.next)!==r;d=l)me(l.Sym.next===d.Sym),me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Org!==null),me(l.Dst!==null),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l);me(l.Sym.next===d.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),mg=function(){function n(){this.handle=null}return n}(),yg=function(){function n(){this.key=null,this.node=0}return n}(),sP=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 mg,this.handles[r]=new yg;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,me(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 mg;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new yg}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;me(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}(),Ad=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}(),gg=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),lP=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new gg,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 gg;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}(),cP=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?pe.vertLeq(i.Org,a.Org)?pe.edgeSign(a.Dst,i.Org,a.Org)<=0:pe.edgeSign(i.Dst,a.Org,i.Org)>=0:pe.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return pe.edgeSign(i.Dst,o,i.Org)>=0;var s=pe.edgeEval(i.Dst,o,i.Org),l=pe.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&me(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){me(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 Ad;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 Pe.ODD:return(e&1)!==0;case Pe.NONZERO:return e!==0;case Pe.POSITIVE:return e>0;case Pe.NEGATIVE:return e<0;case Pe.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,d,c,u=!0;d=r;do me(pe.vertLeq(d.Org,d.Dst)),n.addRegionBelow(t,e,d.Sym),d=d.Onext;while(d!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,c=i;s=n.regionBelow(l),d=s.eUp.Sym,d.Org===c.Org;)d.Onext!==c&&(t.mesh.splice(d.Oprev,d),t.mesh.splice(c.Oprev,d)),s.windingNumber=l.windingNumber-d.winding,s.inside=n.isWindingInside(t,s.windingNumber),l.dirty=!0,!u&&n.checkForRightSplice(t,l)&&(n.addWinding(d,c),n.deleteRegion(t,l),t.mesh.delete(c)),u=!1,l=s,c=d;l.dirty=!0,me(l.windingNumber-d.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=pe.vertL1dist(e,t),i=pe.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(pe.vertLeq(o.Org,i.Org)){if(pe.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;pe.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(pe.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(me(!pe.vertEq(o.Dst,i.Dst)),pe.vertLeq(o.Dst,i.Dst)){if(pe.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(pe.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,d=i.Dst,c,u,p=new Wi,f,h;if(me(!pe.vertEq(d,l)),me(pe.edgeSign(l,t.event,a)<=0),me(pe.edgeSign(d,t.event,s)>=0),me(a!==t.event&&s!==t.event),me(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(c=Math.min(a.t,l.t),u=Math.max(s.t,d.t),c>u))return!1;if(pe.vertLeq(a,s)){if(pe.edgeSign(d,a,s)>0)return!1}else if(pe.edgeSign(l,s,a)<0)return!1;return n.debugEvent(t),pe.intersect(l,a,d,s,p),me(Math.min(a.t,l.t)<=p.t),me(p.t<=Math.max(s.t,d.t)),me(Math.min(d.s,l.s)<=p.s),me(p.s<=Math.max(s.s,a.s)),pe.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.event.t),f=pe.vertLeq(a,s)?a:s,pe.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),pe.vertEq(p,a)||pe.vertEq(p,s)?(n.checkForRightSplice(t,e),!1):!pe.vertEq(l,t.event)&&pe.edgeSign(l,t.event,p)>=0||!pe.vertEq(d,t.event)&&pe.edgeSign(d,t.event,p)<=0?d===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):(pe.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),pe.edgeSign(d,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,d),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,d=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(t,e),pe.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),d=!0),pe.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,a,null),d=!0),d){n.addRightEdges(t,e,r.Onext,i,i,!0);return}pe.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,pe.vertEq(o.Org,r)){me(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!pe.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}me(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(me(i!==a),n.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(r.anEdge,a),pe.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,d=new Ad;if(d.eUp=e.anEdge.Sym,r=t.dict.search(d).key,o=n.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,pe.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=pe.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);me(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 Ad,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 lP(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||(me(e.fixUpperEdge),me(++r===1)),me(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,pe.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 sP(i,pe.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,me(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||!pe.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}(),uP=function(){function n(){this.mesh=new hg,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=Pe.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],d=[0,0,0],c=[0,0,0],u=[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],d[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<d[g]&&(d[g]=i,h[g]=e),i>l[g]&&(l[g]=i,f[g]=e);var x=0;if(l[1]-d[1]>l[0]-d[0]&&(x=1),l[2]-d[2]>l[x]-d[x]&&(x=2),d[x]>=l[x]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[x],o=f[x],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)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],p[0]=c[1]*u[2]-c[2]*u[1],p[1]=c[2]*u[0]-c[0]*u[2],p[2]=c[0]*u[1]-c[1]*u[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,d=t.next;d!==t;d=d.next)l?(this.bmin[0]=this.bmax[0]=d.s,this.bmin[1]=this.bmax[1]=d.t,l=!1):(d.s<this.bmin[0]&&(this.bmin[0]=d.s),d.s>this.bmax[0]&&(this.bmax[0]=d.s),d.t<this.bmin[1]&&(this.bmin[1]=d.t),d.t>this.bmax[1]&&(this.bmax[1]=d.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(;pe.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;pe.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(pe.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(pe.edgeGoesLeft(o.Lnext)||pe.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&&(pe.edgeGoesRight(r.Lprev)||pe.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 d=t.vHead.next;d!==t.vHead;d=d.next)d.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 d=i.Org;d.n===-1&&(d.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===Xe.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 d=t.vHead.next;d!==t.vHead;d=d.next)if(d.n!==-1){var u=d.n*o;this.vertices[u+0]=d.coords[0],this.vertices[u+1]=d.coords[1],o>2&&(this.vertices[u+2]=d.coords[2]),this.vertexIndices[d.n]=d.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 d=i.Org;this.elements[p++]=d.n,l++,i=i.Lnext}while(i!==c.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-1;if(e===Xe.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,d=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[d++]=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 hg),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=Pe.ODD),e===void 0&&(e=Xe.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_(),cP.computeInterior(this,a);var s=this.mesh;return e===Xe.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===Xe.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},n}();function Cr(n){var t=n.windingRule,e=t===void 0?Pe.ODD:t,r=n.elementType,o=r===void 0?Xe.POLYGONS:r,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,d=n.normal,c=d===void 0?[0,0,1]:d,u=n.contours,p=u===void 0?[]:u,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 uP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(l||2,p[x]);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 Q4=Pe.ODD,Z4=Pe.NONZERO,J4=Pe.POSITIVE,e5=Pe.NEGATIVE,t5=Pe.ABS_GEQ_TWO,r5=Xe.POLYGONS,o5=Xe.CONNECTED_POLYGONS,n5=Xe.BOUNDARY_CONTOURS;import{Box2 as mP,BufferAttribute as mc,BufferGeometry as yP,Vector2 as gP}from"three";var fc=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*fc.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*fc.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 d=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)),d.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),d.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=d,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)}},ms=fc;ms.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Sg=Rt(bg()),ys={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Md={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Id={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},Od=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),tn=class extends yP{constructor(e,r,o=0,i=12,a=3,s=Pe.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 d=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(T=>{let C=T.extractShapePointsToFlatArray([],i),P=[];for(let I=C.length-1;I>=1;I-=2){let L=C[I-1],G=C[I-0];P.push(L,G)}return P}),u=[],p=[];for(let T=0;T<d.length;T+=2)p.push([d[T],d[T+1]]);u.push(p);for(let T=0;T<c.length;T++){let C=c[T],P=[];for(let I=0;I<C.length;I+=2)P.push([C[I],C[I+1]]);u.push(P)}let f;e.isText?f=new mP().setFromPoints(e.points.map(C=>C.position)).getSize(new gP).length()*.1:u[0].length===0?f=o:f=(0,Sg.default)(u).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=Cr({windingRule:s,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[d]})}catch{h=ys}let m;try{m=Cr({windingRule:Pe.ODD,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]})}catch{m=Md}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 C=m.elements[T],P=T%2===0?h.vertexCount:0;h.elements.push(C+P)}for(let T=0;T<m.vertexIndices.length;T++){let C=m.vertexIndices[T],P=h.vertexCount;h.vertexIndices.push(C+P)}for(let T=0;T<m.vertices.length;T++){let C=m.vertices[T];h.vertices.push(C)}}let g=1/0,x=-1/0,S=1/0,w=-1/0;for(let T=0,C=h.vertexCount;T<C;T++){let P=T*2,I=h.vertices[P+0],L=h.vertices[P+1];I<g&&(g=I),I>x&&(x=I),L<S&&(S=L),L>w&&(w=L)}this._minX=g,this._minY=S,this._width=x-g,this._height=w-S,this._buffer=new ms(this._computeBufferEstimatedSize(h));let b=[],_=[];for(let T=h.elementCount-1;T>=0;T--){let C=T>=y,P=T*2,I=h.elements[P+0],L=h.elements[P+1],G=I+L,N={start:I,count:L,normals:[],continuous:[],concave:[]},F=I,B=G-1,R=I+1,V=this._shape.roundedCurves.length;do{let X=F-I,k=h.vertices[B*2+0],W=h.vertices[B*2+1],U=h.vertices[F*2+0],z=h.vertices[F*2+1],oe=h.vertices[R*2+0],ee=h.vertices[R*2+1],Q=U-k,te=z-W,Z=Math.sqrt(Q*Q+te*te);Q/=Z,te/=Z;let se=U-oe,ne=z-ee,ie=Math.sqrt(se*se+ne*ne);se/=ie,ne/=ie,N.normals[X*2+0]=-ne,N.normals[X*2+1]=se,N.concave[X]=Q*ne-te*se>0;let ue=h.vertexIndices[F];if(Array.isArray(ue))N.continuous[X]=!1;else{let[le,de]=this._shape.getCurveIndexFromVertexId(ue-1,!0);if(de>0&&de<1)N.continuous[X]=!0;else{let ge=de===1?le+1:le-1;ge=(ge+V)%V;let Oe=de===1?0:1,He=this._shape.roundedCurves[le].getTangent(de),Me=this._shape.roundedCurves[ge].getTangent(Oe);N.continuous[X]=He.dot(Me)>.95}}C&&(N.normals[X*2+0]*=-1,N.normals[X*2+1]*=-1),[B,F,R]=[F,R,R+1],R>=G&&(R-=L)}while(R!==I+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(I*2,G*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((X,k)=>[k,k]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(I*2,G*2)});let Y=0;for(let X=1;X<=this._bevelSegments;X++){let k=X/this._bevelSegments*Math.PI/2,W=(1-Math.cos(k))*this._bevel,U=[],z=[],oe=[],ee=[],Q=0;for(let Z=0;Z<L;Z++){let se=Z*2,ne=(Z-1+L)%L*2,ie=h.vertices[N.start*2+se+0],ue=h.vertices[N.start*2+se+1],le=-N.normals[ne+0]*W,de=-N.normals[ne+1]*W,ge=-N.normals[se+0]*W,Oe=-N.normals[se+1]*W;if(N.concave[Z]||!N.concave[Z]&&C){let He=Math.atan2(de,le),Me=Math.atan2(Oe,ge);Me>He&&(Me-=Math.PI*2);let Ge=Me-He;if(N.continuous[Z]||C){let Ut=He+Ge/2,Se=Math.cos(Ut)*W,ut=Math.sin(Ut)*W;U[2*Q+0]=ie+Se*(C?-1:1),U[2*Q+1]=ue+ut*(C?-1:1),ee[Q]=Z,Q++}else{let Ut=Math.max(1,Math.floor(i/4*Math.abs(Ge)/Math.PI));for(let Se=0;Se<=Ut;Se++){let ut=He+Ge*(Se/Ut),mt=Math.cos(ut)*W,Qn=Math.sin(ut)*W;U[2*Q+0]=ie+mt,U[2*Q+1]=ue+Qn,ee[Q]=Z,Q++}}}else U[2*Q+0]=ie+le,U[2*Q+1]=ue+de,ee[Q]=Z,z[Z]=Q,Q++,U[2*Q+0]=ie,U[2*Q+1]=ue,ee[Q]=Z,Q++,U[2*Q+0]=ie+ge,U[2*Q+1]=ue+Oe,ee[Q]=Z,oe[Z]=Q,Q++}let te=Cr({windingRule:Pe.POSITIVE,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[U],edgeCreateCallback:Z=>{let ne=Z.Org.idx,ie=ee[ne],ue=ee[(ne+1)%ee.length];Z.idx=[ie,ue],Z.Sym.idx=[ue,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;Y=(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+=L);for(let ue=se;ue<ie;ue++){let le=ue%L,de=(ue+1)%L;if(!N.continuous[le]||!N.continuous[de]){te.vertexIndices[Z]=[se,le],te.vertexIndices.splice(Z+1,0,[de,ne]),te.vertices.splice((Z+1)*2,0,te.vertices[Z*2],te.vertices[Z*2+1]);break}}}q.push({bevelI:X,angle:k,size:W,boundary:te,reverseMap:ee,insetPoints:U})}let $=(X,k,W)=>{let U=0,z=X.boundary.vertexIndices.length;for(;U<z&&W(X.boundary.vertexIndices[k]);)k=(k+1)%z,U++;return U},H=b.length;for(let X=1;X<q.length;X++){let k=q[X-1],W=q[X],U=k.boundary.vertexIndices.length,z=W.boundary.vertexIndices.length;if(!U||!z)break;let oe=N.concave.length,ee=0,Q=Od(ee,L);for(;!k.boundary.vertexIndices.filter(Q).length||!W.boundary.vertexIndices.filter(Q).length;)ee++,Q=Od(ee,L);let te=k.boundary.vertexIndices.findIndex(Q),Z=W.boundary.vertexIndices.findIndex(Q);do te=(te+1)%U;while(Q(k.boundary.vertexIndices[te]));do Z=(Z+1)%z;while(Q(W.boundary.vertexIndices[Z]));ee=(ee+1)%L;let se=ee,ne=0,ie=this._buildBevelVert(N,k,(te-1+U)%U,void 0,ne),ue=this._buildBevelVert(N,W,(Z-1+z)%z,void 0,ne),le=ie,de=ue,ge,Oe,He=!1;do{ne=(ee||oe)/oe,Q=Od(ee,L);let Me=$(k,te,Q),Ge=$(W,Z,Q),Ut=He;if(He=!1,Me&&!Ge){for(let Se=0;Se<Me;Se++)ge=this._buildBevelVert(N,k,(te+Se)%U,Se/(Me-1),ne),b.push(le.topN,ge.topP,de.topN),l===!1&&b.push(ge.bottomP,le.bottomN,de.bottomN),le=ge;He=!0}else if(!Me&&Ge)for(let Se=0;Se<Ge;Se++)Oe=this._buildBevelVert(N,W,(Z+Se)%z,Se/(Ge-1),ne),b.push(de.topN,le.topP,Oe.topP),l===!1&&b.push(le.bottomP,de.bottomN,Oe.bottomP),de=Oe;else if(Me&&Ge)if(ge=this._buildBevelVert(N,k,te,0,ne),Oe=this._buildBevelVert(N,W,Z,0,ne),Ut?(b.push(le.topN,Oe.topP,de.topN),b.push(le.topN,ge.topP,Oe.topP),l===!1&&(b.push(Oe.bottomP,le.bottomN,de.bottomN),b.push(Oe.bottomP,ge.bottomP,le.bottomN))):(b.push(de.topN,le.topN,ge.topP),b.push(de.topN,ge.topP,Oe.topP),l===!1&&(b.push(ge.bottomP,le.bottomN,de.bottomN),b.push(ge.bottomP,de.bottomN,Oe.bottomP))),le=ge,de=Oe,Me===Ge)for(let Se=1;Se<Me;Se++)ge=this._buildBevelVert(N,k,(te+Se)%U,Se/(Me-1),ne),Oe=this._buildBevelVert(N,W,(Z+Se)%z,Se/(Ge-1),ne),b.push(le.topN,ge.topP,de.topN),b.push(de.topN,ge.topP,Oe.topP),l===!1&&(b.push(ge.bottomP,le.bottomN,de.bottomN),b.push(ge.bottomP,de.bottomN,Oe.bottomP)),le=ge,de=Oe;else if(Me>Ge){let Se=Me/Ge,ut=0;for(let mt=1;mt<Me;mt++)ge=this._buildBevelVert(N,k,(te+mt)%U,mt/(Me-1),ne),b.push(le.topN,ge.topP,de.topN),l===!1&&b.push(ge.bottomP,le.bottomN,de.bottomN),le=ge,mt>(ut+1)*Se&&(ut++,Oe=this._buildBevelVert(N,W,(Z+ut)%z,ut/(Ge-1),ne),b.push(de.topN,ge.topP,Oe.topP),l===!1&&b.push(ge.bottomP,de.bottomN,Oe.bottomP),de=Oe)}else{let Se=Ge/Me,ut=0;for(let mt=1;mt<Ge;mt++)Oe=this._buildBevelVert(N,W,(Z+mt)%z,mt/(Ge-1),ne),b.push(de.topN,ge.topP,Oe.topP),l===!1&&b.push(ge.bottomP,de.bottomN,Oe.bottomP),de=Oe,mt>(ut+1)*Se&&(ut++,ge=this._buildBevelVert(N,k,(te+ut)%U,ut/(Me-1),ne),b.push(le.topN,ge.topP,de.topN),l===!1&&b.push(ge.bottomP,le.bottomN,de.bottomN),le=ge)}te=(te+Me)%U,Z=(Z+Ge)%z,ee=(ee+1)%oe}while(ee!==se)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,N,b),C){let X=[];for(let k=b.length-1;k>=H+2;k-=3){let W=b[k-2],U=b[k-1],z=b[k-0];X.push(z,U,W)}b.splice(H,b.length-H,...X)}if(C){let X=[];for(let k=q[q.length-1].boundary.vertices.length-1;k>=1;k-=2){let W=q[q.length-1].boundary.vertices[k-1],U=q[q.length-1].boundary.vertices[k-0];X.push(W,U)}_.push(X)}if(!C){let X=q[q.length-1],k;try{k=Cr({windingRule:q.length>1?Pe.POSITIVE:Pe.ODD,elementType:Xe.POLYGONS,vertexSize:2,strict:!0,contours:[X.insetPoints,..._]})}catch{k=Id}if(!k)throw new Error("Error generating geometry for surface");c.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let W=0;W<k.elementCount*3;W+=3){let U=this._buildSurfaceVert(k,k.elements[W+0],Y),z=this._buildSurfaceVert(k,k.elements[W+1],Y),oe=this._buildSurfaceVert(k,k.elements[W+2],Y);b.push(U.top,z.top,oe.top),l===!1&&b.push(oe.bottom,z.bottom,U.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new mc(Uint32Array.from(b),1),v=new mc(this._buffer.positions,3),M=new mc(this._buffer.normals,3),O=new mc(this._buffer.uvs,2);v.needsUpdate=!0,M.needsUpdate=!0,O.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",v),this.setAttribute("normal",M),this.setAttribute("uv",O),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),d=this._buildBevelVert(r,i,(a+1)%s);o.push(d.topP,l.topN,l.bottomN),o.push(d.topP,l.bottomN,d.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,d=(s-this._minY)/this._height;this.forPathBevel&&(d=1);let c=this._buffer.get(this.forPathBevel?1:2),u=c*3,p=c*2,f={top:c+0,bottom:c+1};return this._buffer.positions[u+0]=a,this._buffer.positions[u+1]=s,this._buffer.positions[u+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[u+0]=0,this._buffer.normals[u+1]=0,this._buffer.normals[u+2]=1,this._buffer.uvs[p+0]=l,this._buffer.uvs[p+1]=d,this.forPathBevel===!1&&(this._buffer.positions[u+3]=a,this._buffer.positions[u+4]=s,this._buffer.positions[u+5]=o,this._buffer.normals[u+3]=0,this._buffer.normals[u+4]=0,this._buffer.normals[u+5]=-1,this._buffer.uvs[p+2]=l,this._buffer.uvs[p+3]=d),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,d]=r.boundary.vertexIndices[o],c,u,p,f;l!==d?(u=l,c=d,f=!1,p=e.continuous[u]&&e.continuous[c]):(c=l,u=(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,x=u*2,S=r.boundary.vertices[y+0],w=r.boundary.vertices[y+1],b=(1-m)*this._bevel,_=(S-this._minX)/this._width,A=(w-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(_=a),A=1);let v=e.normals[g+0],M=e.normals[g+1],O=e.normals[x+0],T=e.normals[x+1];if(f){let G=O-v,N=T-M;v=v+G*(1-i),M=M+N*(1-i);let F=Math.sqrt(v*v+M*M);v/=F,M/=F}let C=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),P=C*3,I=C*2,L={i:o,fi:c,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1,pathBevelUCoord:a};return this._buffer.positions[P+0]=S,this._buffer.positions[P+1]=w,this._buffer.positions[P+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[P+0]=v*h,this._buffer.normals[P+1]=M*h,this._buffer.normals[P+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[P+3]=S,this._buffer.positions[P+4]=w,this._buffer.positions[P+5]=b,this._buffer.normals[P+3]=v*h,this._buffer.normals[P+4]=M*h,this._buffer.normals[P+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_),p||(this.forPathBevel?(C+=1,P+=3,I+=2):(C+=2,P+=6,I+=4),L.topP=C+0,L.bottomP=C+1,this._buffer.positions[P+0]=S,this._buffer.positions[P+1]=w,this._buffer.positions[P+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[P+0]=O*h,this._buffer.normals[P+1]=T*h,this._buffer.normals[P+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[P+3]=S,this._buffer.positions[P+4]=w,this._buffer.positions[P+5]=b,this._buffer.normals[P+3]=O*h,this._buffer.normals[P+4]=T*h,this._buffer.normals[P+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_)),this.vertexCache[s]=L,L}clone(){let e=new tn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var $i=class extends xP{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Pe.ODD;this.elementType=Xe.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Pe.ODD,elementType:Xe.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,d=!0,c,u;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,g=i[y+0],x=i[y+1];if(c!==void 0&&g!==c&&(l=!1),u!==void 0&&x!==u&&(d=!1),c=g,u=x,!l&&!d)break}if(!l&&!d)try{s=Cr({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=ys}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new yc(new Float32Array(p*3),3),this._normalAttribute=new yc(new Float32Array(p*3),3),this._uvAttribute=new yc(new Float32Array(p*2),2),this._indexAttribute=new yc(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,g=-1/0;for(let w=0,b=p;w<b;w++){let _=w*2,A=s.vertices[_+0],v=s.vertices[_+1];A<h&&(h=A),A>m&&(m=A),v<y&&(y=v),v>g&&(g=v)}let x=m-h,S=g-y;for(let w=0,b=p;w<b;w++){let _=w*2,A=s.vertices[_+0],v=s.vertices[_+1],M=(A-h)/x,O=(v-y)/S;this._positionAttribute.setXYZ(w,A,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,M,O)}for(let w=0,b=f;w<b;w++){let _=w*3,A=s.elements[_+0],v=s.elements[_+1],M=s.elements[_+2];this._indexAttribute.setX(_+0,A),this._indexAttribute.setX(_+1,v),this._indexAttribute.setX(_+2,M)}}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 $i(this._shape,this._curveSegments);return e.userData=yo(this.userData),e}};var Yi=class extends tn{constructor(e,r,o=0,i=12,a=3,s=Pe.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),d=this._buildBevelVert(r,i,(a+1)%s);o.push(d.topP,l.topN,l.bottomN),o.push(d.topP,l.bottomN,d.bottomP)}}clone(){let e=new Yi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var Xt=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:Pe.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 Ne?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new Ne(r,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Ne(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 $i(n.shape,o,{windingRule:a}):s=new Yi(n.shape,t,e,o,r,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as vP,Float32BufferAttribute as bP,MathUtils as Nd,Vector2 as _g}from"three";var Ag=Math.PI*2,Ki=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=Nd.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Ne?n.shape:new Ne,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,d=n.shape,c=t*.5,u=e*.5,p=SP(d,c,u,o*Math.PI/180,r,i);d.isClosed=!0,d.update();let f;return o===0?(f=new vP,f.setAttribute("position",new bP([],3))):f=Xt.create({shape:d,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function SP(n,t,e,r,o,i){if(r>=Ag)return o>30||o%4===0?(_P(n,t,e,i),Math.round(o/4)):wg(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},d=fg({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%d.length===0?wP(n,a.x,a.y,d,o,t,e,i):wg(n,r,o,t,e,i)}function wP(n,t,e,r,o,i,a,s){let l=Math.round(o/r.length);n.addPoint(Xi(t,e));for(let d=0,c=r.length;d<c;d++){let u=r[d],p=n.points[d],f=Xi(u.x,u.y);p.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return s>0?Tg(n,i,a,s):n.addPoint(Xi(0,0)),l}function wg(n,t,e,r,o,i){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,d=Math.sin(l)*r,c=Math.cos(l)*o;n.addPoint(Xi(d,c))}return t<Ag?i>0?Tg(n,r,o,i):n.addPoint(Xi(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Cg(n,r,o,i)),1}function _P(n,t,e,r=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;n.addPoint(gc(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(gc(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(gc(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(gc(o,i-e,o+s,i-e,o-s,i-e)),r>0&&Cg(n,t,e,r)}function Xi(n,t){return new Tr(Nd.generateUUID(),new _g(n,t))}function gc(n,t,e,r,o,i){let a=Xi(n,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,i),a}function Tg(n,t,e,r){Pg(n,t,e,r).forEach(i=>n.addPoint(i))}function Cg(n,t,e,r){let o=Pg(n,t,e,r),i=new Ne;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Pg(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new _g(o/t,i/e),s=n.points.map(l=>{let d=l.clone();return d.uuid=Nd.generateUUID(),d}).reverse();return s.forEach(l=>{l.position.multiply(a);let d=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(d)}),s}import{BufferGeometry as AP,Float32BufferAttribute as Ed,Uint32BufferAttribute as TP,Vector3 as Og}from"three";var Mg=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:d,cornerRadius:c,cornerSegments:u}=n.parameters,p=new gs(!1,t,e,r,o,i,a,s,l,d,c,u);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Ld=new TP([0,0,0],1),gs=class extends AP{constructor(t=!0,e=1,r=1,o=1,i=1,a=1,s=1,l=1,d=1,c=1,u=1,p=1){if(super(),a===0)return;let f=t&&a===1;f&&(p=0),u>100&&(u=100),u===0&&(p=0);let h=()=>new Og,m=new Og,y=h(),g=h(),x=h(),S,w,b,_,A,v,M,O,T=h(),C=h(),P=h(),I=h(),L=h(),G=h(),N=h(),F=h(),B=r-2*l+.001,R=B/a,V=Math.ceil(s*a),q=V+1,Y=B/V,$=-B/2,H=c+1,X=2*Math.PI/c,k=Math.PI/2/p,W=.01,U=Math.min((1-u/100)*l,l-W),z=l-U,oe=0,ee=2,Q=p*ee+ee,te=H*Q/ee,Z=te+H*q,se=Math.max(0,H*(q+Q)),[ne,ie,ue]=[3,3,2].map(rt=>Array(se*rt).fill(0)),le=[],de=i-l;function ge(rt,tr){let Br=Math.PI/2;v=tr*Y,O=2*Math.PI*(v%R)/R+Br,v+=$,M=Math.sin(O)*de,A=Math.cos(O)*de,t?rt.set(A,M,v):rt.set(A,v,M)}ge(m,-1e-10),ge(y,0),T.copy(m),ge(m,1);let Oe=m.distanceTo(y),He=f?0:z+U,Me=Oe*V+2*He,Ge=U,Ut=Me-He;for(let rt=0;rt<=V;rt++){ge(g,rt),F.subVectors(g,T).normalize(),T.copy(g),G.copy(g).setComponent(+t+1,0).normalize(),N.crossVectors(F,G).normalize();let tr=rt===0,Br=rt===V,Gv=tr?3*Math.PI/2:k,zv=tr?Ge:Ut,kv=tr?H:Z,Fv=tr?0:se-H,jv=F.clone().multiplyScalar(tr?-z:z).add(g),Uv=F.clone().multiplyScalar(tr?-1:1).normalize();for(let uo=0;uo<H;uo++){let Jp=uo*X;if(C.addVectors(m.copy(G).multiplyScalar(l*Math.cos(Jp)),y.copy(N).multiplyScalar(l*Math.sin(Jp))),P.copy(C).normalize(),tr||Br){f||(oe=Fv+uo,[0,1,2].forEach(Ht=>{ne[oe*3+Ht]=jv.getComponent(Ht),ie[oe*3+Ht]=Uv.getComponent(Ht)}),ue[oe*2]=+Br,ue[oe*2+1]=uo/c),y.copy(P).multiplyScalar(U),x.addVectors(g,y);for(let Ht=0;Ht<p;Ht++){let mu=Ht*k+Gv;I.addVectors(m.copy(F).multiplyScalar(z*Math.sin(mu)),y.copy(P).multiplyScalar(z*Math.cos(mu))),L.copy(I).normalize(),y.addVectors(x,I),I.normalize(),oe=kv+Ht*H+uo,[0,1,2].forEach(qs=>{ne[oe*3+qs]=y.getComponent(qs),ie[oe*3+qs]=L.getComponent(qs)});let Hv=+tr+Math.sin(mu);ue[oe*2]=(zv+z*Hv)/Me,ue[oe*2+1]=uo/c}}y.addVectors(g,C),oe=te+rt*H+uo,[0,1,2].forEach(Ht=>{ne[oe*3+Ht]=y.getComponent(Ht),ie[oe*3+Ht]=P.getComponent(Ht)}),ue[oe*2]=(He+rt*Oe)/Me,ue[oe*2+1]=uo/c}}let Se=q+2*p+ee,ut=1,[mt,Qn]=[+f,Se-1];for(let rt=mt;rt<=Qn-1;rt++){let tr=f&&rt===Qn-1;for(let Br=0;Br<H-1;Br++)S=rt*H+Br,w=S+1,b=(tr?Br:S)+H,_=(tr?Br+1:w)+H,rt===0?le.push(w,_,b):rt===Se-2?le.push(S,w,b):le.push(S,w,b,w,_,b)}this.setIndex(le),this.setAttribute("position",new Ed(ne,3)),this.setAttribute("normal",new Ed(ie,3)),this.setAttribute("uv",new Ed(ue,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,d=6*(e-1)*t.radialSegments,c=e,u=c===e;for(let p=0;p<t.radialSegments;p++)i=c*r+p,a=i+1,s=(u?p:i)+r,l=(u?p+1:a)+r,o[d++]=i,o[d++]=a,o[d++]=s,o[d++]=a,o[d++]=l,o[d++]=s;return o.length=d,Ld.array=o,Ld.count=o.length,Ld}};import{IcosahedronGeometry as CP}from"three";var Ig=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 xs(t*.5,i,a):new CP(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},xs=class extends Zo{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 xs(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as PP,Shape as OP}from"three";var Ng=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 OP;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 PP(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as zg,BufferGeometryLoader as kP,Vector3 as FP,BoxGeometry as kg}from"three";import{BufferGeometry as RP,Vector2 as Vd,Vector3 as Gg}from"three";import{Box3 as MP,BufferAttribute as vs,BufferGeometry as Eg,Color as Rd,EventDispatcher as IP,Float32BufferAttribute as Qi,Matrix3 as Lg,Matrix4 as Vg,MathUtils as NP,Object3D as EP,Sphere as LP,Vector2 as ar,Vector3 as Mt,Vector4 as DP}from"three";var Yr=new Vg,Dd=new EP,xc=new Mt,rn=class extends IP{constructor(){super(),this.uuid=NP.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 Lg().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 Yr.makeRotationX(t),this.applyMatrix4(Yr),this}rotateY(t){return Yr.makeRotationY(t),this.applyMatrix4(Yr),this}rotateZ(t){return Yr.makeRotationZ(t),this.applyMatrix4(Yr),this}translate(t,e,r){return Yr.makeTranslation(t,e,r),this.applyMatrix4(Yr),this}scale(t,e,r){return Yr.makeScale(t,e,r),this.applyMatrix4(Yr),this}lookAt(t){return Dd.lookAt(t),Dd.updateMatrix(),this.applyMatrix4(Dd.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,d=o.uv2;d!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new Mt().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new Rd().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 Mt().fromBufferAttribute(a,p),new Mt().fromBufferAttribute(a,f),new Mt().fromBufferAttribute(a,h)],x=new Zi(p,f,h,g,y,m);e.faces.push(x),l!==void 0&&e.faceVertexUvs[0].push([new ar().fromBufferAttribute(l,p),new ar().fromBufferAttribute(l,f),new ar().fromBufferAttribute(l,h)]),d!==void 0&&e.faceVertexUvs[1].push([new ar().fromBufferAttribute(d,p),new ar().fromBufferAttribute(d,f),new ar().fromBufferAttribute(d,h)])}let u=t.groups;if(u.length>0)for(let p=0;p<u.length;p++){let f=u[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(xc).negate(),this.translate(xc.x,xc.y,xc.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Vg;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 Mt,e=new Mt;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 Mt;if(t){let r=new Mt,o=new Mt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],d=this.vertices[s.b],c=this.vertices[s.c];r.subVectors(c,d),o.subVectors(l,d),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 rn;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 d=new Mt,c={a:new Mt,b:new Mt,c:new Mt};i.push(d),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],d=o.vertexNormals[i];l.copy(s.normal),d.a.copy(s.vertexNormals[0]),d.b.copy(s.vertexNormals[1]),d.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 MP),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new LP),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,d=t.faces,c=this.colors,u=t.colors;e!==void 0&&(o=new Lg().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=u.length;p<f;p++)c.push(u[p].clone());for(let p=0,f=d.length;p<f;p++){let h=d[p],m,y,g=h.vertexNormals,x=h.vertexColors,S=new Zi(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,b=g.length;w<b;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,b=x.length;w<b;w++)y=x[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],x=[];for(let S=0,w=g.length;S<w;S++)x.push(g[S].clone());this.faceVertexUvs[p].push(x)}}}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,d=this.vertices.length;l<d;l++){let c=this.vertices[l],u=Math.round(c.x*i)+"_"+Math.round(c.y*i)+"_"+Math.round(c.z*i);e[u]===void 0?(e[u]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[u]]}let a=[];for(let l=0,d=this.faces.length;l<d;l++){let c=this.faces[l];c.a=o[c.a],c.b=o[c.b],c.c=o[c.c];let u=[c.a,c.b,c.c];for(let p=0;p<3;p++)if(u[p]===u[(p+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let d=a[l];this.faces.splice(d,1);for(let c=0,u=this.faceVertexUvs.length;c<u;c++)this.faceVertexUvs[c].splice(d,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 Mt(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,d){return l.materialIndex-d.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 d=t[l]._id;a&&a.push(o[d]),s&&s.push(i[d])}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=[],d={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,g=!1,x=this.faceVertexUvs[0][h]!==void 0,S=m.normal.length()>0,w=m.vertexNormals.length>0,b=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,x),A=c(A,4,S),A=c(A,5,w),A=c(A,6,b),A=c(A,7,_),r.push(A),r.push(m.a,m.b,m.c),r.push(m.materialIndex),x){let v=this.faceVertexUvs[0][h];r.push(f(v[0]),f(v[1]),f(v[2]))}if(S&&r.push(u(m.normal)),w){let v=m.vertexNormals;r.push(u(v[0]),u(v[1]),u(v[2]))}if(b&&r.push(p(m.color)),_){let v=m.vertexColors;r.push(p(v[0]),p(v[1]),p(v[2]))}}function c(h,m,y){return y?h|1<<m:h&~(1<<m)}function u(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 d[m]!==void 0||(d[m]=l.length/2,l.push(h.x,h.y)),d[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 rn().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],x=[];for(let S=0,w=g.length;S<w;S++){let b=g[S];x.push(b.clone())}this.faceVertexUvs[p].push(x)}}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],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),h.vertexNormals.push(x)}}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 d=t.lineDistances;for(let p=0,f=d.length;p<f;p++)this.lineDistances.push(d[p]);let c=t.boundingBox;c!==null&&(this.boundingBox=c.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.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 Bd().fromGeometry(this),e=new Eg,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",vc.call(new vs(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",vc.call(new vs(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",Dg.call(new vs(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",Bg.call(new vs(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",Bg.call(new vs(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 d=a[s],c=new Qi(d.data.length*3,3);c.name=d.name,i.push(vc.call(c,d.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new Qi(t.skinIndices.length*4,4);e.setAttribute("skinIndex",Rg.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new Qi(t.skinWeights.length*4,4);e.setAttribute("skinWeight",Rg.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 Eg,r=t.geometry;if(t.isPoints||t.isLine){let o=new Qi(r.vertices.length*3,3),i=new Qi(r.colors.length*3,3);if(e.setAttribute("position",vc.call(o,r.vertices)),e.setAttribute("color",Dg.call(i,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new Qi(r.lineDistances.length,1);e.setAttribute("lineDistance",BP.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}};rn.prototype.isGeometry=!0;var Bd=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,d;if(l>0){d=[];for(let g=0;g<l;g++)d[g]={name:s[g].name,data:[]};this.morphTargets.position=d}let c=t.morphNormals,u=c.length,p;if(u>0){p=[];for(let g=0;g<u;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 x=e[g];this.vertices.push(r[x.a],r[x.b],r[x.c]);let S=x.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let b=x.normal;this.normals.push(b,b,b)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let b=x.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][g];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new ar,new ar,new ar))}if(a===!0){let b=o[1][g];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new ar,new ar,new ar))}for(let b=0;b<l;b++){let _=s[b].vertices;d[b].data.push(_[x.a],_[x.b],_[x.c])}for(let b=0;b<u;b++){let _=c[b].vertexNormals[g];p[b].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(h[x.a],h[x.b],h[x.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}},Zi=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 Mt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Rd,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 BP(n){return this.array.set(n),this}function Dg(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 Rd),t[e++]=i.r,t[e++]=i.g,t[e++]=i.b}return this}function Bg(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 ar),t[e++]=i.x,t[e++]=i.y}return this}function vc(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 Mt),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z}return this}function Rg(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 DP),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z,t[e++]=i.w}return this}var VP=["a","b","c"];function GP(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Gd(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function zd(n,t,e,r,o,i){let a=Math.min(n,t),s=Math.max(n,t),l=a+"_"+s,d;if(r.has(l))d=r.get(l);else{let c=e[a],u=e[s];d={a:c,b:u,newEdge:null,faces:[]},r.set(l,d)}d.faces.push(o),i[n].edges.push(d),i[t].edges.push(d)}function zP(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],zd(a.a,a.b,n,r,a,e),zd(a.b,a.c,n,r,a,e),zd(a.c,a.a,n,r,a,e)}function bc(n,t,e,r,o){n.push(new Zi(t,e,r,void 0,void 0,o))}function Ji(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function Sc(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var wc=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof RP?t=new rn().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 Gg,r,o,i,a,s,l=t.vertices,d=t.faces,c=t.faceVertexUvs[0],u=c!==void 0&&c.length>0,p=[],f=new Map;zP(l,d,p,f);let h=[],m,y,g,x,S,w,b;for(let W of Array.from(f.keys())){for(y=f.get(W),g=new Gg,S=3/8,w=1/8,b=y.faces.length,b!=2&&(S=.5,w=0,b!=1),g.addVectors(y.a,y.b).multiplyScalar(S),e.set(0,0,0),a=0;a<b;a++){for(x=y.faces[a],s=0;s<3&&(m=l[GP(x,VP[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,v,M,O,T,C,P=[];for(o=0,i=l.length;o<i;o++){for(T=l[o],O=p[o].edges,r=O.length,r==3?_=3/16:r>3&&(_=3/(8*r)),A=1-r*Number(_),v=_,r<=2&&(r==2?(A=3/4,v=1/8):r==1||r==0),C=T.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<r;a++)M=O[a],m=M.a!==T?M.a:M.b,e.add(m);e.multiplyScalar(Number(v)),C.add(e),P.push(C)}let I=P.concat(h),L=P.length,G,N,F,B=[],R=[],V,q,Y,$,H=new Vd,X=new Vd,k=new Vd;for(o=0,i=d.length;o<i;o++)x=d[o],G=Number(Gd(x.a,x.b,f).newEdge)+L,N=Number(Gd(x.b,x.c,f).newEdge)+L,F=Number(Gd(x.c,x.a,f).newEdge)+L,bc(B,G,N,F,x.materialIndex),bc(B,x.a,G,F,x.materialIndex),bc(B,x.b,N,G,x.materialIndex),bc(B,x.c,F,N,x.materialIndex),u&&(V=c[o],q=V[0],Y=V[1],$=V[2],H.set(Ji(q.x,Y.x),Ji(q.y,Y.y)),X.set(Ji(Y.x,$.x),Ji(Y.y,$.y)),k.set(Ji(q.x,$.x),Ji(q.y,$.y)),Sc(R,H,X,k),Sc(R,q,H,k),Sc(R,Y,X,H),Sc(R,$,k,X));t.vertices=I,t.faces=B,u&&(t.faceVertexUvs[0]=R)}};var pt=new FP,Fg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new zg().copy(new kg(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(pt),r={width:pt.x,height:pt.y,depth:pt.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 zg().copy(new kg(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(pt)):pt.set(a.width,a.height,a.depth),(t!==pt.x||e!==pt.y||r!==pt.z)&&i.scale(pt.x===0?1:t/pt.x,pt.y===0?1:e/pt.y,pt.z===0?1:r/pt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new wc(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 kP(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(pt);let a=100/pt.x;Object.assign(i.parameters,{width:100,height:pt.y*a,depth:pt.z*a}),t(this.build(i))})}};var _c=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 Ne?n.shape:new Ne,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,d=t*.5,c=e*.5,u=0,p=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,g=u+Math.sin(y)*d,x=p+Math.cos(y)*c;l.addPoint(l.createPoint(g,x))}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=Xt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as jP,Float32BufferAttribute as kd,Vector2 as Xr,Vector3 as bt}from"three";var jg=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,d=new jd(t*.5,e,o,i,a,s,l);return d.scale(1,1,r/t),Object.assign(d,{userData:{...n,type:"PyramidGeometry"}})}};function bs(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Fd(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 d=a.add(s).normalize();i.copy(n).addScaledVector(d,r/Math.sin(l/2))}else{let d=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(d)),i.addScaledVector(s,r/Math.sin(d))}}function UP(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var jd=class extends jP{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=[],d=[],c=[],u=[],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,x=Math.PI-g,S=new bt(0,-f,0),w=new bt(0,f,0),b=new Xr(t,-f),_=new Xr(m,-f),A=new Xr(0,w.y).sub(_),v=new Xr(0,w.y).sub(b),M=new Xr(A.y,-A.x).normalize(),O=new Xr(v.y,-v.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,C);let P;{let R=new bt(M.x,M.y,0),V=new bt(Math.cos(y)*R.x,R.y,Math.sin(y)*R.x);P=R.angleTo(V)}let I=a/Math.tan((Math.PI-A.angle())/2),L=a/Math.tan((Math.PI-P)/2),G=new bt;if(!i){d.push(S.x,S.y,S.z),c.push(0,-1,0),u.push(0,0);let R=p++,V=[],q=b.clone(),Y=I/Math.cos(Math.PI/r);q.x-=Y;for(let $=0;$<r;$++){let H=$/r*Math.PI*2+h,X=new Xr(Math.sin(H),Math.cos(H));bs(q,X,G),d.push(G.x,G.y,G.z),c.push(0,-1,0),u.push(0,0),V.push(p++)}for(let $=0;$<V.length;$++)l.push(V[$],R,V[($+1)%V.length])}let N=[];{let R=new bt,V=new bt,q=new bt,Y=new bt,$=new bt,H=new bt;for(let X=0;X<r;X++){let k=X/r*Math.PI*2+h,W=(X+.5)/r*Math.PI*2+h,U=(X+1)/r*Math.PI*2+h,z=new Xr(Math.sin(k),Math.cos(k)),oe=new Xr(Math.sin(W),Math.cos(W)),ee=new Xr(Math.sin(U),Math.cos(U));bs(b,z,V),bs(b,ee,q),bs(M,oe,R),Fd(w,V,q,L,L,Y),d.push(Y.x,Y.y,Y.z),Fd(V,w,q,L,I,$),d.push($.x,$.y,$.z),Fd(q,V,w,I,L,H),d.push(H.x,H.y,H.z),c.push(R.x,R.y,R.z),c.push(R.x,R.y,R.z),c.push(R.x,R.y,R.z),u.push(0,0),u.push(0,0),u.push(0,0);let Q=p++,te=p++,Z=p++;if(l.push(Q,te,Z),a>0){{let ie=V.clone().add(q).multiplyScalar(.5),ue=w.clone().sub(ie).normalize(),de=S.clone().sub(ie).normalize().add(ue).normalize().multiplyScalar(-1),ge=H.clone().sub($);F(ie,ge,de,A.angle())}let se,ne;{let ie=new bt;bs(O,ee,ie);let ue=H.clone().add(Y).multiplyScalar(.5);ue=UP(ue,q,w);let le=H.clone().sub(Y);[se,ne]=F(ue,le,ie,P,Y.y)}{let ie=se,ue=ie.clone().setY(0).normalize(),le=new bt(0,-1,0),de=ue.clone().cross(le);B(ie,ue,le,de)}N.concat(ne);{let ie=A.angle(),ue=Math.PI-ie,le=w.clone();le.y-=a/Math.sin(ie-Math.PI/2);let de=new bt,ge=[];for(let He=0;He<s;He++){let Me=[],Ge=Math.PI/2-ue*He/s,Ut=Math.cos(Ge),Se=Math.sin(Ge),ut=W;for(let mt=0;mt<=He;mt++){let Qn=Math.cos(ut),rt=Math.sin(ut);R.x=Ut*rt,R.y=Se,R.z=Ut*Qn,de.copy(le).addScaledVector(R,a),d.push(de.x,de.y,de.z),c.push(R.x,R.y,R.z),u.push(0,0),Me.push(p++),ut+=Math.PI*2/He/r}ge.push(Me)}ne.reverse(),ge.push(ne);let Oe=ge.length-1;for(let He=0;He<Oe;He++){let Me=ge[He],Ge=ge[He+1],Ut=Me.length-1;l.push(Ge[1],Me[0],Ge[0]);for(let Se=1;Se<=Ut;Se++)l.push(Me[Se],Me[Se-1],Ge[Se]),l.push(Ge[Se+1],Me[Se],Ge[Se])}}}}}this.setIndex(l),this.setAttribute("position",new kd(d,3)),this.setAttribute("normal",new kd(c,3)),this.setAttribute("uv",new kd(u,2));function F(R,V,q,Y,$){let H=-Y/2,X=(Math.PI-Y)/2,k=V.clone().normalize().cross(q);R.addScaledVector(q,-a/Math.sin(X));let W=new bt,U=new bt,z=1,oe=p,ee=[];for(let Q=0;Q<=s;Q++){let te=H+Q/s*Y;U.set(0,0,0),U.addScaledVector(k,Math.sin(te)),U.addScaledVector(q,Math.cos(te));for(let Z=0;Z<=z;Z++){let se=Z/z-.5;if(W.copy(R),W.addScaledVector(V,se),W.addScaledVector(U,a),$!=null){let ne=Math.max(0,W.y-$);W.addScaledVector(V,-ne/V.y)}d.push(W.x,W.y,W.z),c.push(U.x,U.y,U.z),u.push(0,0),Z===0&&ee.push(p),p++}}for(let Q=0;Q<s;Q++)for(let te=0;te<z;te++){let Z=oe+te+(z+1)*Q,se=Z+(z+1),ne=se+1,ie=Z+1;l.push(Z,se,ie),l.push(se,ne,ie)}return[R.clone().addScaledVector(V,.5),ee]}function B(R,V,q,Y){let $=Math.PI/2,H=v.angle()-$,X=[],k=new bt,W=new bt;for(let z=0;z<=s;z++){let oe=[],ee=z/s;for(let Q=0;Q<=z;Q++){let Z=((z?Q/z:0)-.5)*x,se=Math.cos(Z),ne=Math.sin(Z),ie=Math.atan(Math.tan(H)*se),ue=($+ie)*ee,le=Math.cos(ue),de=Math.sin(ue);k.set(0,0,0),k.addScaledVector(V,de*se),k.addScaledVector(q,le),k.addScaledVector(Y,de*ne),W.copy(R).addScaledVector(k,a),d.push(W.x,W.y,W.z),c.push(k.x,k.y,k.z),u.push(0,0),oe.push(p++)}X.push(oe)}let U=X.length-1;for(let z=0;z<U;z++){let oe=X[z],ee=X[z+1],Q=oe.length-1;l.push(oe[0],ee[1],ee[0]);for(let te=1;te<=Q;te++)l.push(oe[te-1],oe[te],ee[te]),l.push(oe[te],ee[te+1],ee[te])}}}};var Ac=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 Ne?n.shape:new Ne,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,d={x:e*.5,y:r*.5},c={x:-d.x,y:-d.y},u={x:d.x,y:d.y};function p(w,b,_){return b>e&&_>r?Math.min(w*e/b,w*r/_):b>e?w*e/b:_>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=u.x,y=u.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 x=!0;for(let w=0,b=t.points.length;w<b;w++)t.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let S=Xt.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as HP,Float32BufferAttribute as qP,MathUtils as Ug,SphereGeometry as WP}from"three";var Hg=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=Ug.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:d}=n.parameters,c;return d===0?(c=new HP,c.setAttribute("position",new qP([],3))):c=new WP(.5*t,o,i,a,s,l,d*Ug.DEG2RAD),c.scale(1,e/t,r/t),Object.assign(c,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as $P}from"three";var qg=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 $P(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as YP,Float32BufferAttribute as Ud,Vector3 as XP}from"three";var Wg=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 Hd(t,e,r,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},Hd=class extends YP{constructor(t=1,e=1,r=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],d=[],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 u=[],p=Math.PI/2,f=(W=0,U=0,z=0)=>new XP(W,U,z),h=f(),m=f(),[y,g,x]=[e/2,t/2,r/2],S=-g,w=+g,[b,_,A]=[f(S,-y,+x),f(S,-y,-x),f(S,+y,-x)],v=(W,U=!1)=>Math.sin(W-Math.PI/(1+ +U)),M=(W,U=!1)=>Math.cos(W-Math.PI/(1+ +U));A.y=Math.sin(o)*e-y;let O=Math.cos(o)*e-x,T=b.z-c;o<=p?(A.z=Math.min(O,T),A.z==T&&(A.y-=(O-T)/Math.tan(p-o))):_.z=Math.min(_.z-O-x,b.z-c),h.subVectors(b,_),m.subVectors(A,_);let C=Math.min(h.length(),m.length())*i/100,P=C*Math.tan(o/2),I=C/Math.cos(o/2),L=h.clone().normalize().add(m.normalize()).setLength(I).add(_);h.set(0,v(o,!0),M(o,!0)),u.push([A,h.clone()]);let G=(Math.PI-o)/a;for(let W=0;W<=a;W++){let U=p+o+W*G;h.set(0,Math.sin(U)*P,Math.cos(U)*P),h.add(L),m.set(0,v(U),M(U)),u.push([h.clone(),m.clone()])}u.push([b,f(0,1,0)]);let N=Math.sin(G/2)*P*2,F=u.length-1,B=u[0][0].distanceTo(u[1][0]),R=u[F-1][0].distanceTo(u[F][0]),V=B+N*a+R;u[0].push(1);for(let W=0;W<=a;W++)u[W+1].push(1-(B+W*N)/V);u[F].push(0);let[q,Y,$]=u[0],H,X,k;for(let W=1;W<u.length;W++)[H,X,k]=u[W],s.push(S,q.y,q.z,S,H.y,H.z,w,q.y,q.z,w,q.y,q.z,S,H.y,H.z,w,H.y,H.z),l.push(0,Y.y,Y.z,0,X.y,X.z,0,Y.y,Y.z,0,Y.y,Y.z,0,X.y,X.z,0,X.y,X.z),d.push(0,$,0,k,1,$,1,$,0,k,1,k),[q,Y,$]=[H,X,k];this.setAttribute("position",new Ud(s,3)),this.setAttribute("normal",new Ud(l,3)),this.setAttribute("uv",new Ud(d,2))}};var Tc=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 Ne?n.shape:new Ne,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:d}=n.parameters,c=n.shape,u=t*.5,p=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=u*r/100,x=p*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let w=0;w<o;w++){let b=m*w,_=f+Math.sin(b)*u,A=h+Math.cos(b)*p;c.addPoint(c.createPoint(_,A))}}else for(let w=0;w<o;w++){let b=f+Math.cos(y)*u,_=h+Math.sin(y)*p;c.addPoint(c.createPoint(b,_)),y+=m,b=f+Math.cos(y)*g,_=h+Math.sin(y)*x,w<=o,c.addPoint(c.createPoint(b,_)),y+=m}c.isClosed=!0;for(let w=0,b=c.points.length;w<b;w++)c.points[w].roundness=i;c.roundness=i,c.update();let S=Xt.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:d}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as KP}from"three";var $g=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 KP(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as QP,Float32BufferAttribute as ZP,MathUtils as JP}from"three";var Yg=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,d=e2(t,e,r,t*.5,a,i,0,0,o,s,l);return d.scale(1,e/t,1),Object.assign(d,{userData:{...n,type:"TorusGeometry"}})}};function e2(n,t,e,r,o,i,a,s,l,d,c){[t,e]=[e,t],a=t/2;let u=JP.clamp(o/360,0,1);if(u===0){let p=new QP;return p.setAttribute("position",new ZP([],3)),p}return u===1&&(d=0),new gs(!0,n,t,e,r,u,i,a,s,l,d,c)}import{TorusKnotGeometry as t2}from"three";var Xg=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 t2(s,e,r,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var Kg=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 Ne?n.shape:new Ne,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,d=t*.5,c=e*.5;s?(l.addPoint(l.createPoint(-d,c)),l.addPoint(l.createPoint(d,-c)),l.addPoint(l.createPoint(-d,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(d,-c)),l.addPoint(l.createPoint(-d,-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 u=Xt.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as Zg,Vector3 as St,Matrix3 as r2,Matrix4 as Mn,BufferGeometry as Jg,BufferAttribute as ea,MathUtils as Cc}from"three";function Qg(n,t){let e=2*Math.PI;return(n%e+e)%e===(t%e+e)%e}var o2=new Mn,n2=new Mn;function i2(n,t,e){let r=[new St,new St,new St],o=[new St,new St,new St];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=Cc.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Mn().makeBasis(r[0],r[1],r[2])}var e0=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??Ki.create({parameters:Uu}).userData.shape;return{path:n.path??Mi.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:i,extrusion:{...jl,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new qd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Jg,{userData:{...n,type:"PathGeometry"}})}},qd=class extends Jg{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)||!Qg(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),d=Math.min(Math.max(2,l-s+1),a+2),c=[],u=[];for(let B=0;B<d;B++){let R=this.inputs.path.isClosed?(B+s)%e.length:Math.min(B+s,e.length-1);c.push(e[R].clone()),u.push(r[R].clone())}let p=(B,R,V)=>{c[B]=c[B].clone().lerp(c[R],V),u[B]=i2(u[B],u[R],V)},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 B=c.length-1;c[B].copy(c[0]),u[B].copy(u[0])}this._applyPathModifiers(u,f,m);let{bevel:g,bevelSides:x}=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:b,infos:_,vertices:A}=this._computeShapePoints(w),v=0,M;S==="round"&&(M=new tn(this.inputs.shapeData,2*g,g,w,x,void 0,!0),v=M.getAttribute("position").count);let O=0,T=0;_.sort((B,R)=>B.start-R.start),_.forEach(B=>{B.verticesStart=O,B.verticesCount=B.continuous.reduce((R,V,q)=>R+(q===0||!V?2:1),0),T+=B.verticesCount,O=T});let C=T*d,P,I=0;if(this._isOpenEnded()&&S==="flat"){try{P=Cr({windingRule:Pe.ODD,elementType:Xe.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:b})}catch{P=Id}I=P.vertexCount}let L=C+2*I+v*2,G=C+2*I,N={positions:new Float32Array(L*3),normals:new Float32Array(L*3),uvs:new Float32Array(L*2)},F=[];if(_.forEach(B=>{this._extrudeRegion(B,A,u,c,N,F,this._isGeometryClosed()&&!this._isOpenEnded())}),P&&(this._closeEnd(P,C,F,N,u[0],c[0],!1),this._closeEnd(P,C+I,F,N,u[u.length-1],c[c.length-1],!0)),M){N.positions.set(M.getAttribute("position").array,G*3),N.normals.set(M.getAttribute("normal").array,G*3),N.uvs.set(M.getAttribute("uv").array,G*2);let B=F.length;F.push(...M.getIndex().array.map(q=>q+G)),G+=v,N.positions.set(M.getAttribute("position").array,G*3),N.normals.set(M.getAttribute("normal").array,G*3),N.uvs.set(M.getAttribute("uv").array,G*2);let R=F.length;F.push(...M.getIndex().array.map(q=>q+G)),this.setAttribute("position",new ea(N.positions,3)),this.setAttribute("normal",new ea(N.normals,3)),this.setAttribute("uv",new ea(N.uvs,2)),this.setIndex(F);let V=o2;V.copy(u[u.length-1]).setPosition(c[c.length-1]),this.applyMatrix4OnRange(V,G,L),V.copy(u[0]).setPosition(c[0]).multiply(n2.makeScale(1,1,-1)),this.applyMatrix4OnRange(V,G-v,G),this.reverseIndicesOnRange(B,R)}else this.setAttribute("position",new ea(N.positions,3)),this.setAttribute("normal",new ea(N.normals,3)),this.setAttribute("uv",new ea(N.uvs,2)),this.setIndex(F)}_extractPathPoints(){let r=nc(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 St,s=new St,l=new St,d=new St,c=new St(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=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(x).normalize(),b=S.clone().sub(g).normalize(),_=w.clone().add(b).normalize();l.copy(_),y===0&&(_.equals(c)||_.clone().negate().equals(c))&&c.set(0,0,1);let A=c.clone().cross(_).normalize(),v=_.clone().cross(A).normalize();c.copy(v),d.copy(A),y===0&&(a.copy(v),s.copy(_));let M=new Mn().makeBasis(A,v,_);r.push(M)}let u=i?s:l,p=i?a:new St(0,1,0),f=u.clone().cross(d).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);u.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let g=new Mn().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:d}=this.inputs.parameters.extrusion,c=new Mn,u=new Mn;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(Cc.lerp(a,a+s,h)*Cc.DEG2RAD);let m=Cc.lerp(l,d,h);u.makeScale(m,m,m),p.multiply(c).multiply(u)}),e}_computeShapePoints(e=12,r=Pe.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let S=y[x-1],w=y[x-0];g.push(S,w)}return g}),s;try{s=Cr({windingRule:r,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=ys}let l;try{l=Cr({windingRule:Pe.ODD,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Md}if(!s)throw new Error("error generating geometry");let d=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,u=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,x=s.vertices[g+0],S=s.vertices[g+1];x<c&&(c=x),x>u&&(u=x),S<p&&(p=S),S>f&&(f=S)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=d,g=m*2,x=s.elements[g+0],S=s.elements[g+1],w=x+S,b={start:x,count:S,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(b);let _=x,A=w-1,v=x+1,M=o.roundedCurves.length;do{let O=_-x,T=s.vertices[A*2+0],C=s.vertices[A*2+1],P=s.vertices[_*2+0],I=s.vertices[_*2+1],L=s.vertices[v*2+0],G=s.vertices[v*2+1],N=P-T,F=I-C,B=Math.sqrt(N*N+F*F);N/=B,F/=B;let R=P-L,V=I-G,q=Math.sqrt(R*R+V*V);R/=q,V/=q,b.normals[O*2+0]=-V,b.normals[O*2+1]=R;let Y=s.vertexIndices[_];if(Array.isArray(Y))b.continuous[O]=!1;else{let[$,H]=o.getCurveIndexFromVertexId(Y-1,!0);if(H>0&&H<1)b.continuous[O]=!0;else{let X=H===1?$+1:$-1;X=(X+M)%M;let k=H===1?0:1,W=o.roundedCurves[$].getTangent(H),U=o.roundedCurves[X].getTangent(k);b.continuous[O]=W.dot(U)>.95}}y&&(b.normals[O*2+0]*=-1,b.normals[O*2+1]*=-1),[A,_,v]=[_,v,v+1],v>=w&&(v-=S)}while(v!==x+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 d=new St,c=new St,u=new St,p=new St,f=new Zg;o.forEach((m,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let S=0;S<e.count;S++){let w=(e.start+S)*2;if(d.set(r[w+0],r[w+1],0),u.copy(d).applyMatrix4(m).add(g),e.continuous[S])p.set(e.normals[S*2+0],e.normals[S*2+1],0);else{let b=S===0?(e.start+e.count-1)*2:w-2;c.set(r[b+0],r[b+1],0),p.copy(d).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,x,u,p,f),x++,!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 b=S===e.count-1?e.start*2:w+2;c.set(r[b+0],r[b+1],0),p.copy(c).sub(d),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,x,u,p,f),x++}}});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),x=0;for(let S=0;S<e.count;S++){(!e.continuous[S]||S===0)&&x++;let w=S===e.count-1?0:x+1,b=y+x,_=y+w,A=g+w,v=g+x;e.isHole?s.push(b,A,_,b,v,A):s.push(b,_,A,b,A,v),x++}}}_closeEnd(e,r,o,i,a,s,l){let d=e.vertexCount,c=new St(0,0,l?-1:1).applyMatrix4(a),u=new St,p=new Zg;for(let h=0;h<d;h++){let m=2*h;u.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,r+h,u,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,x=f[m+(l?2:1)]+r;o.push(y,g,x)}}applyMatrix4OnRange(e,r,o){let i=e.elements,a=new r2().getNormalMatrix(e).elements,s,l,d,c,u=this.attributes.position,p=this.attributes.normal;if(!u||!p)return;let f=u.array,h=p.array,m=u.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],d=f[y+2],c=1/(i[3]*s+i[7]*l+i[11]*d+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*d+i[12])*c,f[y+1]=(i[1]*s+i[5]*l+i[9]*d+i[13])*c,f[y+2]=(i[2]*s+i[6]*l+i[10]*d+i[14])*c,s=h[y+0],l=h[y+1],d=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*d,h[y+1]=a[1]*s+a[4]*l+a[7]*d,h[y+2]=a[2]*s+a[5]*l+a[8]*d}u.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 t0,BufferGeometry as Wd}from"three";import{mergeBufferGeometries as a2}from"three/examples/jsm/utils/BufferGeometryUtils.js";function r0(){let n=new Wd;return n.setAttribute("position",new t0(new Float32Array([]),3)),n.setIndex(new t0(new Uint16Array([]),1)),n}var s2=r0().attributes,l2=12,c2=1,ta=class extends Wd{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,s2),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:d,textTransform:c}=e,u=Kl.getDisplayedValue(d),p=c===2?u.toUpperCase():c===3?u.toLowerCase():u,f=u2(e,r,p),{shapes:h,charWidths:m,charCoords:y}=r.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,x=(typeof i=="number"?i:1)*.5,S=h.map(_=>new Ne().fromShape(_,!0));this.vectorShapes=S;let w=S.map(_=>Xt.create({shape:_,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Pe.NONZERO:Pe.ODD,subdivisions:this.isLowResolution&&a>0?c2:l2}})),b=w.length?a2(w):r0();b.translate(-g,x,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(b.attributes).forEach(([_,A])=>{this.setAttribute(_,A)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=Wt(new Wd,ta.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 u2(n,t,e){let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
15
|
+
`));return u(NI.bind(void 0,n))}Jx.exports=EI});var rv=qt((Jre,tv)=>{"use strict";var DI=ev();function LI(){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 BI(n){var t=new LI;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,DI(t)}tv.exports=BI});var Ua=qt(Te=>{"use strict";var tr=rv(),uu={body:"",args:[],thisVars:[],localVars:[]};function Hp(n){if(!n)return uu;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 RI(n){return tr({args:n.args,pre:Hp(n.pre),body:Hp(n.body),post:Hp(n.proc),funcName:n.funcName})}function Qe(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(RI(n))}var ov={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var n in ov){var t=ov[n];Te[n]=Qe({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"eq"]=Qe({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:n+"eq"}),Te[n+"s"]=Qe({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"seq"]=Qe({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:n+"seq"})}})();var nv={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var n in nv){var t=nv[n];Te[n]=Qe({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:n}),Te[n+"eq"]=Qe({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:n+"eq"})}})();var iv={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};(function(){for(var n in iv){var t=iv[n];Te[n]=Qe({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"s"]=Qe({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"eq"]=Qe({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:n+"eq"}),Te[n+"seq"]=Qe({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:n+"seq"})}})();var av=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];(function(){for(var n=0;n<av.length;++n){var t=av[n];Te[t]=Qe({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"]=Qe({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 sv=["max","min","atan2","pow"];(function(){for(var n=0;n<sv.length;++n){var t=sv[n];Te[t]=Qe({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"]=Qe({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"]=Qe({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"]=Qe({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 lv=["atan2","pow"];(function(){for(var n=0;n<lv.length;++n){var t=lv[n];Te[t+"op"]=Qe({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"]=Qe({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"]=Qe({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"]=Qe({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=tr({args:["array"],pre:uu,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=tr({args:["array"],pre:uu,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=tr({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=tr({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=tr({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=tr({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=tr({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=tr({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=tr({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=tr({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=tr({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=tr({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=Qe({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=Qe({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"});Te.assigns=Qe({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"});Te.equals=tr({args:["array","array"],pre:uu,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 Lv=qt((Gie,Dv)=>{Dv.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 bN,Loader as SN}from"three";function ef(n){for(let t of Object.keys(n))n[t]===void 0&&delete n[t];return n}function Wt(n,t){return Object.setPrototypeOf(n,t),n}function $s(n){return Array.isArray(n)?n:[n]}function tf(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 Jv=typeof global=="object"&&global&&global.Object===Object&&global,Ys=Jv;var eb=typeof self=="object"&&self&&self.Object===Object&&self,tb=Ys||eb||Function("return this")(),lt=tb;var rb=lt.Symbol,gt=rb;var rf=Object.prototype,ob=rf.hasOwnProperty,nb=rf.toString,qa=gt?gt.toStringTag:void 0;function ib(n){var t=ob.call(n,qa),e=n[qa];try{n[qa]=void 0;var r=!0}catch{}var o=nb.call(n);return r&&(t?n[qa]=e:delete n[qa]),o}var of=ib;var ab=Object.prototype,sb=ab.toString;function lb(n){return sb.call(n)}var nf=lb;var cb="[object Null]",ub="[object Undefined]",af=gt?gt.toStringTag:void 0;function db(n){return n==null?n===void 0?ub:cb:af&&af in Object(n)?of(n):nf(n)}var or=db;function pb(n){return n!=null&&typeof n=="object"}var Ct=pb;var fb="[object Symbol]";function hb(n){return typeof n=="symbol"||Ct(n)&&or(n)==fb}var Zn=hb;function mb(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 Xs=mb;var yb=Array.isArray,Ze=yb;var gb=1/0,sf=gt?gt.prototype:void 0,lf=sf?sf.toString:void 0;function cf(n){if(typeof n=="string")return n;if(Ze(n))return Xs(n,cf)+"";if(Zn(n))return lf?lf.call(n):"";var t=n+"";return t=="0"&&1/n==-gb?"-0":t}var uf=cf;function xb(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var nr=xb;function vb(n){return n}var df=vb;var bb="[object AsyncFunction]",Sb="[object Function]",wb="[object GeneratorFunction]",_b="[object Proxy]";function Ab(n){if(!nr(n))return!1;var t=or(n);return t==Sb||t==wb||t==bb||t==_b}var Ks=Ab;var Tb=lt["__core-js_shared__"],Qs=Tb;var pf=function(){var n=/[^.]+$/.exec(Qs&&Qs.keys&&Qs.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Cb(n){return!!pf&&pf in n}var ff=Cb;var Pb=Function.prototype,Ob=Pb.toString;function Mb(n){if(n!=null){try{return Ob.call(n)}catch{}try{return n+""}catch{}}return""}var po=Mb;var Ib=/[\\^$.*+?()[\]{}|]/g,Nb=/^\[object .+?Constructor\]$/,Eb=Function.prototype,Db=Object.prototype,Lb=Eb.toString,Bb=Db.hasOwnProperty,Rb=RegExp("^"+Lb.call(Bb).replace(Ib,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Vb(n){if(!nr(n)||ff(n))return!1;var t=Ks(n)?Rb:Nb;return t.test(po(n))}var hf=Vb;function Gb(n,t){return n?.[t]}var mf=Gb;function zb(n,t){var e=mf(n,t);return hf(e)?e:void 0}var $t=zb;var kb=$t(lt,"WeakMap"),Zs=kb;var yf=Object.create,Fb=function(){function n(){}return function(t){if(!nr(t))return{};if(yf)return yf(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),gf=Fb;function jb(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 xf=jb;function Ub(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var vf=Ub;var Hb=800,qb=16,Wb=Date.now;function $b(n){var t=0,e=0;return function(){var r=Wb(),o=qb-(r-e);if(e=r,o>0){if(++t>=Hb)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var bf=$b;function Yb(n){return function(){return n}}var Sf=Yb;var Xb=function(){try{var n=$t(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Jn=Xb;var Kb=Jn?function(n,t){return Jn(n,"toString",{configurable:!0,enumerable:!1,value:Sf(t),writable:!0})}:df,wf=Kb;var Qb=bf(wf),_f=Qb;function Zb(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Af=Zb;var Jb=9007199254740991,eS=/^(?:0|[1-9]\d*)$/;function tS(n,t){var e=typeof n;return t=t??Jb,!!t&&(e=="number"||e!="symbol"&&eS.test(n))&&n>-1&&n%1==0&&n<t}var ei=tS;function rS(n,t,e){t=="__proto__"&&Jn?Jn(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Js=rS;function oS(n,t){return n===t||n!==n&&t!==t}var ti=oS;var nS=Object.prototype,iS=nS.hasOwnProperty;function aS(n,t,e){var r=n[t];(!(iS.call(n,t)&&ti(r,e))||e===void 0&&!(t in n))&&Js(n,t,e)}var ri=aS;function sS(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?Js(e,s,l):ri(e,s,l)}return e}var Rr=sS;var Tf=Math.max;function lS(n,t,e){return t=Tf(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Tf(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),xf(n,this,s)}}var Cf=lS;var cS=9007199254740991;function uS(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=cS}var oi=uS;function dS(n){return n!=null&&oi(n.length)&&!Ks(n)}var el=dS;var pS=Object.prototype;function fS(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||pS;return n===e}var ni=fS;function hS(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Pf=hS;var mS="[object Arguments]";function yS(n){return Ct(n)&&or(n)==mS}var yu=yS;var Of=Object.prototype,gS=Of.hasOwnProperty,xS=Of.propertyIsEnumerable,vS=yu(function(){return arguments}())?yu:function(n){return Ct(n)&&gS.call(n,"callee")&&!xS.call(n,"callee")},ii=vS;function bS(){return!1}var Mf=bS;var Ef=typeof exports=="object"&&exports&&!exports.nodeType&&exports,If=Ef&&typeof module=="object"&&module&&!module.nodeType&&module,SS=If&&If.exports===Ef,Nf=SS?lt.Buffer:void 0,wS=Nf?Nf.isBuffer:void 0,_S=wS||Mf,xn=_S;var AS="[object Arguments]",TS="[object Array]",CS="[object Boolean]",PS="[object Date]",OS="[object Error]",MS="[object Function]",IS="[object Map]",NS="[object Number]",ES="[object Object]",DS="[object RegExp]",LS="[object Set]",BS="[object String]",RS="[object WeakMap]",VS="[object ArrayBuffer]",GS="[object DataView]",zS="[object Float32Array]",kS="[object Float64Array]",FS="[object Int8Array]",jS="[object Int16Array]",US="[object Int32Array]",HS="[object Uint8Array]",qS="[object Uint8ClampedArray]",WS="[object Uint16Array]",$S="[object Uint32Array]",qe={};qe[zS]=qe[kS]=qe[FS]=qe[jS]=qe[US]=qe[HS]=qe[qS]=qe[WS]=qe[$S]=!0;qe[AS]=qe[TS]=qe[VS]=qe[CS]=qe[GS]=qe[PS]=qe[OS]=qe[MS]=qe[IS]=qe[NS]=qe[ES]=qe[DS]=qe[LS]=qe[BS]=qe[RS]=!1;function YS(n){return Ct(n)&&oi(n.length)&&!!qe[or(n)]}var Df=YS;function XS(n){return function(t){return n(t)}}var ai=XS;var Lf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wa=Lf&&typeof module=="object"&&module&&!module.nodeType&&module,KS=Wa&&Wa.exports===Lf,gu=KS&&Ys.process,QS=function(){try{var n=Wa&&Wa.require&&Wa.require("util").types;return n||gu&&gu.binding&&gu.binding("util")}catch{}}(),fo=QS;var Bf=fo&&fo.isTypedArray,ZS=Bf?ai(Bf):Df,tl=ZS;var JS=Object.prototype,e1=JS.hasOwnProperty;function t1(n,t){var e=Ze(n),r=!e&&ii(n),o=!e&&!r&&xn(n),i=!e&&!r&&!o&&tl(n),a=e||r||o||i,s=a?Pf(n.length,String):[],l=s.length;for(var d in n)(t||e1.call(n,d))&&!(a&&(d=="length"||o&&(d=="offset"||d=="parent")||i&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||ei(d,l)))&&s.push(d);return s}var rl=t1;function r1(n,t){return function(e){return n(t(e))}}var ol=r1;var o1=ol(Object.keys,Object),Rf=o1;var n1=Object.prototype,i1=n1.hasOwnProperty;function a1(n){if(!ni(n))return Rf(n);var t=[];for(var e in Object(n))i1.call(n,e)&&e!="constructor"&&t.push(e);return t}var Vf=a1;function s1(n){return el(n)?rl(n):Vf(n)}var si=s1;function l1(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Gf=l1;var c1=Object.prototype,u1=c1.hasOwnProperty;function d1(n){if(!nr(n))return Gf(n);var t=ni(n),e=[];for(var r in n)r=="constructor"&&(t||!u1.call(n,r))||e.push(r);return e}var zf=d1;function p1(n){return el(n)?rl(n,!0):zf(n)}var li=p1;var f1=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,h1=/^\w*$/;function m1(n,t){if(Ze(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Zn(n)?!0:h1.test(n)||!f1.test(n)||t!=null&&n in Object(t)}var kf=m1;var y1=$t(Object,"create"),ho=y1;function g1(){this.__data__=ho?ho(null):{},this.size=0}var Ff=g1;function x1(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var jf=x1;var v1="__lodash_hash_undefined__",b1=Object.prototype,S1=b1.hasOwnProperty;function w1(n){var t=this.__data__;if(ho){var e=t[n];return e===v1?void 0:e}return S1.call(t,n)?t[n]:void 0}var Uf=w1;var _1=Object.prototype,A1=_1.hasOwnProperty;function T1(n){var t=this.__data__;return ho?t[n]!==void 0:A1.call(t,n)}var Hf=T1;var C1="__lodash_hash_undefined__";function P1(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=ho&&t===void 0?C1:t,this}var qf=P1;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=Ff;ci.prototype.delete=jf;ci.prototype.get=Uf;ci.prototype.has=Hf;ci.prototype.set=qf;var xu=ci;function O1(){this.__data__=[],this.size=0}var Wf=O1;function M1(n,t){for(var e=n.length;e--;)if(ti(n[e][0],t))return e;return-1}var Eo=M1;var I1=Array.prototype,N1=I1.splice;function E1(n){var t=this.__data__,e=Eo(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():N1.call(t,e,1),--this.size,!0}var $f=E1;function D1(n){var t=this.__data__,e=Eo(t,n);return e<0?void 0:t[e][1]}var Yf=D1;function L1(n){return Eo(this.__data__,n)>-1}var Xf=L1;function B1(n,t){var e=this.__data__,r=Eo(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var Kf=B1;function ui(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])}}ui.prototype.clear=Wf;ui.prototype.delete=$f;ui.prototype.get=Yf;ui.prototype.has=Xf;ui.prototype.set=Kf;var Do=ui;var R1=$t(lt,"Map"),Lo=R1;function V1(){this.size=0,this.__data__={hash:new xu,map:new(Lo||Do),string:new xu}}var Qf=V1;function G1(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var Zf=G1;function z1(n,t){var e=n.__data__;return Zf(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Bo=z1;function k1(n){var t=Bo(this,n).delete(n);return this.size-=t?1:0,t}var Jf=k1;function F1(n){return Bo(this,n).get(n)}var eh=F1;function j1(n){return Bo(this,n).has(n)}var th=j1;function U1(n,t){var e=Bo(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var rh=U1;function di(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])}}di.prototype.clear=Qf;di.prototype.delete=Jf;di.prototype.get=eh;di.prototype.has=th;di.prototype.set=rh;var vn=di;var H1="Expected a function";function vu(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(H1);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(vu.Cache||vn),e}vu.Cache=vn;var oh=vu;var q1=500;function W1(n){var t=oh(n,function(r){return e.size===q1&&e.clear(),r}),e=t.cache;return t}var nh=W1;var $1=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Y1=/\\(\\)?/g,X1=nh(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace($1,function(e,r,o,i){t.push(o?i.replace(Y1,"$1"):r||e)}),t}),ih=X1;function K1(n){return n==null?"":uf(n)}var ah=K1;function Q1(n,t){return Ze(n)?n:kf(n,t)?[n]:ih(ah(n))}var ur=Q1;var Z1=1/0;function J1(n){if(typeof n=="string"||Zn(n))return n;var t=n+"";return t=="0"&&1/n==-Z1?"-0":t}var Ro=J1;function ew(n,t){t=ur(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Ro(t[e++])];return e&&e==r?n:void 0}var nl=ew;function tw(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var pi=tw;var sh=gt?gt.isConcatSpreadable:void 0;function rw(n){return Ze(n)||ii(n)||!!(sh&&n&&n[sh])}var lh=rw;function ch(n,t,e,r,o){var i=-1,a=n.length;for(e||(e=lh),o||(o=[]);++i<a;){var s=n[i];t>0&&e(s)?t>1?ch(s,t-1,e,r,o):pi(o,s):r||(o[o.length]=s)}return o}var uh=ch;function ow(n){var t=n==null?0:n.length;return t?uh(n,1):[]}var dh=ow;function nw(n){return _f(Cf(n,void 0,dh),n+"")}var il=nw;var iw=ol(Object.getPrototypeOf,Object),fi=iw;var aw="[object Object]",sw=Function.prototype,lw=Object.prototype,ph=sw.toString,cw=lw.hasOwnProperty,uw=ph.call(Object);function dw(n){if(!Ct(n)||or(n)!=aw)return!1;var t=fi(n);if(t===null)return!0;var e=cw.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&ph.call(e)==uw}var fh=dw;function pw(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 hh=pw;function fw(){this.__data__=new Do,this.size=0}var mh=fw;function hw(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var yh=hw;function mw(n){return this.__data__.get(n)}var gh=mw;function yw(n){return this.__data__.has(n)}var xh=yw;var gw=200;function xw(n,t){var e=this.__data__;if(e instanceof Do){var r=e.__data__;if(!Lo||r.length<gw-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new vn(r)}return e.set(n,t),this.size=e.size,this}var vh=xw;function hi(n){var t=this.__data__=new Do(n);this.size=t.size}hi.prototype.clear=mh;hi.prototype.delete=yh;hi.prototype.get=gh;hi.prototype.has=xh;hi.prototype.set=vh;var mi=hi;function vw(n,t){return n&&Rr(t,si(t),n)}var bh=vw;function bw(n,t){return n&&Rr(t,li(t),n)}var Sh=bw;var Th=typeof exports=="object"&&exports&&!exports.nodeType&&exports,wh=Th&&typeof module=="object"&&module&&!module.nodeType&&module,Sw=wh&&wh.exports===Th,_h=Sw?lt.Buffer:void 0,Ah=_h?_h.allocUnsafe:void 0;function ww(n,t){if(t)return n.slice();var e=n.length,r=Ah?Ah(e):new n.constructor(e);return n.copy(r),r}var Ch=ww;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 Ph=_w;function Aw(){return[]}var al=Aw;var Tw=Object.prototype,Cw=Tw.propertyIsEnumerable,Oh=Object.getOwnPropertySymbols,Pw=Oh?function(n){return n==null?[]:(n=Object(n),Ph(Oh(n),function(t){return Cw.call(n,t)}))}:al,yi=Pw;function Ow(n,t){return Rr(n,yi(n),t)}var Mh=Ow;var Mw=Object.getOwnPropertySymbols,Iw=Mw?function(n){for(var t=[];n;)pi(t,yi(n)),n=fi(n);return t}:al,sl=Iw;function Nw(n,t){return Rr(n,sl(n),t)}var Ih=Nw;function Ew(n,t,e){var r=t(n);return Ze(n)?r:pi(r,e(n))}var ll=Ew;function Dw(n){return ll(n,si,yi)}var $a=Dw;function Lw(n){return ll(n,li,sl)}var cl=Lw;var Bw=$t(lt,"DataView"),ul=Bw;var Rw=$t(lt,"Promise"),dl=Rw;var Vw=$t(lt,"Set"),pl=Vw;var Nh="[object Map]",Gw="[object Object]",Eh="[object Promise]",Dh="[object Set]",Lh="[object WeakMap]",Bh="[object DataView]",zw=po(ul),kw=po(Lo),Fw=po(dl),jw=po(pl),Uw=po(Zs),bn=or;(ul&&bn(new ul(new ArrayBuffer(1)))!=Bh||Lo&&bn(new Lo)!=Nh||dl&&bn(dl.resolve())!=Eh||pl&&bn(new pl)!=Dh||Zs&&bn(new Zs)!=Lh)&&(bn=function(n){var t=or(n),e=t==Gw?n.constructor:void 0,r=e?po(e):"";if(r)switch(r){case zw:return Bh;case kw:return Nh;case Fw:return Eh;case jw:return Dh;case Uw:return Lh}return t});var mo=bn;var Hw=Object.prototype,qw=Hw.hasOwnProperty;function Ww(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&qw.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Rh=Ww;var $w=lt.Uint8Array,gi=$w;function Yw(n){var t=new n.constructor(n.byteLength);return new gi(t).set(new gi(n)),t}var xi=Yw;function Xw(n,t){var e=t?xi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Vh=Xw;var Kw=/\w*$/;function Qw(n){var t=new n.constructor(n.source,Kw.exec(n));return t.lastIndex=n.lastIndex,t}var Gh=Qw;var zh=gt?gt.prototype:void 0,kh=zh?zh.valueOf:void 0;function Zw(n){return kh?Object(kh.call(n)):{}}var Fh=Zw;function Jw(n,t){var e=t?xi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var jh=Jw;var e_="[object Boolean]",t_="[object Date]",r_="[object Map]",o_="[object Number]",n_="[object RegExp]",i_="[object Set]",a_="[object String]",s_="[object Symbol]",l_="[object ArrayBuffer]",c_="[object DataView]",u_="[object Float32Array]",d_="[object Float64Array]",p_="[object Int8Array]",f_="[object Int16Array]",h_="[object Int32Array]",m_="[object Uint8Array]",y_="[object Uint8ClampedArray]",g_="[object Uint16Array]",x_="[object Uint32Array]";function v_(n,t,e){var r=n.constructor;switch(t){case l_:return xi(n);case e_:case t_:return new r(+n);case c_:return Vh(n,e);case u_:case d_:case p_:case f_:case h_:case m_:case y_:case g_:case x_:return jh(n,e);case r_:return new r;case o_:case a_:return new r(n);case n_:return Gh(n);case i_:return new r;case s_:return Fh(n)}}var Uh=v_;function b_(n){return typeof n.constructor=="function"&&!ni(n)?gf(fi(n)):{}}var Hh=b_;var S_="[object Map]";function w_(n){return Ct(n)&&mo(n)==S_}var qh=w_;var Wh=fo&&fo.isMap,__=Wh?ai(Wh):qh,$h=__;var A_="[object Set]";function T_(n){return Ct(n)&&mo(n)==A_}var Yh=T_;var Xh=fo&&fo.isSet,C_=Xh?ai(Xh):Yh,Kh=C_;var P_=1,O_=2,M_=4,Qh="[object Arguments]",I_="[object Array]",N_="[object Boolean]",E_="[object Date]",D_="[object Error]",Zh="[object Function]",L_="[object GeneratorFunction]",B_="[object Map]",R_="[object Number]",Jh="[object Object]",V_="[object RegExp]",G_="[object Set]",z_="[object String]",k_="[object Symbol]",F_="[object WeakMap]",j_="[object ArrayBuffer]",U_="[object DataView]",H_="[object Float32Array]",q_="[object Float64Array]",W_="[object Int8Array]",$_="[object Int16Array]",Y_="[object Int32Array]",X_="[object Uint8Array]",K_="[object Uint8ClampedArray]",Q_="[object Uint16Array]",Z_="[object Uint32Array]",Ue={};Ue[Qh]=Ue[I_]=Ue[j_]=Ue[U_]=Ue[N_]=Ue[E_]=Ue[H_]=Ue[q_]=Ue[W_]=Ue[$_]=Ue[Y_]=Ue[B_]=Ue[R_]=Ue[Jh]=Ue[V_]=Ue[G_]=Ue[z_]=Ue[k_]=Ue[X_]=Ue[K_]=Ue[Q_]=Ue[Z_]=!0;Ue[D_]=Ue[Zh]=Ue[F_]=!1;function fl(n,t,e,r,o,i){var a,s=t&P_,l=t&O_,d=t&M_;if(e&&(a=o?e(n,r,o,i):e(n)),a!==void 0)return a;if(!nr(n))return n;var c=Ze(n);if(c){if(a=Rh(n),!s)return vf(n,a)}else{var u=mo(n),p=u==Zh||u==L_;if(xn(n))return Ch(n,s);if(u==Jh||u==Qh||p&&!o){if(a=l||p?{}:Hh(n),!s)return l?Ih(n,Sh(a,n)):Mh(n,bh(a,n))}else{if(!Ue[u])return o?n:{};a=Uh(n,u,s)}}i||(i=new mi);var f=i.get(n);if(f)return f;i.set(n,a),Kh(n)?n.forEach(function(y){a.add(fl(y,t,e,y,n,i))}):$h(n)&&n.forEach(function(y,g){a.set(g,fl(y,t,e,g,n,i))});var h=d?l?cl:$a:l?li:si,m=c?void 0:h(n);return Af(m||n,function(y,g){m&&(g=y,y=n[g]),ri(a,g,fl(y,t,e,g,n,i))}),a}var hl=fl;var J_=1,eA=4;function tA(n){return hl(n,J_|eA)}var yo=tA;var rA="__lodash_hash_undefined__";function oA(n){return this.__data__.set(n,rA),this}var em=oA;function nA(n){return this.__data__.has(n)}var tm=nA;function ml(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new vn;++t<e;)this.add(n[t])}ml.prototype.add=ml.prototype.push=em;ml.prototype.has=tm;var rm=ml;function iA(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 om=iA;function aA(n,t){return n.has(t)}var nm=aA;var sA=1,lA=2;function cA(n,t,e,r,o,i){var a=e&sA,s=n.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var d=i.get(n),c=i.get(t);if(d&&c)return d==t&&c==n;var u=-1,p=!0,f=e&lA?new rm:void 0;for(i.set(n,t),i.set(t,n);++u<s;){var h=n[u],m=t[u];if(r)var y=a?r(m,h,u,t,n,i):r(h,m,u,n,t,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!om(t,function(g,x){if(!nm(f,x)&&(h===g||o(h,g,e,r,i)))return f.push(x)})){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 yl=cA;function uA(n){var t=-1,e=Array(n.size);return n.forEach(function(r,o){e[++t]=[o,r]}),e}var im=uA;function dA(n){var t=-1,e=Array(n.size);return n.forEach(function(r){e[++t]=r}),e}var am=dA;var pA=1,fA=2,hA="[object Boolean]",mA="[object Date]",yA="[object Error]",gA="[object Map]",xA="[object Number]",vA="[object RegExp]",bA="[object Set]",SA="[object String]",wA="[object Symbol]",_A="[object ArrayBuffer]",AA="[object DataView]",sm=gt?gt.prototype:void 0,bu=sm?sm.valueOf:void 0;function TA(n,t,e,r,o,i,a){switch(e){case AA:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case _A:return!(n.byteLength!=t.byteLength||!i(new gi(n),new gi(t)));case hA:case mA:case xA:return ti(+n,+t);case yA:return n.name==t.name&&n.message==t.message;case vA:case SA:return n==t+"";case gA:var s=im;case bA:var l=r&pA;if(s||(s=am),n.size!=t.size&&!l)return!1;var d=a.get(n);if(d)return d==t;r|=fA,a.set(n,t);var c=yl(s(n),s(t),r,o,i,a);return a.delete(n),c;case wA:if(bu)return bu.call(n)==bu.call(t)}return!1}var lm=TA;var CA=1,PA=Object.prototype,OA=PA.hasOwnProperty;function MA(n,t,e,r,o,i){var a=e&CA,s=$a(n),l=s.length,d=$a(t),c=d.length;if(l!=c&&!a)return!1;for(var u=l;u--;){var p=s[u];if(!(a?p in t:OA.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;++u<l;){p=s[u];var g=n[p],x=t[p];if(r)var S=a?r(x,g,p,t,n,i):r(g,x,p,n,t,i);if(!(S===void 0?g===x||o(g,x,e,r,i):S)){m=!1;break}y||(y=p=="constructor")}if(m&&!y){var w=n.constructor,b=t.constructor;w!=b&&"constructor"in n&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof b=="function"&&b instanceof b)&&(m=!1)}return i.delete(n),i.delete(t),m}var cm=MA;var IA=1,um="[object Arguments]",dm="[object Array]",gl="[object Object]",NA=Object.prototype,pm=NA.hasOwnProperty;function EA(n,t,e,r,o,i){var a=Ze(n),s=Ze(t),l=a?dm:mo(n),d=s?dm:mo(t);l=l==um?gl:l,d=d==um?gl:d;var c=l==gl,u=d==gl,p=l==d;if(p&&xn(n)){if(!xn(t))return!1;a=!0,c=!1}if(p&&!c)return i||(i=new mi),a||tl(n)?yl(n,t,e,r,o,i):lm(n,t,l,e,r,o,i);if(!(e&IA)){var f=c&&pm.call(n,"__wrapped__"),h=u&&pm.call(t,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?t.value():t;return i||(i=new mi),o(m,y,e,r,i)}}return p?(i||(i=new mi),cm(n,t,e,r,o,i)):!1}var fm=EA;function hm(n,t,e,r,o){return n===t?!0:n==null||t==null||!Ct(n)&&!Ct(t)?n!==n&&t!==t:fm(n,t,e,r,hm,o)}var mm=hm;function DA(n,t){return n!=null&&t in Object(n)}var ym=DA;function LA(n,t,e){t=ur(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var a=Ro(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&&oi(o)&&ei(a,o)&&(Ze(n)||ii(n)))}var gm=LA;function BA(n,t){return n!=null&&gm(n,t,ym)}var xm=BA;function RA(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var vm=RA;function VA(n,t){return t.length<2?n:nl(n,hh(t,0,-1))}var bm=VA;function GA(n,t){return mm(n,t)}var Su=GA;function zA(n,t){return t=ur(t,n),n=bm(n,t),n==null||delete n[Ro(vm(t))]}var Sm=zA;function kA(n){return fh(n)?void 0:n}var wm=kA;var FA=1,jA=2,UA=4,HA=il(function(n,t){var e={};if(n==null)return e;var r=!1;t=Xs(t,function(i){return i=ur(i,n),r||(r=i.length>1),i}),Rr(n,cl(n),e),r&&(e=hl(e,FA|jA|UA,wm));for(var o=t.length;o--;)Sm(e,t[o]);return e}),vi=HA;function qA(n,t,e,r){if(!nr(n))return n;t=ur(t,n);for(var o=-1,i=t.length,a=i-1,s=n;s!=null&&++o<i;){var l=Ro(t[o]),d=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var c=s[l];d=r?r(c,l,s):void 0,d===void 0&&(d=nr(c)?c:ei(t[o+1])?[]:{})}ri(s,l,d),s=s[l]}return n}var _m=qA;function WA(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],s=nl(n,a);e(s,a)&&_m(i,ur(a,n),s)}return i}var Am=WA;function $A(n,t){return Am(n,t,function(e,r){return xm(n,r)})}var Tm=$A;var YA=il(function(n,t){return n==null?{}:Tm(n,t)}),xr=YA;var he=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,he.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,he.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,he.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function Ya(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"&&Ya(r)}return Object.freeze(n)}function Cm(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 bi=class extends Error{};function xl(n){let t={...n};return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Vr(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 Si(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 Pm(){return typeof process<"u"}function Om(n,t){for(let e of n)t(e.id,e.data)!==!0&&Om(e.children,t)}function Mm(n,t){if(t(n.id,n.data)!==!0)for(let e of n.children)Mm(e,t)}var $e=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,$e.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ya(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&&Mm(o,r)}}traverse(e){Om(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 d=i.findIndex(c=>c.id===l);if(d<0)throw new Error;i=[...i],i[d]={...i[d],children:s}}Object.setPrototypeOf(i,$e.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,d=this.childrenArray(l),c={fi:o,id:i,data:a,children:s};return d=[...d,c],d.sort((p,f)=>p.fi-f.fi),e.localIndex=d.indexOf(c),{data:this.modifyArrayBy(l,d),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(d=>d.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 bi("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),d=l.findIndex(f=>f.id===i);l=[...l];let c=l.splice(d,1)[0],u=this.modifyArrayBy(a,l);a=r,l=u.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),u=u.modifyArrayBy(a,l),{data:u,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)=>Cm(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 Vr(0,o,o);{let a=i[0].fi;return Vr(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 Vr(l,l+o,o)}else return Vr(a.fi,s.fi,o)}}};var wi;(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 d=parseInt(l);if(isNaN(d))throw new Error("wrong index");i[l]=a[d],a[d]=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 d=o[l];d===void 0?delete a[l]:a[l]=d,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(wi||(wi={}));var ye=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ye.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ya(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(d=>d.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,ye.prototype);let r=e;return Pm()||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((d,c)=>d.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,u)=>c.fi-u.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 Vr(0,r,r);{let i=o[0].fi;return Vr(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 Vr(s,s+r,r)}else return Vr(i.fi,a.fi,r)}}};function _i(n){return n&&typeof n=="object"&&n instanceof ke}var ke=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&&!_i(r))return null;o+=1}r=r?xl(r):new ke;for(let[l,d]of Object.entries(t.props)){let c=r[l];i[l]=c,d===void 0?delete r[l]:r[l]=d}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=xl(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let d=xl(l);d[t.path[o-1]]=r,r=d}else{let d=new ke;d[t.path[o-1]]=r,r=d}}o-=1}let a=Object.setPrototypeOf(r,ke.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},Gr;(r=>{function n(o,i){return Xa(o,i)??o}r.apply=n;function t(o,i){return _u(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=ot.zoomOnce(l,s[a]),l===void 0)return i;if(!_i(l))return;a+=1}if(l===void 0)return i;if(!!_i(l))if(i.type===0){let d={...i.props};for(let c of Object.keys(l))delete d[c];return{...i,props:d}}else if(i.type===1||i.type===4||i.type===7){let d=wu([i],l);return d?(console.log(d),d):i}else return i}r.filterOp=e})(Gr||(Gr={}));function wu(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=Xa(o.data,t[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=wu(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 XA(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=Xa(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 Xa(n,t){if(!_i(t))return t;if(n instanceof $e){let e=wu(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ye)return XA(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let a=Xa(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 ke)return _u(n,t);if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let a=Xa(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 _u(n,t){if(n===void 0)return t;if(t===void 0)return n;if(!_i(t))return t;if(!_i(n))return Gr.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 ke;for(let o of e){let i=_u(n===void 0?void 0:n[o],t===void 0?void 0:t[o]);r[o]=i}return r}function Im(n,t){let e={cur:[],result:[],len:0};return n=Ka(n,t,e)??n,[n,e.result]}function vl(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function bl(n){n&&(n.len-=1)}function KA(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Nm(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=Ka(i.data,t,vl(e,a));bl(e),r=r||l!==void 0,l===void 0&&(l=i.data);let d=Nm(i.children,t,e);return d!==void 0?r=!0:d=i.children,{...i,id:a,data:l,children:d}});if(r)return o}function QA(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=Ka(i.data,t,vl(e,a));return bl(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 Ka(n,t,e){if(n instanceof $e){let r=Nm(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof ye)return QA(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,a)=>{let s=Ka(i,t,vl(e,a));return bl(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"&&!Si(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=Ka(a,t,vl(e,i));bl(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&&KA(e),r}else return}}var Sl;(t=>{function n(e,r){let o=ot.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})(Sl||(Sl={}));var nt;(s=>{function n(l,d){return{...l,path:l.path.slice(d)}}s.drop=n;function t(l,d){return e(l,d)?.data??l}s.applySimple=t;function e(l,d){let c=d.path;for(var u=[];;){let p;if(l instanceof ke&&d.type===0&&(p=l.runOp({...d,path:c.slice(u.length)}),p===null&&(p=void 0)),p===void 0&&u.length===c.length&&(l instanceof $e||l instanceof ye||l instanceof he?p=l.runOp(d):p=wi.runOp(l,d)),p!==void 0)if(p!==null){let m=p.data;for(let y=u.length-1;y>=0;y--){let g=c[y],x=u[y];if(x instanceof $e){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof ye){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof he){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof ke){let S={...x,[g]:m};m=Object.setPrototypeOf(S,ke.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let S=m;m=[...x],m[g]=S}else m={...x,[g]:m};else return null}return{data:m,actual:{...p.actual,path:c},reverse:{...p.reverse,path:c}}}else return null;let f=c[u.length],h;if(l instanceof $e){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof ye){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)u.push(l),l=h;else return null}}s.apply=e;function r(l,d){for(let c=0;c<l.length&&c<d.length;c++)if(l[c]!==d[c])return!0;return!1}s.pathDisjoint=r;function o(l,d){if(l.length!==d.length)return!1;for(let c=0;c<l.length;c++)if(l[c]!==d[c])return!1;return!0}s.pathEq=o;function i(l,d){return r(l.path,d.path)}s.commutative=i;function a(l,d){return l.type===0&&d.type===0&&o(l.path,d.path)?Object.keys(l.props).every(c=>d.props[c]!==void 0):!1}s.subsumed=a})(nt||(nt={}));var Qa;(l=>{function n(){return[]}l.empty=n;function t(d,c){let u=[];for(let p of d){let[f,...h]=p.path;f===c&&u.push({...p,path:h})}return u}l.removePrefix=t;function e(d,c){return d.map(u=>({...u,path:[c,...u.path]}))}l.addPrefix=e;function r(d,c){return[...d,...c]}l.concat=r;function o(d,c){return[...d.filter(p=>!c.some(f=>nt.subsumed(p,f))),...c]}l.compress=o;function i(d,c){return d.every(u=>c.every(p=>nt.commutative(u,p)))}l.commutative=i;function a(d,c){for(let u of c){let p=s(d,u);p!==null&&(d=p.data)}return d}l.applyAll=a;function s(d,c){var u=d;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=ot.zoom(u,[...h.path,h.id]),g=nt.apply(u,{...h,type:2})):(m=ot.zoom(u,[...h.path,h.id,"value"]),g=nt.apply(u,h)),g!==null){u=g.data;let[x,S]=Im(u,{[h.id]:m});u=x;for(let w=0;w<S.length;w++){let b=S[w],_=b.pop();if(typeof _=="number"){let A=[_];for(let M=w+1;M<S.length;M++){let O=S[M],T=O[O.length-1];if(typeof T=="number"&&ot.equal(b,O.slice(0,O.length-1)))A.push(T),S.splice(M,1);else break}let v=ot.zoom(u,b);y=v.map((M,O)=>A.includes(O)?h.id:M),m=v,_=b.pop()}else{if(_==="alphaOverride"||_==="alpha"){m/=100;let A=m,v=ot.zoom(u,b.slice(0,b.length-2)),M=v.layers.map(O=>O.id===b[b.length-1]?{...O,data:{...O.data,[_]:A}}:O);Object.setPrototypeOf(M,Object.getPrototypeOf(v.layers)),v.layers=M}y=h.id}p.push({type:0,path:b,props:{[_]:m}}),f.push({type:0,path:b,props:{[_]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let m=nt.apply(u,h);m!==null&&(p.push(m.actual),u=m.data,f.push(m.reverse))}}catch(m){if(m instanceof bi)return null;throw m}return{data:u,actual:p,reverse:f.reverse()}}l.apply=s})(Qa||(Qa={}));var Em=Symbol(),ZA=Symbol(),_l=Symbol(),Sn=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof wl);){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[_l];r&&r(),delete this._children[t]}}}},Tu=class extends Sn{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,wi.runOp(this._current,t),t.path)}},Cu=class extends Sn{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,he.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Dm={get(n,t){if(t===_l)return()=>{n._parent=null};if(t===Em)return n._current;if(t===ZA)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=Al(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]}}},JA={...Dm,set(n,t,e){let r={type:0,props:{[t]:Ye(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}},eT={...Dm,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}},Ai=class extends Sn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[_l]=()=>{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=Al(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)}},Ti=class extends Sn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[_l]=()=>{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=Al(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 Au(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&ot.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var wl=class extends Sn{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){Au(this.ts,e,t),Au(this.actual,r,t),Au(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Al(n,t,e){return e instanceof $e?new Ai(n,t,e):e instanceof ye?new Ti(n,t,e):e instanceof he?new Proxy(new Cu(n,t,e),eT):e!==null&&typeof e=="object"?Si(e)?e:new Proxy(new Tu(n,t,e),JA):e}function Pu(n){let t=new wl(n);return[Al(t,"",n),t]}function Vo(n,t){let[e,r]=Pu(n);return t(e),r.result()}function Ye(n){return n instanceof Ai||n instanceof Ti?n._current:n!==null&&typeof n=="object"?n[Em]:n}var ot;(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 d={...a};return Object.keys(l).forEach(c=>{delete d[c]}),d}else return a}o.removeOverridden=t;function e(i,a){if((i instanceof $e||i instanceof Ai)&&typeof a=="string")return i.data(a);if((i instanceof ye||i instanceof Ti)&&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})(ot||(ot={}));function Lm(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 Lt(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 Tl=class{},Za=class extends Tl{constructor(e){super();this.id=e}},Ja=class extends Tl{constructor(e){super();this.data=e}};var Mu;try{Mu=new TextDecoder}catch{}var re,zo,E=0;var jm=[],Iu=jm,Nu=0,Yt={},De,Go,dr=0,zr=0,ir,go,Vt=[],Be,Bm={useRecords:!1,mapsAsObjects:!0},es=class{},Du=new es;Du.name="MessagePack 0xC1";var Ci=!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 $m(()=>(Pl(),this?this.unpack(t,e):kr.prototype.unpack.call(Bm,t,e)));zo=e>-1?e:t.length,E=0,Nu=0,zr=0,Go=null,Iu=jm,ir=null,re=t;try{Be=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(Yt=this,this.structures)return De=this.structures,Cl();(!De||De.length>0)&&(De=[])}else Yt=Bm,(!De||De.length>0)&&(De=[]);return Cl()}unpackMultiple(t,e){let r,o=0;try{Ci=!0;let i=t.length,a=this?this.unpack(t,i):Il.unpack(t,i);if(e){for(e(a);E<i;)if(o=E,e(Cl())===!1)return}else{for(r=[a];E<i;)o=E,r.push(Cl());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Ci=!1,Pl()}}_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 Cl(){try{if(!Yt.trusted&&!Ci){let t=De.sharedLength||0;t<De.length&&(De.length=t)}let n=Je();if(E==zo)De.restoreStructures&&Rm(),De=null,re=null,go&&(go=null);else if(E>zo){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ci)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw De.restoreStructures&&Rm(),Pl(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Rm(){for(let n in De.restoreStructures)De[n]=De.restoreStructures[n];De.restoreStructures=null}function Je(){let n=re[E++];if(n<160)if(n<128){if(n<64)return n;{let t=De[n&63]||Yt.getStructures&&Um()[n&63];return t?(t.read||(t.read=Lu(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,Yt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[qm()]=Je();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Je(),Je());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Je();return t}else if(n<192){let t=n-160;if(zr>=E)return Go.slice(E-dr,(E+=t)-dr);if(zr==0&&zo<140){let e=t<16?Bu(t):Hm(t);if(e!=null)return e}return Eu(t)}else{let t;switch(n){case 192:return null;case 193:return ir?(t=Je(),t>0?ir[1].slice(ir.position1,ir.position1+=t):ir[0].slice(ir.position0,ir.position0-=t)):Du;case 194:return!1;case 195:return!0;case 196:return Ou(re[E++]);case 197:return t=Be.getUint16(E),E+=2,Ou(t);case 198:return t=Be.getUint32(E),E+=4,Ou(t);case 199:return wn(re[E++]);case 200:return t=Be.getUint16(E),E+=2,wn(t);case 201:return t=Be.getUint32(E),E+=4,wn(t);case 202:if(t=Be.getFloat32(E),Yt.useFloat32>2){let e=Ml[(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=Be.getFloat64(E),E+=8,t;case 204:return re[E++];case 205:return t=Be.getUint16(E),E+=2,t;case 206:return t=Be.getUint32(E),E+=4,t;case 207:return Yt.int64AsNumber?(t=Be.getUint32(E)*4294967296,t+=Be.getUint32(E+4)):t=Be.getBigUint64(E),E+=8,t;case 208:return Be.getInt8(E++);case 209:return t=Be.getInt16(E),E+=2,t;case 210:return t=Be.getInt32(E),E+=4,t;case 211:return Yt.int64AsNumber?(t=Be.getInt32(E)*4294967296,t+=Be.getUint32(E+4)):t=Be.getBigInt64(E),E+=8,t;case 212:if(t=re[E++],t==114)return Fm(re[E++]&63);{let e=Vt[t];if(e)return e.read?(E++,e.read(Je())):e.noBuffer?(E++,e()):e(re.subarray(E,++E));throw new Error("Unknown extension "+t)}case 213:return t=re[E],t==114?(E++,Fm(re[E++]&63,re[E++])):wn(2);case 214:return wn(4);case 215:return wn(8);case 216:return wn(16);case 217:return t=re[E++],zr>=E?Go.slice(E-dr,(E+=t)-dr):rT(t);case 218:return t=Be.getUint16(E),E+=2,zr>=E?Go.slice(E-dr,(E+=t)-dr):oT(t);case 219:return t=Be.getUint32(E),E+=4,zr>=E?Go.slice(E-dr,(E+=t)-dr):nT(t);case 220:return t=Be.getUint16(E),E+=2,Gm(t);case 221:return t=Be.getUint32(E),E+=4,Gm(t);case 222:return t=Be.getUint16(E),E+=2,zm(t);case 223:return t=Be.getUint32(E),E+=4,zm(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 tT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Lu(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>tT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Je);return n.highByte===0&&(n.read=Vm(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let a=n[o];r[a]=Je()}return r}return e.count=0,n.highByte===0?Vm(t,e):e}var Vm=(n,t)=>function(){let e=re[E++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=De[r]||Um()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Lu(o,n)),o.read()};function Um(){let n=$m(()=>(re=null,Yt.getStructures()));return De=Yt._mergeStructures(n,De)}var Eu=Ol,rT=Ol,oT=Ol,nT=Ol;function Ol(n){let t;if(n<16&&(t=Bu(n)))return t;if(n>64&&Mu)return Mu.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+=xt.apply(String,r),r.length=0)}return r.length>0&&(t+=xt.apply(String,r)),t}function Gm(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Je();return t}function zm(n){if(Yt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[qm()]=Je();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Je(),Je());return t}}var xt=String.fromCharCode;function Hm(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 xt.apply(String,e)}function Bu(n){if(n<4)if(n<2){if(n===0)return"";{let t=re[E++];if((t&128)>1){E-=1;return}return xt(t)}}else{let t=re[E++],e=re[E++];if((t&128)>0||(e&128)>0){E-=2;return}if(n<3)return xt(t,e);let r=re[E++];if((r&128)>0){E-=3;return}return xt(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 xt(t,e,r,o);{let i=re[E++];if((i&128)>0){E-=5;return}return xt(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 xt(t,e,r,o,i,a);let s=re[E++];if((s&128)>0){E-=7;return}return xt(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 xt(t,e,r,o,i,a,s,l);{let d=re[E++];if((d&128)>0){E-=9;return}return xt(t,e,r,o,i,a,s,l,d)}}else if(n<12){let d=re[E++],c=re[E++];if((d&128)>0||(c&128)>0){E-=10;return}if(n<11)return xt(t,e,r,o,i,a,s,l,d,c);let u=re[E++];if((u&128)>0){E-=11;return}return xt(t,e,r,o,i,a,s,l,d,c,u)}else{let d=re[E++],c=re[E++],u=re[E++],p=re[E++];if((d&128)>0||(c&128)>0||(u&128)>0||(p&128)>0){E-=12;return}if(n<14){if(n===12)return xt(t,e,r,o,i,a,s,l,d,c,u,p);{let f=re[E++];if((f&128)>0){E-=13;return}return xt(t,e,r,o,i,a,s,l,d,c,u,p,f)}}else{let f=re[E++],h=re[E++];if((f&128)>0||(h&128)>0){E-=14;return}if(n<15)return xt(t,e,r,o,i,a,s,l,d,c,u,p,f,h);let m=re[E++];if((m&128)>0){E-=15;return}return xt(t,e,r,o,i,a,s,l,d,c,u,p,f,h,m)}}}}}function Ou(n){return Yt.copyBuffers?Uint8Array.prototype.slice.call(re,E,E+=n):re.subarray(E,E+=n)}function wn(n){let t=re[E++];if(Vt[t])return Vt[t](re.subarray(E,E+=n));throw new Error("Unknown extension type "+t)}var km=new Array(4096);function qm(){let n=re[E++];if(n>=160&&n<192){if(n=n-160,zr>=E)return Go.slice(E-dr,(E+=n)-dr);if(!(zr==0&&zo<180))return Eu(n)}else return E--,Je();let t=(n<<5^(n>1?Be.getUint16(E):n>0?re[E]:0))&4095,e=km[t],r=E,o=E+n-3,i,a=0;if(e&&e.bytes==n){for(;r<o;){if(i=Be.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=[],km[t]=e,e.bytes=n;r<o;)i=Be.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=re[r++],e.push(i);let s=n<16?Bu(n):Hm(n);return s!=null?e.string=s:e.string=Eu(n)}var Fm=(n,t)=>{var e=Je();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=De[n];return o&&o.isShared&&((De.restoreStructures||(De.restoreStructures=[]))[n]=o),De[n]=e,e.read=Lu(e,r),e.read()},Wm=typeof self=="object"?self:global;Vt[0]=()=>{};Vt[0].noBuffer=!0;Vt[101]=()=>{let n=Je();return(Wm[n[0]]||Error)(n[1])};Vt[105]=n=>{let t=Be.getUint32(E-4);go||(go=new Map);let e=re[E],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};go.set(t,o);let i=Je();return o.used?Object.assign(r,i):(o.target=i,i)};Vt[112]=n=>{let t=Be.getUint32(E-4),e=go.get(t);return e.used=!0,e.target};Vt[115]=()=>new Set(Je());var Ru=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Vt[116]=n=>{let t=n[0],e=Ru[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Wm[e](Uint8Array.prototype.slice.call(n,1).buffer)};Vt[120]=()=>{let n=Je();return new RegExp(n[0],n[1])};Vt[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=E;E+=t-4,ir=[Je(),Je()],ir.position0=0,ir.position1=0;let r=E;E=e;try{return Je()}finally{E=r}};Vt[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 $m(n){let t=zo,e=E,r=Nu,o=dr,i=zr,a=Go,s=Iu,l=go,d=ir,c=new Uint8Array(re.slice(0,zo)),u=De,p=De.slice(0,De.length),f=Yt,h=Ci,m=n();return zo=t,E=e,Nu=r,dr=o,zr=i,Go=a,Iu=s,go=l,ir=d,re=c,Ci=h,De=u,De.splice(0,De.length,...p),Yt=f,Be=new DataView(re.buffer,re.byteOffset,re.byteLength),m}function Pl(){re=null,go=null,De=null}function Ym(n){n.unpack?Vt[n.type]=n.unpack:Vt[n.type]=n}var Ml=new Array(147);for(let n=0;n<256;n++)Ml[n]=+("1e"+Math.floor(45.15-n*.30103));var Il=new kr({useRecords:!1}),iT=Il.unpack,aT=Il.unpackMultiple,sT=Il.unpack,Nl={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},lT=new Float32Array(1),kz=new Uint8Array(lT.buffer,0,4);var El;try{El=new TextEncoder}catch{}var Dl,Gu,Ll=typeof Buffer<"u",Vu=Ll?Buffer.allocUnsafeSlow:Uint8Array,Zm=Ll?Buffer:Uint8Array,Xm=Ll?4294967296:2144337920,j,it,L=0,Fr,jr=null,cT=/[\u0080-\uFFFF]/,ts=Symbol("record-id"),_n=class extends kr{constructor(t){super(t),this.offset=0;let e,r,o,i,a,s,l=0,d=Zm.prototype.utf8Write?function(v,M,O){return j.utf8Write(v,M,O)}:El&&El.encodeInto?function(v,M){return El.encodeInto(v,j.subarray(M)).written}:!1,c=this;t||(t={});let u=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),u&&!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 x=[],S=0,w=0;this.pack=this.encode=function(v,M){if(j||(j=new Vu(8192),it=new DataView(j.buffer,0,8192),L=0),Fr=j.length-10,Fr-L<2048?(j=new Vu(j.length),it=new DataView(j.buffer,0,j.length),Fr=j.length-10,L=0):L=L+7&2147483640,r=L,s=c.structuredClone?new Map:null,c.bundleStrings?(jr=["",""],j[L++]=214,j[L++]=98,jr.position=L-r,L+=4):jr=null,o=c.structures,o){o.uninitialized&&(o=c._mergeStructures(c.getStructures()));let O=o.sharedLength||0;if(O>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<O;T++){let C=o[T];if(!C)continue;let P,I=o.transitions;for(let D=0,G=C.length;D<G;D++){let N=C[D];P=I[N],P||(P=I[N]=Object.create(null)),I=P}I[ts]=T+64}l=O}u||(o.nextId=O+64)}i&&(i=!1),a=o||[];try{if(b(v),jr){it.setUint32(jr.position+r,L-jr.position-r);let O=jr;jr=null,b(O[0]),b(O[1])}if(c.offset=L,s&&s.idsToInsert){L+=s.idsToInsert.length*6,L>Fr&&A(L),c.offset=L;let O=dT(j.subarray(r,L),s.idsToInsert);return s=null,O}return M&ey?(j.start=r,j.end=L,j):j.subarray(r,L)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,x.length>0&&(x=[]);else if(x.length>0&&!u){for(let O=0,T=x.length;O<T;O++)x[O][ts]=0;x=[]}if(i&&c.saveStructures){let O=o.sharedLength||f;o.length>O&&(o=o.slice(0,O));let T=j.subarray(r,L);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(v)):(l=O,T)}}M&xT&&(L=r)}};let b=v=>{L>Fr&&(j=A(L));var M=typeof v,O;if(M==="string"){let T=v.length;if(jr&&T>=8&&T<4096){let I=cT.test(v);jr[I?0:1]+=v,j[L++]=193,b(I?-T:T);return}let C;T<32?C=1:T<256?C=2:T<65536?C=3:C=5;let P=T*3;if(L+P>Fr&&(j=A(L+P)),T<64||!d){let I,D,G,N=L+C;for(I=0;I<T;I++)D=v.charCodeAt(I),D<128?j[N++]=D:D<2048?(j[N++]=D>>6|192,j[N++]=D&63|128):(D&64512)===55296&&((G=v.charCodeAt(I+1))&64512)===56320?(D=65536+((D&1023)<<10)+(G&1023),I++,j[N++]=D>>18|240,j[N++]=D>>12&63|128,j[N++]=D>>6&63|128,j[N++]=D&63|128):(j[N++]=D>>12|224,j[N++]=D>>6&63|128,j[N++]=D&63|128);O=N-L-C}else O=d(v,L+C,P);O<32?j[L++]=160|O:O<256?(C<2&&j.copyWithin(L+2,L+1,L+1+O),j[L++]=217,j[L++]=O):O<65536?(C<3&&j.copyWithin(L+3,L+2,L+2+O),j[L++]=218,j[L++]=O>>8,j[L++]=O&255):(C<5&&j.copyWithin(L+5,L+3,L+3+O),j[L++]=219,it.setUint32(L,O),L+=4),L+=O}else if(M==="number")if(v>>>0===v)v<64?j[L++]=v:v<256?(j[L++]=204,j[L++]=v):v<65536?(j[L++]=205,j[L++]=v>>8,j[L++]=v&255):(j[L++]=206,it.setUint32(L,v),L+=4);else if(v>>0===v)v>=-32?j[L++]=256+v:v>=-128?(j[L++]=208,j[L++]=v+256):v>=-32768?(j[L++]=209,it.setInt16(L,v),L+=2):(j[L++]=210,it.setInt32(L,v),L+=4);else{let T;if((T=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){j[L++]=202,it.setFloat32(L,v);let C;if(T<4||(C=v*Ml[(j[L]&127)<<1|j[L+1]>>7])>>0===C){L+=4;return}else L--}j[L++]=203,it.setFloat64(L,v),L+=8}else if(M==="object")if(!v)j[L++]=192;else{if(s){let C=s.get(v);if(C){if(!C.id){let P=s.idsToInsert||(s.idsToInsert=[]);C.id=P.push(C)}j[L++]=214,j[L++]=112,it.setUint32(L,C.id),L+=4;return}else s.set(v,{offset:L-r})}let T=v.constructor;if(T===Object)_(v,!0);else if(T===Array){O=v.length,O<16?j[L++]=144|O:O<65536?(j[L++]=220,j[L++]=O>>8,j[L++]=O&255):(j[L++]=221,it.setUint32(L,O),L+=4);for(let C=0;C<O;C++)b(v[C])}else if(T===Map){O=v.size,O<16?j[L++]=128|O:O<65536?(j[L++]=222,j[L++]=O>>8,j[L++]=O&255):(j[L++]=223,it.setUint32(L,O),L+=4);for(let[C,P]of v)b(C),b(P)}else{for(let C=0,P=Dl.length;C<P;C++){let I=Gu[C];if(v instanceof I){let D=Dl[C];if(D.write){D.type&&(j[L++]=212,j[L++]=D.type,j[L++]=0),b(D.write.call(this,v));return}let G=j,N=it,F=L;j=null;let B;try{B=D.pack.call(this,v,R=>(j=G,G=null,L+=R,L>Fr&&A(L),{target:j,targetView:it,position:L-R}),b)}finally{G&&(j=G,it=N,L=F,Fr=j.length-10)}B&&(B.length+L>Fr&&A(B.length+L),L=uT(B,j,L,D.type));return}}_(v,!v.hasOwnProperty)}}else if(M==="boolean")j[L++]=v?195:194;else if(M==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))j[L++]=211,it.setBigInt64(L,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)j[L++]=207,it.setBigUint64(L,v);else if(this.largeBigIntToFloat)j[L++]=203,it.setFloat64(L,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");L+=8}else if(M==="undefined")this.encodeUndefinedAsNil?j[L++]=192:(j[L++]=212,j[L++]=0,j[L++]=0);else if(M==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+M)},_=this.useRecords===!1?this.variableMapSize?v=>{let M=Object.keys(v),O=M.length;O<16?j[L++]=128|O:O<65536?(j[L++]=222,j[L++]=O>>8,j[L++]=O&255):(j[L++]=223,it.setUint32(L,O),L+=4);let T;for(let C=0;C<O;C++)b(T=M[C]),b(v[T])}:(v,M)=>{j[L++]=222;let O=L-r;L+=2;let T=0;for(let C in v)(M||v.hasOwnProperty(C))&&(b(C),b(v[C]),T++);j[O+++r]=T>>8,j[O+r]=T&255}:v=>{let M=Object.keys(v),O,T=a.transitions||(a.transitions=Object.create(null)),C=0;for(let I=0,D=M.length;I<D;I++){let G=M[I];O=T[G],O||(O=T[G]=Object.create(null),C++),T=O}let P=T[ts];if(P)P>=96&&m?(j[L++]=((P-=96)&31)+96,j[L++]=P>>5):j[L++]=P;else{P=a.nextId,P||(P=64),P<y&&this.shouldShareStructure&&!this.shouldShareStructure(M)?(P=a.nextOwnId,P<g||(P=y),a.nextOwnId=P+1):(P>=g&&(P=y),a.nextId=P+1);let I=M.highByte=P>=96&&m?P-96>>5:-1;T[ts]=P,a[P-64]=M,P<y?(M.isShared=!0,a.sharedLength=P-63,i=!0,I>=0?(j[L++]=(P&31)+96,j[L++]=I):j[L++]=P):(I>=0?(j[L++]=213,j[L++]=114,j[L++]=(P&31)+96,j[L++]=I):(j[L++]=212,j[L++]=114,j[L++]=P),C&&(S+=w*C),x.length>=h&&(x.shift()[ts]=0),x.push(T),b(M))}for(let I=0,D=M.length;I<D;I++)b(v[M[I]])},A=v=>{let M;if(v>16777216){if(v-r>Xm)throw new Error("Packed buffer would be larger than maximum buffer size");M=Math.min(Xm,Math.round(Math.max((v-r)*(v>67108864?1.25:2),4194304)/4096)*4096)}else M=(Math.max(v-r<<2,j.length-1)>>12)+1<<12;let O=new Vu(M);return it=new DataView(O.buffer,0,M),j.copy?j.copy(O,0,r,v):O.set(j.slice(r,v)),L-=r,r=0,Fr=O.length-10,j=O}}useBuffer(t){j=t,it=new DataView(j.buffer,j.byteOffset,j.byteLength),L=0}};Gu=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,es];Dl=[{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?Km(n,16,t):Qm(Ll?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==Zm&&this.structuredClone?Km(n,Ru.indexOf(e.name),t):Qm(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function Km(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 Qm(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 uT(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 dT(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 ko(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)");Gu.unshift(n.Class),Dl.unshift(n)}Ym(n)}var Jm=new _n({useRecords:!1}),pT=Jm.pack,fT=Jm.pack;var{NEVER:hT,ALWAYS:mT,DECIMAL_ROUND:yT,DECIMAL_FIT:gT}=Nl,ey=512,xT=1024;var ty=new _n({structuredClone:!0});ko({Class:he.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,he.prototype),n}});ko({Class:ye.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ye.prototype),n}});ko({Class:$e.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,$e.prototype),n}});ko({Class:Za.prototype.constructor,type:4,write(n){return n.id},read(n){return new Za(n)}});ko({Class:Ja.prototype.constructor,type:5,write(n){return n.data},read(n){return new Ja(n)}});ko({Class:ke.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,ke.prototype),n}});function vT(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 zu(n){if(Si(n))return n;if(Array.isArray(n))return n.map(zu);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=zu(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var Bl;(r=>{function n(o){return ty.pack(o)}r.serialize=n;function t(o){return ty.unpack(o)}r.deserialize=t;function e(o){return vT(n(zu(o))).toString()}r.checksum=e})(Bl||(Bl={}));var Uo="personal camera",Ho="a218fcc3-276b-49b9-b485-49037fd14f5f",sy=2960946,dt=5526619;var ry;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(ry||(ry={}));var Fo;(s=>{function n(l,d){return l[0]===d[0]&&l[1]===d[1]&&l[2]===d[2]}s.isEqual=n;function t(l,d){return[l[0]+d[0],l[1]+d[1],l[2]+d[2]]}s.add=t;function e(l,d){return[l[0]-d[0],l[1]-d[1],l[2]-d[2]]}s.sub=e;function r(l,d){return[l[0]/d[0],l[1]/d[1],l[2]/d[2]]}s.div=r;function o(l,d){return[l[0]*d[0],l[1]*d[1],l[2]*d[2]]}s.mul=o;function i(l,d){return Math.hypot(l[0]-d[0],l[1]-d[1],l[2]-d[2])}s.dist=i;function a(l,d,c){return[l[0]+(d[0]-l[0])*c,l[1]+(d[1]-l[1])*c,l[2]+(d[2]-l[2])*c]}s.lerp=a})(Fo||(Fo={}));var oy;(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})(oy||(oy={}));var jo;(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,d=a.length;l<d;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})(jo||(jo={}));var vt;(c=>{function n(u){return typeof u=="object"&&typeof u.r=="number"&&typeof u.g=="number"&&typeof u.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(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:1}}c.toRgb255a1=o;function i(u){return{r:u.r,g:u.g,b:u.b}}c.clone=i;function a(u){return u=Math.floor(u),{r:(u>>16&255)/255,g:(u>>8&255)/255,b:(u&255)/255}}c.fromHex=a;function s(u){return Math.round(u.r*255)*65536+Math.round(u.g*255)*256+Math.round(u.b*255)}c.toHex=s;function l(u,p){return u.r===p.r&&u.g===p.g&&u.b===p.b}c.equals=l;function d(u,p,f){return{r:u.r+(p.r-u.r)*f,g:u.g+(p.g-u.g)*f,b:u.b+(p.b-u.b)*f}}c.lerp=d})(vt||(vt={}));var Gt;(s=>{s.white={...vt.white,a:1},s.transparent={...vt.white,a:0};function e(l){return{r:l[0],g:l[1],b:l[2],a:l[3]}}s.from0to1=e;function r(l,d){return{...vt.fromHex(l),a:d}}s.fromHexAndA=r;function o(l){return{r:Math.round(l.r*255),g:Math.round(l.g*255),b:Math.round(l.b*255),a:l.a}}s.toRgb255a1=o;function i(l,d){return vt.equals(l,d)&&l.a===d.a}s.equals=i;function a(l,d,c){return{r:l.r+(d.r-l.r)*c,g:l.g+(d.g-l.g)*c,b:l.b+(d.b-l.b)*c,a:l.a+(d.a-l.a)*c}}s.lerp=a})(Gt||(Gt={}));var Rl;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Rl||(Rl={}));var ny;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(ny||(ny={}));var iy;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(iy||(iy={}));var ay;(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]))(ay||(ay={}));function ku(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 vr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(vr||(vr={}));var qo;(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})(qo||(qo={}));var Ur;(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(bT.forEach(a=>{Object.assign(i,{[a]:o[a]??r[a]})}),i.radial={...r.radial},o.radial){let a=r.radial,s=o.radial;ST.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;wT.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;_T.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;AT.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;TT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=t})(Ur||(Ur={}));var Vl;(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})(Vl||(Vl={}));var bT=["count"],ST=["radius","start","end","position","scale","rotation"],wT=["position","scale","rotation"],_T=["count","size"],AT=["count","position","scale","rotation"],TT=["strength","scale","rotation","position","movement","seed","freqScale"];var Gl;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Gl||(Gl={}));var zl;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Gt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Gt.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:Gt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(zl||(zl={}));var Wo;(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]})(Wo||(Wo={}));var Fu;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Fu||(Fu={}));var ju;(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})(ju||(ju={}));var kl;(t=>t.defaultData={...ju.defaultData,...Fu.defaultData})(kl||(kl={}));var ly;(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})(ly||(ly={}));var Pi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Pi||(Pi={}));var cy;(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==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}t.is=n})(cy||(cy={}));function dy(n){return n.type!=="displace"}var uy;(t=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=n})(uy||(uy={}));var py=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],fy=["wrapping","image","video","name"],zt;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let d=i.texture;d&&Object.assign(d,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]},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:Pi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...a,type:"color",color:vt.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:{...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:Gt.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:Gt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Gt.fromHexAndA(0,1),contourColor:Gt.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]}};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}}}})(zt||(zt={}));var Pt;(l=>{function n(d){return!d.layers.some(u=>u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")}l.isMergable=n;function t(d){let c="";return d.layers.forEach(u=>{Object.entries(u.data).forEach(([p,f])=>{c+=`${p}${f}`,Array.isArray(f)?f.forEach(h=>c+=`${h}`):typeof f=="object"?Object.values(f).forEach(h=>{typeof h=="number"?c+=`${h.toFixed(4)}`:c+=`${h}`}):c+=`${f}`})}),c}l.getHash=t;function e(){return{layers:new ye}}l.defaultEmptyData=e;function r(d="layer1",c="layer2"){return i("phong",d,c)}l.defaultData=r;function o(d,c){return{...d,name:c}}l.withName=o;function i(d,c="layer1",u="layer2"){let p=new ye;return p.push({fi:0,data:zt.defaultData("light",d),id:c}),p.push({fi:1,data:zt.defaultData("color"),id:u}),{layers:p}}l.defaultTwoLayerData=i;function a(d,c="phong",u="layer1",p="layer2"){let f=zt.defaultData("texture");Object.assign(f.texture,{image:d});let h=new ye;return h.push({fi:0,data:f,id:u}),h.push({fi:1,data:zt.defaultData("light",c),id:p}),{layers:h}}l.defaultTwoLayerTextureData=a;function s(d,c="phong",u="layer1",p="layer2"){let f=zt.defaultData("video");Object.assign(f.texture,{video:d});let h=new ye;return h.push({fi:0,data:f,id:u}),h.push({fi:1,data:zt.defaultData("light",c),id:p}),{layers:h}}l.defaultTwoLayerVideoTextureData=s})(Pt||(Pt={}));var Oi;(t=>{function n(){return{points:new ye,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Oi||(Oi={}));var Mi;(t=>{function n(){return{points:new ye,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=n})(Mi||(Mi={}));var Uu={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Fl;(t=>{function n(e,r){let o={...e};return CT.forEach(i=>{Object.assign(o,{[i]:r[i]??e[i]})}),o}t.merge=n})(Fl||(Fl={}));var jl={shape:Uu,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},CT=["depth","offset","angle","twist","startScale","endScale"];var rs;(e=>{function n(r){return r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"}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})(rs||(rs={}));var Ul;(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,Fl.merge(o.extrusion,r.extrusion))),o}t.merge=n})(Ul||(Ul={}));var $o;(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==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:Mi.defaultData(),extrusion:jl};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Oi.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})($o||($o={}));var Hl;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:vt.white,near:.1,far:2e3})(Hl||(Hl={}));var ql;(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}}})(ql||(ql={}));var Hu;(t=>t.defaultData={softShadowQuality:"low"})(Hu||(Hu={}));var qu;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(qu||(qu={}));var Wu;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Wu||(Wu={}));var os;(t=>t.defaultData={usePhysics:!1,gravity:-10})(os||(os={}));var $u;(t=>t.defaultData={playCamera:Uo,gameControlObject:null})($u||($u={}));var Wl;(t=>t.defaultData={backgroundColor:Gt.fromHexAndA(sy,1),postprocessing:ql.defaultData,fog:Hl.defaultData,globalPhysics:os.defaultData,ambient:qu.defaultData,ao:Wu.defaultData,shadow:Hu.defaultData,publish:$u.defaultData})(Wl||(Wl={}));var hy;(e=>{function n(r){return r==="Component"||r==="Instance"}e.isComponentRelated=n;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(hy||(hy={}));var Ii;(o=>{o.identity={...Rl.identity,hiddenMatrix:jo.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 ef({position:Fo.isEqual(i.position,a.position)?void 0:a.position,rotation:Fo.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:Fo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:jo.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(Ii||(Ii={}));var Ot;(t=>t.defaultData={states:new ye,events:new ye,visible:!0,raycastLock:!1,physics:Wo.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Ii.identity,cloner:null})(Ot||(Ot={}));var $l;(t=>t.defaultData={type:"Empty",...Ot.defaultData})($l||($l={}));var my;(t=>t.defaultData={type:"Component",...Ot.defaultData})(my||(my={}));var An;(t=>t.defaultData={type:"Mesh",...Ot.defaultData,...kl.defaultData})(An||(An={}));var Tn;(t=>t.defaultData={...Ot.defaultData,...Ii.identity,position:[0,0,qo.DefaultTargetOffset],...qo.defaultData})(Tn||(Tn={}));var Yl;(e=>{function n(r){return{...Ot.defaultData,...zl.defaultData(r)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Yl||(Yl={}));var Ni;(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})(Ni||(Ni={}));var Hr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...Ot.defaultData,...s,component:a,overrides:new ke,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=r;function o(a){let s=Ii.fromObject(a.data);return r(a.id,s)}i.fromComponentData=o})(Hr||(Hr={}));var xo;(t=>t.defaultData={type:"Page",...Ot.defaultData,physics:{...Wo.defaultData,fusedBody:!1},...Wl.defaultData,camera:Tn.defaultData})(xo||(xo={}));var Xl;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:jo.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Wo.defaultData,states:new ye,events:new ye,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...qo.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",...Ot.defaultData,...An.defaultData,geometry:$o.defaultData("RectangleGeometry"),material:Pt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Ot.defaultData,...An.defaultData,geometry:$o.defaultData("BooleanGeometry"),material:Pt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Ot.defaultData,...An.defaultData,geometry:$o.defaultData("TextGeometry"),material:Pt.defaultTwoLayerData("phong","layer1","layer2")}))(Xl||(Xl={}));var Cn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new ke}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new ke})))):vr.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=Vo(s.material,l=>{if(typeof l!="string")for(let[d,c]of Object.entries(a.material.layers)){let u=l.layers.data(d);u&&zt.patch(u,c)}}).data),s.materials&&a.materials&&(s.materials=Vo(s.materials,l=>{for(let d=0;d<s.materials.length;d++){let c=a.materials[d];if(typeof c!="string")for(let[u,p]of Object.entries(c.layers)){let f=l[d]?.layers?.data(u);f&&zt.patch(f,p)}}}).data),s}function e(i,a){let s,l=[],d={orthographic:0,perspective:0,geometry:0};function c(u,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:[...u,"layers",f,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...u,"layers",f],props:y,type:0};l.push(g)}}}for(let[u,p]of Object.entries(a))if(u!=="name")if(u==="cloner")l.push(...Vl.toOps(p,["cloner"]));else if(u==="pathSnapping")l.push({path:[u],props:{slide:p.slide,offset:p.offset},type:0});else if(u==="material")c(["material"],p);else if(u==="materials")for(let[f,h]of Object.entries(p))c(["materials",f],h);else if(d[u]===0){if(u==="geometry"&&p.extrusion!==void 0){let f={path:[u,"extrusion"],props:p.extrusion,type:0};l.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[u],props:p,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[u]=p;return l}o.toOps=e;function r(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Ii.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})}),vr.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:Ul.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Ur.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Ur.merge(s.cloner,a.cloner)});else if(Gl.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})(Cn||(Cn={}));var Di;(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})(Di||(Di={}));var qr;(t=>t.defaultData={orbitControls:Di.defaultData,playPage:Ho,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})(qr||(qr={}));var Yu;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Yu||(Yu={}));var Xu;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Xu||(Xu={}));var Yo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Yu.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Xu.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Yo||(Yo={}));var yy;(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=Li.getComponentData(r,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=t})(yy||(yy={}));var Xo;(s=>{s.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function t(l={withLight:!0,withSquare:!0}){let d=[],c=Xl.defaultMeshObject;l.withLight===!0&&d.push({fi:-1,data:Yl.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),l.withSquare===!0&&d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:c,children:[]});let u=new $e;return u.push({fi:1,id:Ho,data:{...xo.defaultData,name:"Scene 1"},children:d}),u}s.defaultData={objects:t(),publish:qr.defaultData,styles:Yo.defaultData()},s.emptyDataWithoutPage=function(){return{objects:new $e,publish:qr.defaultData,styles:Yo.defaultData()}},s.emptyDataWithPage=function(l){return{objects:t(l),publish:qr.defaultData,styles:Yo.defaultData()}};function i(l){return{...s.defaultData,objects:Wt(l,$e.prototype)}}s.withObjs=i;function a(l,d){return i([{id:l,data:d,children:[],fi:0}])}s.withObj=a})(Xo||(Xo={}));var Bi;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Bi||(Bi={}));var Ri;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Ri||(Ri={}));var Kl;(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})(Kl||(Kl={}));var Ku;(t=>t.all=["images","videos","colors","audios","fonts","materials","variables"])(Ku||(Ku={}));var gy;(t=>t.all=[...Ku.all,"components"])(gy||(gy={}));var xy;(t=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,fonts:new he,materials:new he,components:new he,variables:new he}}t.defaultData=n})(xy||(xy={}));var Ko;(t=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,fonts:new he,materials:new he,components:new he,variables:new he}}t.defaultData=n})(Ko||(Ko={}));var br;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Wt(a,he.prototype)}i.defaultColors=n;function t(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Ri.emptyImage,name:"AI generated image"}),Wt(s,he.prototype)}i.defaultImages=t;function e(){return{catelogs:new he,materials:new he,images:new he,videos:new he,colors:new he,audios:new he,fonts:new he,variables:new ye,lib:Ko.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),d=Math.floor((a-l*3600)/60),c=Math.round(a-l*3600-d*60);return{textValue:[l,d,c]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),d=Math.round(a-l*60);return{textValue:[l,d]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(br||(br={}));import{MathUtils as Jl}from"three";var Ql;(t=>t.list=["idle","move","jump","run"])(Ql||(Ql={}));var Zl;(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 ye,move:new ye,jump:new ye,run:new ye},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Gt.fromHexAndA(3728051,1)}}))(Zl||(Zl={}));function vy(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={...xr(Ye(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={...Ye(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function vo(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function bo(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,i)=>{o===void 0&&(r.materials[i]=Pt.defaultData(),o=r.materials[i]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Pt.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Pt.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&t(o.material)})})}function PT(n){Object.assign(n.scene.publish,{orbitControls:{...Di.defaultData,...Ye(n.scene.publish.orbitControls)}})}function OT(n){Object.assign(n.scene.publish.settings,{video:{...qr.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function MT(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((py.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(i))(fy.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 IT(n){n.scene.publish.withBackground=!0}function NT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function ET(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 DT(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 LT(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.unproxy().parent(t);if(r){let o=Ye(n.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Ye(e).booleanExclude!==!0)}})}function BT(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 RT(n){function t(r){Object.setPrototypeOf(r,ke.prototype),r.texture&&Object.setPrototypeOf(r.texture,ke.prototype)}function e(r){Object.setPrototypeOf(r,ke.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=Ye(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],d=Ye(l).layers;e(d),l.layers=d}})})}function by(n){n.layers===void 0&&Object.assign(n,Pt.defaultTwoLayerData("lambert"))}function Qu(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={...Ye(t),colors:e,steps:r};Object.assign(t,o)}})}function VT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Sy(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Qu(r)}):"material"in e&&typeof e.material!="string"&&Qu(e.material)}),Object.values(n.shared.materials).forEach(t=>Qu(t))}function GT(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 zT(n){n.shared.audios=Wt({},he.prototype)}function kT(n){n.shared.videos=Wt({},he.prototype)}function FT(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 jT(n){Object.entries(Ye(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(Ye(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function UT(n){n.scene.publish.settings.web.preload=!1}function wy(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 _y(n){n.layers&&n.layers.forEach(t=>{dy(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 HT(n){n.shared.fonts=Wt({},he.prototype)}function qT(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 WT(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=Pt.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=qT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...Ot.defaultData,...An.defaultData,flatShading:!1,wireframe:!1,geometry:{...$o.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:Ye(o.states),events:Ye(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},d=Ye(n.scene.objects).parent(e);n.scene.objects.insertAfter(d??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function $T(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 ye,move:new ye,jump:new ye}});else{let i=new ye;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:Jl.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let d={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,xr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(c,{control1:{...a.control1},control2:{...a.control2}});let u={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,...u,...c},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ye({fi:0,id:Jl.generateUUID(),data:d},{fi:1,id:Jl.generateUUID(),data:p})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function YT(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let a=new ye,s=[];if(e.events.forEach((l,d,c)=>{if(l.type==="Audio"&&l.trigger===i){let u;s.push(d),l.interaction==="play"?u={...xr(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")&&(u={...xr(l,"interaction","delay","object","playAudio"),type:"Audio"}),u&&a.push({fi:c,id:d,data:u})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(d=>d.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Jl.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Ay(n){let t=n.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=zt.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function Ty(n){vo(n,Ay),bo(n,Ay)}function XT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function KT(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 QT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Pt.defaultTwoLayerData("phong"))})}function ZT(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 JT(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 eC(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 tC(n){let{video:t}=n.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function rC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function oC(n){let t=n.scene.environment.usePhysics;n.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function nC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=Zl.defaultDataThirdPerson.navmesh)})})}function iC(n){n.scene.styles||(n.scene.styles=Yo.defaultData())}function Cy(n){n.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function aC(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}),bo(n,Cy),vo(n,Cy)}function sC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new ye})})})}function lC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Py(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function Oy(n,t){if(t<1&&(bo(n,vy),vo(n,vy),n.schema=1),t<2&&(PT(n),n.schema=2),t<3&&(MT(n),n.schema=3),t<4&&(IT(n),n.schema=4),t<5&&(NT(n),n.schema=5),t<6&&(ET(n),n.schema=6),t<7&&(DT(n),n.schema=7),t<8&&(n.schema=8),t<9&&(Sy(n),n.schema=9),t<10&&(VT(n),n.schema=10),t<11&&(GT(n),n.schema=11),t<12&&(Sy(n),n.schema=12),t<13&&(zT(n),n.schema=13),t<14&&(FT(n),n.schema=14),t<15&&(jT(n),n.schema=15),t<16&&(UT(n),n.schema=16),t<17&&(bo(n,wy),vo(n,wy),n.schema=17),t<18&&(bo(n,by),vo(n,by),n.schema=18),t<19&&(OT(n),n.schema=19),t<20&&(HT(n),WT(n),n.schema=20),t<21&&($T(n),YT(n),n.schema=21),t<22&&(Ty(n),n.schema=22),t<23&&(XT(n),n.schema=23),t<24&&(KT(n),n.schema=24),(t<25||n.shared.videos===void 0)&&(kT(n),t<25&&(n.schema=25)),t<26&&(LT(n),n.schema=26),t<27&&(BT(n),n.schema=27),t<28&&(Ty(n),n.schema=28),t<29&&(RT(n),n.schema=29),t<30&&(QT(n),n.schema=30),t<31&&(ZT(n),n.schema=31),t<33&&(JT(n),n.schema=33),t<34&&(eC(n),n.schema=34),t<35&&(tC(n),n.schema=35),t<36&&(rC(n),n.schema=36),t<37&&(oC(n),n.schema=37),t<38&&(bo(n,_y),vo(n,_y),n.schema=38),t<39&&(nC(n),n.schema=39),t<40&&(iC(n),n.schema=40),t<41&&(aC(n),n.schema=41),t<42&&(sC(n),n.schema=42),t<43&&(lC(n),n.schema=43),t<99){bo(n,Py),vo(n,Py),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Uo);let e=Ye(n.scene.objects),r=n.scene.objects;n.scene.publish.playPage=Ho,r.insertBefore(null,null,[{id:Ho,data:{...xo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:xr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:xr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...os.defaultData,...xr(n.scene.environment,"usePhysics","gravity")},camera:Ye(n.scene.ownerCamera)??xo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Xo.TRASH_CAN_ID&&r.move(Ho,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,Wo.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function My(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function cC(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"))})}var Vi=180/Math.PI;function Iy(n){n.rotation=n.rotation.slice(0,3).map(t=>t*Vi)}function Ny(n){Iy(n),n.type==="Page"&&Iy(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*Vi))});let t=n.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*Vi),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*Vi),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=Vi,t.extrusion.twist*=Vi),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(Ye(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":"Once")})}function uC(n){n.shared.variables=Wt({},he.prototype)}function dC(n){let t=Ye(n.shared.variables);n.shared.variables=Wt(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),ye.prototype)}var So=107;function Ey(n,t){t(n.data);for(let e of n.children)Ey(e,t)}function pC(n){let t=n.schema??104;t!==So&&t<105&&(Ey(n.asset,Ny),n.schema=105)}function ec(n){let t=n.schema??0;if(t!==So){console.warn("updating from ",t,"to ",So),Oy(n,t),t<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=qr.defaultData.joystickSizeAndXYOffset),n.schema=100),t<101&&(bo(n,My),vo(n,My),n.schema=101),t<102&&(cC(n),n.schema=102),t<104&&(n.shared.catelogs=new he,n.shared.lib=Ko.defaultData(),n.schema=104),t<105&&(uC(n),n.scene.objects.traverse((e,r)=>{Ny(r)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))pC(e);t<106&&(dC(n),n.schema=106),t<107&&(n.shared.lib.variables=Ko.defaultData().variables,n.schema=107)}}var Li;(s=>{s.defaultData={schema:So,scene:Xo.defaultData,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Bi.defaultData),shared:{...br.emptyData(),colors:br.defaultColors()}},s.emptyDataForImports=function(l){let d=Xo.emptyDataWithPage(l);return{schema:So,scene:d,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Bi.defaultData),shared:{...br.emptyData(),colors:br.defaultColors(),images:br.defaultImages(l)}}},s.emptyData=function(){return{schema:So,scene:Xo.emptyDataWithPage(),frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Bi.defaultData),shared:br.emptyData()}},s.collabHelper={...Qa,updateSchema(l){return(l.schema??0)<So?Vo(l,ec):(l.schema??0)-So}};function o(l){let d=s.collabHelper.updateSchema(l);return typeof d=="number"?d===0?l:null:d.data}s.updateSchemaDirectly=o;function i(l){return{...l,shared:{...l.shared,lib:Ko.defaultData()}}}s.withoutLib=i;function a(l,d){let c=l.scene.objects.get(d);if(c&&c.data.type==="Component")return c;{let u=l.shared.lib.components[d];if(u)return u.asset}}s.getComponentData=a})(Li||(Li={}));var Ea=Rt(Ly());import{Object3D as sM,Vector3 as cr,Euler as Ep,MathUtils as dx,Matrix4 as $n}from"three";var fC=.5*(Math.sqrt(3)-1),ns=(3-Math.sqrt(3))/6,hC=1/3,Wr=1/6,_U=(Math.sqrt(5)-1)/4,AU=(5-Math.sqrt(5))/20,is=n=>Math.floor(n)|0,By=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]),Ju=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 tc(n=Math.random){let t=Vy(n),e=new Float64Array(t).map(o=>By[o%12*2]),r=new Float64Array(t).map(o=>By[o%12*2+1]);return function(i,a){let s=0,l=0,d=0,c=(i+a)*fC,u=is(i+c),p=is(a+c),f=(u+p)*ns,h=u-f,m=p-f,y=i-h,g=a-m,x,S;y>g?(x=1,S=0):(x=0,S=1);let w=y-x+ns,b=g-S+ns,_=y-1+2*ns,A=g-1+2*ns,v=u&255,M=p&255,O=.5-y*y-g*g;if(O>=0){let P=v+t[M],I=e[P],D=r[P];O*=O,s=O*O*(I*y+D*g)}let T=.5-w*w-b*b;if(T>=0){let P=v+x+t[M+S],I=e[P],D=r[P];T*=T,l=T*T*(I*w+D*b)}let C=.5-_*_-A*A;if(C>=0){let P=v+1+t[M+1],I=e[P],D=r[P];C*=C,d=C*C*(I*_+D*A)}return 70*(s+l+d)}}function Ry(n=Math.random){let t=Vy(n),e=new Float64Array(t).map(i=>Ju[i%12*3]),r=new Float64Array(t).map(i=>Ju[i%12*3+1]),o=new Float64Array(t).map(i=>Ju[i%12*3+2]);return function(a,s,l){let d,c,u,p,f=(a+s+l)*hC,h=is(a+f),m=is(s+f),y=is(l+f),g=(h+m+y)*Wr,x=h-g,S=m-g,w=y-g,b=a-x,_=s-S,A=l-w,v,M,O,T,C,P;b>=_?_>=A?(v=1,M=0,O=0,T=1,C=1,P=0):b>=A?(v=1,M=0,O=0,T=1,C=0,P=1):(v=0,M=0,O=1,T=1,C=0,P=1):_<A?(v=0,M=0,O=1,T=0,C=1,P=1):b<A?(v=0,M=1,O=0,T=0,C=1,P=1):(v=0,M=1,O=0,T=1,C=1,P=0);let I=b-v+Wr,D=_-M+Wr,G=A-O+Wr,N=b-T+2*Wr,F=_-C+2*Wr,B=A-P+2*Wr,R=b-1+3*Wr,V=_-1+3*Wr,q=A-1+3*Wr,Y=h&255,$=m&255,H=y&255,X=.6-b*b-_*_-A*A;if(X<0)d=0;else{let z=Y+t[$+t[H]];X*=X,d=X*X*(e[z]*b+r[z]*_+o[z]*A)}let k=.6-I*I-D*D-G*G;if(k<0)c=0;else{let z=Y+v+t[$+M+t[H+O]];k*=k,c=k*k*(e[z]*I+r[z]*D+o[z]*G)}let W=.6-N*N-F*F-B*B;if(W<0)u=0;else{let z=Y+T+t[$+C+t[H+P]];W*=W,u=W*W*(e[z]*N+r[z]*F+o[z]*B)}let U=.6-R*R-V*V-q*q;if(U<0)p=0;else{let z=Y+1+t[$+1+t[H+1]];U*=U,p=U*U*(e[z]*R+r[z]*V+o[z]*q)}return 32*(d+c+u+p)}}function Vy(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 Sr=new mC,rc=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;Sr.a.fromBufferAttribute(t,o),Sr.b.fromBufferAttribute(t,o+1),Sr.c.fromBufferAttribute(t,o+2),i*=Sr.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),Sr.a.fromBufferAttribute(this.positionAttribute,t*3),Sr.b.fromBufferAttribute(this.positionAttribute,t*3+1),Sr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Sr.a,o).addScaledVector(Sr.b,i).addScaledVector(Sr.c,1-(o+i)),Sr.getNormal(r),this}};import{Object3D as bC}from"three";var ky=Rt(zy());import{Object3D as yC,Matrix4 as $r}from"three";var gC=new $r,xC=new $r,vC=new $r,Gi;(t=>{function n(e){return e&&e.__isSPEObject}t.is=n})(Gi||(Gi={}));var zi=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new $r;this.copyPreviousMatrix=!0;this.hiddenMatrix=new $r;this.matrixWorldRigid=new $r;this.shearScale=new $r;this.shearScaleInv=new $r}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)Gi.is(i)&&i.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Gi.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,ky.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),d=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=vC.copy(d).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(d),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,c).copyPosition(this.matrixWorld),s.every(u=>Math.abs(s[0]-u)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let i=new $r().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),i.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof $r?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 ed=class extends zi(bC){},SC=n=>n.type==="Mesh",wo=class extends ed{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 wo(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 N2,BufferGeometry as E2,MeshBasicMaterial as D2}from"three";import{Matrix4 as M2,Mesh as I2}from"three";import{Matrix4 as ic,Vector3 as Uy,Euler as PC,MathUtils as ss}from"three";import{Box3 as wC,Line3 as _C,Matrix4 as td,Vector3 as ar}from"three";var Pn=new ar,On=new ar,ki=new td,jy=[new ar(-1,1,1),new ar(-1,-1,1),new ar(1,-1,1),new ar(1,1,1),new ar(-1,1,-1),new ar(-1,-1,-1),new ar(1,-1,-1),new ar(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]],TC=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Fy=(n,t,e)=>{n.updateEntityBoxSize(Pn,On),ki.copy(t).multiply(n.matrixWorld),On.x===0&&On.y===0&&On.z===0?e.push(new ar(Pn.x,Pn.y,Pn.z).applyMatrix4(ki)):jy.forEach(r=>{e.push(r.clone().multiply(On).add(Pn).applyMatrix4(ki))})},as=class extends wC{constructor(){super(...arguments);this.matrix=new td;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 td().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 ar);return}Fy(a,r,i)}}):Fy(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(ki.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(On).multiplyScalar(.5),this.getCenter(Pn),ki.copy(this.matrix).setPosition(Pn),this.vertices=jy.map(e=>e.clone().multiply(On).applyMatrix4(ki))}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 ar))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=TC.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var wr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as CC,CubicBezierCurve3 as rd,Vector3 as _r}from"three";var nd=class extends CC{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 d=l[s],c=s===0?o[s]:o[s]-o[s-1],u=Math.ceil(t*c/a),p=d.getPoints(u);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 id=.001;function ad(n,t,e){return t.clone().sub(n).cross(t.clone().sub(e)).length()<=id}function od(n,t){let e=new _r(...n.position),r=new _r(...n.controlNext.position),o=new _r(...t.controlPrevious.position),i=new _r(...t.position);return ad(e,r,i)&&ad(e,o,i)}function nc(n){let t=n.points.map(c=>new _r(...c.data.position)),e=[n.points[0]],r=new _r(...e[0].data.position);for(let c=0;c<n.points.length-1;c++)ad(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 u=e[c].data,p=new _r(...u.position),f=new _r(...u.controlPrevious.position),h=new _r(...u.controlNext.position),m={position:p,baseRoundness:u.roundness,controlPrevious:f,controlNext:h};if(u.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,x=e[y].data,S=e[g].data,w=new _r(...x.position),b=new _r(...S.position),_=w.clone().sub(p).normalize(),A=b.clone().sub(p).normalize();Object.assign(m,{prevDir:_,nextDir:A});let v=od(x,u),M=od(u,S);if(!v||!M)s[c]={...m,removedLength:0};else{let O=_.clone().add(A).normalize(),T=O.clone().cross(_).length()/_.dot(O);s[c]={...m,tan:T,removedLength:u.roundness/T}}}for(let c=0;c<i;c++){let u=c,p=o&&c===a-1?0:c+1,f=s[u],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 u=c,p=o&&c===a-1?0:c+1,f=s[u],h=s[p],m=null;if(!od(e[u].data,e[p].data))f.position.distanceTo(h.position)>id&&(m=new rd(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)>id&&(m=new rd(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 u=s[c];if(u.removedLength===0){l[2*c]=null;continue}let p=u.position,f=u.prevDir.clone().multiplyScalar(u.removedLength).add(p),h=u.nextDir.clone().multiplyScalar(u.removedLength).add(p),m=u.tan*u.removedLength,y=u.prevDir.clone().add(u.nextDir).normalize(),g=f.clone().lerp(h,.5),x=f.distanceTo(h)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-m).add(S),b=p.distanceTo(w)/p.distanceTo(g),_=u.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),A=_.clone().lerp(w,2),v=f.clone().lerp(_,4/3),M=h.clone().lerp(A,4/3);l[2*c]=new rd(f,v,M,h)}let d=new nd;return l.forEach(c=>{c&&d.add(c)}),d}var Ae;(t=>{function n(e){return e&&e.__isEntity}t.is=n})(Ae||(Ae={}));var Fi=n=>Ae.is(n),OC={type:"completeState",isfromEntity:!0},MC=["x","y","z"],sd=new Uy,IC=new Uy().set(0,1,0),ji=n=>class extends zi(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 as;this._recursiveBBox=new as;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(Ae.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(Ae.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(Ae.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)Cn.toOps(this.data,a.data).forEach(l=>{let d=Sl.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(d,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=Cn.patch(this.data,a),Cn.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=>{Fi(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(Ae.is(o[i]))return o[i];if(Ae.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&Ae.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)Fi(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{Ae.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Fi(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Fi(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)Fi(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=>Fi(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*ss.RAD2DEG,this.rotation.y*ss.RAD2DEG,this.rotation.z*ss.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&&(sd.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(ss.DEG2RAD),this.rotation.setFromVector3(sd),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??jo.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)Ae.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{Ae.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,d=Lt(r.path,["states","*"]);if(d!==null){if(r.type===0){let[c]=d;if(this?.stateSelection===c){let u={...r.props};if(delete u.name,Object.values(r.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=ot.zoom(p,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(u[h]=f[h])}}l={...r,props:u,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 u=ot.removeOverridden(r.path,r.props,c);l={...r,props:u}}}if(this.updateByPatchedOpBase(l,Cn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Lt(r.path,["overrides"])){let c=[],u=[...r.path];for(c.push(u[1]),u.splice(0,2);u.length>0&&u[0]==="descendants";)c.push(u[1]),u.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(Gr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...c]);if(p){let f=ot.zoom(p.component.data,u);if(r={...r,path:u},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=Ni.resolve(o.overrides,c),p.updateByOp(r,nt.applySimple(p.data,r),i,!1)}}}else if(this.instances.length>0){let c;if(r.path.length===0&&r.type===0){let u;for(let p of Hr.rootOverrideProps)p in r.props&&(u===void 0&&(u={}),u[p]=r.props[p]);u&&(c={...r,props:u})}else for(let u of Hr.rootOverrideProps)if(Lt(r.path,[u])){c=r;break}c!==void 0&&this.instances.forEach(u=>{if(u.isInstanceRoot){let p=Gr.filterOp(u.overrideData,c);p&&u.updateByOp(p,nt.applySimple(u.data,p),i,!0)}}),this.instances.forEach(u=>{if(!u.isInstanceRoot){let p=Gr.filterOp(u.overrideData,r);if(p){let f;s===u.data&&r===p?f=o:f=nt.applySimple(u.data,p),u.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&&!vr.is(r.props.type)&&wr.changeEntityProptotype(this,o,i);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){wr.changeEntityProptotype(this,o,i);for(let a of this.children)Ae.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),Lt(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Lt(r.path,["cloner"])!==null){let a=nt.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 d=l.data;if(d.geometry.path.points.length<=1)return;let c=nc(d.geometry.path),u=(i+a)%1;i+a===1&&u===0&&(u=1);let p=c.getPointAt(u);if(p===null)return;let f=this.parent?this.parent?.matrixWorld:new ic;l.updateMatrixWorld();let h=new ic().multiplyMatrices(f.clone().invert(),l.matrixWorld);p.applyMatrix4(h);let m={position:p.toArray(),rotation:d.rotation};if(s==="tangential"){let y=new ic().extractRotation(l.matrixWorld),g=c.getTangentAt(u).applyMatrix4(y).add(p),x=new ic().lookAt(p,g,IC),S=sd.setFromEuler(new PC().setFromRotationMatrix(x)).multiplyScalar(ss.RAD2DEG);m={...m,rotation:S.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(OC)})}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 wr.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 wr.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)}};import{BufferGeometry as DC,ConeGeometry as LC,Float32BufferAttribute as BC,MathUtils as RC}from"three";import{BufferGeometry as qy,CylinderGeometry as NC,Float32BufferAttribute as sc,MathUtils as EC,Vector2 as Ar,Vector3 as ac}from"three";var Wy=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=EC.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:d,radiusBottom:c,cornerRadius:u,cornerSegments:p,hollow:f}=n.parameters,h;return l===0?(h=new qy,h.setAttribute("position",new sc([],3))):u||f?h=new ls(d,c,r,o,i,a,s,l*Math.PI/180,u,u,p,f):h=new NC(d,c,r,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function Qo(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Hy(n){return new Ar(n.y,-n.x)}var ls=class extends qy{constructor(t,e,r,o,i,a,s,l,d,c,u,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&&(d=0,c=0);let h=[],m=[],y=[],g=[],x=0,S=r/2,w=new ac,b=new ac;f&&t==0&&(t=d),f&&e==0&&(e=c);let _=new Ar(t,S),A=new Ar(e,-S),v=null,M=null,O=null,T=null,C=_.clone().sub(A),P=0,I=0,D=0;p>0&&(P=Math.min(t,e)*(1-p),I=t-P,D=e-P);let G=_.clone();G.x-=P;let N=Math.PI-C.angle(),F=C.angle(),B=Math.tan(F/2),R=Math.tan(N/2),V=B+R,q=p?V:R,Y=p?V:B;if(d=Math.min(d,(t-I)/q,C.length()/V),c=Math.min(c,(e-D)/Y,C.length()/V),d>0){let U=d/B;v=_.clone().sub(new Ar(U,d)),p&&(O=v.clone(),O.x-=P-V*d),_.sub(C.clone().setLength(U))}if(c>0){let U=c/R;M=A.clone().sub(new Ar(U,-c)),A.add(C.clone().setLength(U)),p&&(T=M.clone(),T.x-=P-V*c,G.sub(C.clone().setLength(U)))}C=_.clone().sub(A);let $=C.length()<.5,H=[];for(let U=0;U<=o;U++){let z=[],oe=U/o,ee=oe*l+s,Q=new Ar(Math.sin(ee),Math.cos(ee));T&&M?(X(z,oe,Q,N,c,T,-1,!0),X(z,oe,Q,F,c,M,-1,!1)):M?(k(z,Q,M.x,0,-1),X(z,oe,Q,F,c,M,-1,!1)):a||k(z,Q,e,D,-1);let te=Hy(C).normalize();if(Qo(te,Q,w),!$)for(let Z=0;Z<=i;Z++){let se=Z/i,ne=C.clone().multiplyScalar(se).add(A);Qo(ne,Q,b),m.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(oe,.5+b.y/r),z.push(x++)}if(O&&v?(X(z,oe,Q,N,d,v,1,!1),X(z,oe,Q,F,d,O,1,!0)):v?(X(z,oe,Q,N,d,v,1,!1),k(z,Q,v.x,0,1)):a||k(z,Q,t,I,1),p&&!$){let Z=Hy(C).multiplyScalar(-1).normalize();Qo(Z,Q,w);for(let se=0;se<=i;se++){let ne=se/i,ie=C.clone().multiplyScalar(-ne).add(G);Qo(ie,Q,b),m.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(oe,.5+b.y/r),z.push(x++)}}p&&!a&&z.push(z[0]),H.push(z)}for(let U=0;U<H.length-1;U++)for(let z=0;z<H[0].length-1;z++){if(a&&p&&z==i)continue;let oe=H[U][z],ee=H[U+1][z],Q=H[U+1][z+1],te=H[U][z+1],Z=m[Q*3+0],se=m[Q*3+2];h.push(oe,ee,te),(Z!=0||se!=0)&&h.push(ee,Q,te)}l<Math.PI*2&&(W(-1,H[0],s),W(1,H[H.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new sc(m,3)),this.setAttribute("normal",new sc(y,3)),this.setAttribute("uv",new sc(g,2));function X(U,z,oe,ee,Q,te,Z,se){for(let ne=0;ne<u+1;ne++){let ie=ne/u,ue=Z<0?ie:1-ie;se&&(ue-=1),ue*=ee;let le=new Ar(Math.sin(ue),Math.cos(ue)*Z),de=le.clone().multiplyScalar(Q).add(te);Qo(de,oe,b),m.push(b.x,b.y,b.z),Qo(le,oe,w),y.push(w.x,w.y,w.z),g.push(z,.5+b.y/r),U.push(x++)}}function k(U,z,oe,ee,Q){let te=new ac,Z=new Ar,se=[oe,ee];Q<0&&se.reverse();for(let ne of se)Z.set(ne,S*Q),Qo(Z,z,te),m.push(te.x,te.y,te.z),y.push(0,Q,0),g.push(.5,.5),U.push(x++)}function W(U,z,oe){let ee=new Ar(Math.sin(oe),Math.cos(oe)),Q=new Ar(-Math.cos(oe),Math.sin(oe)),te=new ac,Z=U<0?(ie,ue,le)=>h.push(ie,ue,le):(ie,ue,le)=>h.push(ie,le,ue),se=new Ar((t+e+I+D)/4,0);Qo(se,ee,te),m.push(te.x,te.y,te.z),y.push(Q.x,0,Q.y),g.push(.5,.5);let ne=x++;for(let ie of z){let ue=m.slice(ie*3,ie*3+3);m.push(...ue),y.push(Q.x,0,Q.y);let le=g.slice(ie*2,ie*2+2);g.push(...le),x++}for(let ie=ne+1;ie<x-1;ie++)Z(ne,ie,ie+1);Z(ne,x-1,ne+1)}}};var $y=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:d,cornerRadiusBottom:c,cornerSegments:u}=n.parameters,p;return l===0?(p=new DC,p.setAttribute("position",new BC([],3))):d>0||c>0||l<360?p=new ls(0,t/2,r,o,i,a,s,l*Math.PI/180,d,c,u,0,!0):p=new LC(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 GC,Float32BufferAttribute as ld,Vector3 as cs}from"three";var Yy=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,d;return s==0?d=new VC(t,e,r,o,i,a):d=new ud(t,e,r,o,i,a,s,l),Object.assign(d,{userData:{...n,type:"CubeGeometry"}})}},cd=Math.PI/2,ud=class extends GC{constructor(t=1,e=1,r=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let d=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=[],u=[],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),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new ld(u,3)),this.setAttribute("normal",new ld(p,3)),this.setAttribute("uv",new ld(f,2));function y(S,w,b,_,A,v,M,O,T,C,P){let I=(v-2*s)/T,D=(M-2*s)/C,G=v/2-s,N=M/2-s,F=O/2,B=T+1,R=C+1,V=0,q=0,Y=new cs;for(let $=0;$<R;$++){let H=$*D-N;for(let X=0;X<B;X++){let k=X*I-G;Y[S]=k*_,Y[w]=H*A,Y[b]=F,u.push(Y.x,Y.y,Y.z),Y[S]=0,Y[w]=0,Y[b]=O>0?1:-1,p.push(Y.x,Y.y,Y.z),f.push(X/T),f.push(1-$/C),V+=1}}for(let $=0;$<C;$++)for(let H=0;H<T;H++){let X=h+H+B*$,k=h+H+B*($+1),W=h+(H+1)+B*($+1),U=h+(H+1)+B*$;c.push(X,k,U),c.push(k,W,U),q+=6}d.addGroup(m,q,P),m+=q,h+=V}function g(S,w,b,_,A,v,M,O,T,C,P){let I=(M-2*s)/C,D=M/2-s,G=O/2-s,N=T/2,F=C+1,B=0,R=0,V=new cs,q=new cs;for(let Y=0;Y<l+1;Y++){let $=Y/l*cd,H=Math.sin($)*s,X=(1-Math.cos($))*s,k=Math.sin($),W=Math.cos($);V[w]=(G+H)*A,V[b]=(N-X)*v,q[S]=0,q[w]=k*Math.sign(V[w]),q[b]=W*Math.sign(V[b]);for(let U=0;U<F;U++){let z=U*I-D;V[S]=z*_,u.push(V.x,V.y,V.z),p.push(q.x,q.y,q.z),f.push(U/C),f.push(0),B+=1}}for(let Y=0;Y<l;Y++)for(let $=0;$<C;$++){let H=h+$+F*Y,X=h+$+F*(Y+1),k=h+($+1)+F*(Y+1),W=h+($+1)+F*Y;c.push(H,X,W),c.push(X,k,W),R+=6}d.addGroup(m,R,P),m+=R,h+=B}function x(S,w,b){let _=new cs,A=new cs(t/2,e/2,r/2);A.subScalar(s);let v=[],M=S*w*b>0?(T,C,P)=>c.push(T,C,P):(T,C,P)=>c.push(T,P,C);for(let T=0;T<=l;T++){let C=[],P=cd*(1-T/l),I=Math.cos(P),D=Math.sin(P),G=0;for(let N=0;N<=T;N++){let F=Math.cos(G),B=Math.sin(G);_.x=I*F,_.y=D,_.z=I*B;let R=A.clone().addScaledVector(_,s);u.push(S*R.x,w*R.y,b*R.z),p.push(S*_.x,w*_.y,b*_.z),f.push(0,0),C.push(h++),G+=cd/T}v.push(C)}let O=v.length-1;for(let T=0;T<O;T++){let C=v[T],P=v[T+1],I=C.length-1;M(C[0],P[1],P[0]);for(let D=1;D<=I;D++)M(C[D-1],C[D],P[D]),M(C[D],P[D+1],P[D])}}}};import{BufferGeometry as zC,Float32BufferAttribute as dd,Triangle as kC,Vector3 as _o,Vector2 as pd}from"three";var Zo=class extends zC{constructor(t=[],e=[],r="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],d=[];c(),u(),this.setAttribute("position",new dd(s,3)),this.setAttribute("normal",new dd(d,3)),this.setAttribute("uv",new dd(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 _o,m=h.clone(),y=new kC,g=i*o,x=o-g,S=a+1,w=new _o,b=(B,R)=>w.subVectors(B,R).normalize(),_=(B,R)=>Array(B).fill(void 0).map(R),A=_(t.length/3,(B,R)=>new _o().fromArray(t,R*3).setLength(o)),v=[],M=1e6;for(let B=0;B<A.length;B++){let R=A[B],V=[],q,Y,$,H=1e10,X=-1;for(;(X=e.indexOf(B,X+1))!=-1;){let z=X-X%3;q=e[z+(X+1)%3],Y=e[z+(X+2)%3],$=R.distanceToSquared(A[q]),H=Math.min(H,$),V.push([q,Y,$])}H+=1e-6;let k=[],W=0,U=V.length;for(let z=0;z<U;z++){[q,Y,$]=V[W];let oe=v[q]?.includes(B)==!0;$<=H&&k.push(q+ +oe*M),W=V.findIndex(ee=>ee[0]==Y)}v.push(k)}let O=[];{let B=0,R=0,V,q,Y=f==3;for(let $=0;$<=a;$++){V=$*($+1)/2,q=($+1)*($+2)/2;for(let H=0;H<a-$;H++)[B,R]=[V+H+$+2,q+H+$+3],O.push(V,q,...Y?[R,V]:[B,q],R,B),[V,q]=[B,R];O.push(V,q,V+a+2)}}let T=h.clone(),C=h.clone(),P=h.clone(),I=h.clone(),D=h.clone(),G=[],N=_(A.length,()=>_(f,()=>h.clone()));for(let B=0;B<A.length;B++){h.copy(A[B]).normalize(),T.copy(h).multiplyScalar(x);let R=v[B];for(let k=0;k<R.length;k++){let W=R[k],U=R[(k+1)%f];y.setFromPointsAndIndices(A,B,W%M,U%M),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(T,N[B][k])}let V=[],q=[],Y=[],$=new _o;a==0&&[...N[B]].reduce((k,W)=>k.add(W),$).multiplyScalar(1/f);for(let k=0;k<f;k++){let W=[],U=(k-1+f)%f,z=N[B][U],oe=N[B][k];h.copy(z).sub(T),m.copy(oe).sub(T);let ee=T.angleTo(h),Q=h.angleTo(m),te=Math.cos(ee)*g;a==0?C.copy($):C.copy(T).setLength(x+te),q.push(te);let Z=[C,z,oe];for(let se=0;se<2;se++){let ne=Z[se],ie=Z[se+1];I.subVectors(ne,T),D.subVectors(ie,T),P.crossVectors(I,D).normalize();for(let ue=0;ue<S;ue++){let le=[ee,Q][se]*ue/S;h.copy(I).applyAxisAngle(P,le).add(T),V.push(h.clone()),se&&(b(h,T),W.push([ue==0?ne:h.clone(),w.clone()]))}se&&(b(ie,T),W.push([ie,w.clone()]))}Y.push(W)}G.push(Y);let H=2*S,X=2;for(let k=0;k<f;k++){let W=H*k,U=H*((k+1)%f),z=[V[W]];for(let ee=1;ee<S;ee++){I=V[W+ee],D=V[U+ee],z.push(I);for(let Q=1,te=ee-X+1;Q<=te;Q++)h.lerpVectors(I,D,Q/(te+1)),h.sub(T).setLength(q[k]).add(T),z.push(h.clone());z.push(D)}for(let ee=0;ee<S;ee++)z.push(V[ee+S+W]);z.push(V[U+S]);let oe=O.map(ee=>z[ee]);s.push(...oe.map(ee=>[ee.x,ee.y,ee.z]).flat()),d.push(...oe.map(ee=>(b(ee,T),[w.x,w.y,w.z])).flat())}}let F=[];for(let B=0;B<v.length;B++)for(let R=0;R<f;R++){let V=v[B][R];if(V<M){let q=v[V].findIndex(H=>H%M==B),Y=G[B][R],$=G[V][q];for(let H=0;H<S;H++){let X=Y[H],k=$[S-H],W=Y[H+1],U=$[S-(H+1)];[X,k,W,W,k,U].forEach(z=>{s.push(z[0].x,z[0].y,z[0].z),d.push(z[1].x,z[1].y,z[1].z)})}F.push(Y[0][0],$[S][0],Y[S][0],$[0][0])}}for(;F.length;){let B,R,V,q;[B,R]=F.splice(0,2);let Y=[B];for(;B!=R;)Y.push(R),V=F.indexOf(R),q=V%2,R=F.splice(V-q,2)[1-q];w.subVectors(Y[0],Y[1]).cross(h.subVectors(Y[0],Y[2])).normalize();let $=w.dot(Y[0])<0;$&&w.negate();for(let H=1;H<=Y.length-2;H++)[Y[H+ +$],Y[H+1-+$],Y[0]].forEach(X=>{s.push(X.x,X.y,X.z),d.push(w.x,w.y,w.z)})}}function u(){let p=new _o;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 v=b(p)/2/Math.PI+.5,M=_(p)/Math.PI+.5;l.push(v,1-M)}let f=new _o,h=new _o,m=new _o,y=new _o,g=new pd,x=new pd,S=new pd,w=(A,v,M,O)=>{O<0&&A.x===1&&(l[v]=A.x-1),M.x===0&&M.z===0&&(l[v]=O/2/Math.PI+.5)};for(let A=0,v=0;A<s.length;A+=9,v+=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[v+0],l[v+1]),x.set(l[v+2],l[v+3]),S.set(l[v+4],l[v+5]),y.copy(f).add(h).add(m).divideScalar(3);let M=b(y);w(g,v+0,f,M),w(x,v+2,h,M),w(S,v+4,m,M)}for(let A=0;A<l.length;A+=6){let v=l[A+0],M=l[A+2],O=l[A+4],T=Math.max(v,M,O),C=Math.min(v,M,O);T>.9&&C<.1&&(v<.2&&(l[A+0]+=1),M<.2&&(l[A+2]+=1),O<.2&&(l[A+4]+=1))}function b(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 Zo(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as FC}from"three";var Xy=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 us(t*.5,i,a):new FC(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},us=class extends Zo{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 us(t.radius,t.corner,t.cornerSides)}};import{Plane as ZC,Shape as ug,Vector2 as Ao,Vector3 as JC,MathUtils as vd,LineCurve as bd,QuadraticBezierCurve as dg,CubicBezierCurve as dc}from"three";import{CubicBezierCurve as lc,EllipseCurve as jC,LineCurve as cc,LineCurve3 as UC,MathUtils as HC,QuadraticBezierCurve as hd,SplineCurve as qC,Vector2 as Bt,Vector3 as Zy}from"three";var ds=1e-12,Ui=class{constructor(t){this.position=new Bt;this.startPosition=new Bt;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 Ui(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Hi=class extends Ui{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Hi(this.parent).copy(this)}},Tr=class extends Ui{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Hi(this),new Hi(this))}static create(e,r){let o=new Tr(e,new Bt(...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 Tr(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 Bt,r=new Bt){let[o,i]=this.computeTangents();return o&&i&&(Ky(o,e),Ky(i,r)),[e,r]}computeTangent(e=new Bt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new Bt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Ky(n,t=new Bt){let e=n.length();return t.set(-n.y/e,n.x/e)}var md=n=>n,qi=new Bt,uc=new Bt,WC=new Bt,$C=new Bt,YC=new Bt,XC=new Bt,Jy=new Zy,eg=new Zy;function tg(n){let t=new Bt;t.addVectors(n.v0,qi.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Bt;return e.addVectors(n.v2,uc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new lc(n.v0,t,e,n.v2)}function ps(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function KC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function QC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function yd(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 rg(n,t,e){return Qy(n,t)&&Qy(t,e)&&fd(n.position,t.position,e.position)}function fd(n,t,e){return qi.copy(t).sub(n).cross(uc.copy(e).sub(n))===0}function og(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,d=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(s+l,a+d),o.set(s-l,a-d),[r,o]}function ng(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function ig(n,t,e,r,o,i){let a=t.x-n.x,s=t.y-n.y,l=e.x-n.x,d=e.y-n.y,c=Math.sqrt((a+l)*(a+l)+(s+d)*(s+d)),u;return yd(t,n,e)>Math.PI&&(c*=-1),ps(d,s)?u=(s+d)*(r/c-.5)*8/3/(a-l):u=(a+l)*(r/c-.5)*8/3/(d-s),o.set(t.x-u*s,t.y+u*a),i.set(e.x+u*d,e.y-u*l),[o,i]}function gd(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Qy(n,t){return fd(n.position,n.controls[1].position,t.position)&&fd(n.position,t.controls[0].position,t.position)}function ag(n,t,e,r,o=.5){let i=qi.subVectors(t,n).multiplyScalar(o).add(n),a=uc.subVectors(e,t).multiplyScalar(o).add(t),s=WC.subVectors(r,e).multiplyScalar(o).add(e),l=i,d=$C.subVectors(a,i).multiplyScalar(o).add(i),c=YC.subVectors(s,a).multiplyScalar(o).add(a),u=s,p=XC.subVectors(c,d).multiplyScalar(o).add(d);return[n.x,n.y,l.x,l.y,d.x,d.y,p.x,p.y,c.x,c.y,u.x,u.y,r.x,r.y]}function sg(n,t,e=12,r=!0){let o=eg.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let d=md(t[l]),c=qi,u=Jo(d,e);s.push(u);for(let p=0;p<=u;p++)if(d instanceof lc||d instanceof hd||d instanceof cc){if(d.getPoint(p/u,c),o.set(c.x,c.y,0),i!==void 0&&QC(i,o))continue;i===void 0&&(i=Jy),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 lg(n,t,e,r=12,o=!0){let i=eg.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let d,c=md(t[l]),u=qi,p=Jo(c,r);s.push(p);for(let f=0;f<=p;f++)if(c instanceof lc||c instanceof hd||c instanceof cc){if(c.getPoint(f/p,u),i.set(u.x,u.y,0),d?.equals(i))continue;d===void 0?d=Jy:(n.setXYZ(a,d.x,d.y,d.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),d.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 xd(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=Jo(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=Jo(a.curveAfter,t)),r.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Jo(n[0].roundedCurveCorner,t)*.5),r}function Jo(n,t=12){return n&&n instanceof jC?t*2:n&&(n instanceof cc||n instanceof UC)?1:n&&n instanceof qC?t*n.points.length:t}function cg(n,t,e=12,r=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=md(t[a]),l=Jo(s,e),d=qi;for(let c=0;c<=l;c++)if(s instanceof lc||s instanceof hd||s instanceof cc){if(s.getPoint(c/l,d),o!==void 0&&KC(o,d,ds))continue;o===void 0&&(o=uc),o.copy(d),n.push(d.x,d.y),i++}}return ps(n[0],n[n.length-2],ds)&&ps(n[1],n[n.length-1],ds)&&(n.pop(),n.pop()),r&&i>1&&!(ps(n[i-1],n[1],ds)&&ps(n[i-2],n[0],ds))&&(n.push(n[0],n[1]),i++),n}var Sd=new Ao,eP=new Ao,tP=new Ao,rP=new Ao,oP=new Ao,nP=new Ao,Ne=class extends ug{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=vd.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Ne;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Tr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Ne.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],d=l.points.length,c=l.getPointIndexById(e);if(c<0)i+=d;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=Sd.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=vd.generateUUID()){let i;e instanceof Ao?i=e:i=new Ao(e,r);let a=new Tr(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 sg(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=xd(this.points,e,!1),this.roundedCurveDivisions=xd(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return lg(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),cg(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=Jo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,d)=>l+d,0));for(let l=0,d=i.length;l<d;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(gd(i,a)){let u=i.position.distanceTo(a.position);return i.position.distanceTo(Sd.set(o.x,o.y))/u}let d=0;for(let u=0;u<e;u++)d+=s[u];return(r-d)/l}dispose(){}_applyCurveForPoint(e,r){gd(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],d=a.roundness,c=s&&l&&rg(s,a,l);if(!a.controlsMoved()&&d>0&&!c){let u=a.curveBefore,p=a.curveAfter;if(u===void 0||p===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=u.getLength(),y=p.getLength(),g=Math.min(d,m*.499),x=Math.min(d,y*.499),S=Math.min(g,x),w=1-S/m,b=S/y,_=u.getPointAt(w,Sd),A=p.getPointAt(b,eP);this._subSplitCurve(u,f,w,_,void 0),this._subSplitCurve(p,h,b,void 0,A);let v;if(this.useCubicForRoundedCorners){let M=yd(_,a.position,A)/2,O=Math.tan(M)*_.distanceTo(a.position),[T,C]=og(_,A,O,tP,rP),P=ng(T,C,a.position),[I,D]=ig(P,_,A,O,oP,nP);v=new dc(_.clone(),I.clone(),D.clone(),A.clone())}else v=new dg(_.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=v,this.roundedCurves.splice(o+r,0,v),r++}}}}_subSplitCurve(e,r,o,i,a){if(e instanceof bd)i!==void 0&&r.v2.copy(i),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,d=s.getUtoTmapping(o,0),c=ag(s.v0,s.v1,s.v2,s.v3,d);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 Ne(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],d=e.points[i+3],c=e.points[i+4],u=e.points[i+5],p=e.points[i+6],f=new Tr(vd.generateUUID(),new Ao(a,s));f.controls[0].position.set(l,d),f.controls[1].position.set(c,u),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Ne;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 dc&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,d;for(l=0,d=a.length;l<d;l++)a[l]instanceof dg&&(a[l]=tg(a[l]));for(l=0,d=a.length;l<d;l++){let p=a[l],f=l>0?a[l-1]:null,h;p instanceof dc?(h=this.createPoint(p.v0),h.controls[1].position.copy(p.v1)):p instanceof bd&&(h=this.createPoint(p.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let c=a[a.length-1],u=!1;return c instanceof dc?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),u=!0):c instanceof bd&&c.v2.equals(s[0].position)&&(u=!0),this.isClosed=u,s};return this.points=i(e.curves),e instanceof ug&&(this.shapeHoles=e.holes.map(a=>{let s=new Ne;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 _d=Math.PI*2;function wd({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function iP(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 pg(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 aP(n,t,e,r,o,i,a,s,l,d){let c=Math.pow(o,2),u=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),h=c*u-c*f-u*p;h<0&&(h=0),h/=c*f+u*p,h=Math.sqrt(h)*(l===d?-1:1);let m=h*o/i*s,y=h*-i/o*a,g=m+(n+e)/2,x=y+(t+r)/2,S=(a-m)/o,w=(s-y)/i,b=(-a-m)/o,_=(-s-y)/i,A=pg(1,0,S,w),v=pg(S,w,b,_);return!d&&v>0&&(v-=_d),d&&v<0&&(v+=_d),{centerx:g,centery:x,ang1:A,ang2:v}}function fg({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 d=(n-e)/2,c=(t-r)/2;if(d===0&&c===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(d,2)/Math.pow(o,2)+Math.pow(c,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let p=aP(n,t,e,r,o,i,d,c,a,s),{ang1:f,ang2:h}=p,{centerx:m,centery:y}=p,g=Math.abs(h)/(_d/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);h/=x;for(let S=0;S<x;S++)l.push(iP(f,h)),f+=h;return l.map(S=>{let{x:w,y:b}=wd(S[0],o,i,m,y),{x:_,y:A}=wd(S[1],o,i,m,y),{x:v,y:M}=wd(S[2],o,i,m,y);return{x1:w,y1:b,x2:_,y2:A,x:v,y:M}})}import{BufferAttribute as yc,BufferGeometry as xP}from"three";var Pe;(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"})(Pe||(Pe={}));var Xe;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Xe||(Xe={}));function me(n,t){if(!n)throw t||"Assertion Failed!"}var pe=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){me(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){me(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){me(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){me(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}(),fs=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}(),pc=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}(),Wi=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}(),hg=function(){function n(){var t=new Wi,e=new fs,r=new pc(0),o=new pc(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 pc(0),r=new pc(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;me(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;me(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 Wi,e=new Wi,r=new fs,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 Wi;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var a=new fs;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 fs;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 Wi;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 fs;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&&pe.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&pe.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,d;for(i=t,i=t;(o=i.next)!==t;i=o){me(o.prev===i),l=o.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(me(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){me(a.prev===s),l=a.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(me(a.prev===s&&a.anEdge===null),d=r,d=r;(l=d.next)!==r;d=l)me(l.Sym.next===d.Sym),me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Org!==null),me(l.Dst!==null),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l);me(l.Sym.next===d.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),mg=function(){function n(){this.handle=null}return n}(),yg=function(){function n(){this.key=null,this.node=0}return n}(),sP=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 mg,this.handles[r]=new yg;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,me(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 mg;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new yg}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;me(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}(),Ad=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}(),gg=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),lP=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new gg,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 gg;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}(),cP=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?pe.vertLeq(i.Org,a.Org)?pe.edgeSign(a.Dst,i.Org,a.Org)<=0:pe.edgeSign(i.Dst,a.Org,i.Org)>=0:pe.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return pe.edgeSign(i.Dst,o,i.Org)>=0;var s=pe.edgeEval(i.Dst,o,i.Org),l=pe.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&me(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){me(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 Ad;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 Pe.ODD:return(e&1)!==0;case Pe.NONZERO:return e!==0;case Pe.POSITIVE:return e>0;case Pe.NEGATIVE:return e<0;case Pe.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,d,c,u=!0;d=r;do me(pe.vertLeq(d.Org,d.Dst)),n.addRegionBelow(t,e,d.Sym),d=d.Onext;while(d!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,c=i;s=n.regionBelow(l),d=s.eUp.Sym,d.Org===c.Org;)d.Onext!==c&&(t.mesh.splice(d.Oprev,d),t.mesh.splice(c.Oprev,d)),s.windingNumber=l.windingNumber-d.winding,s.inside=n.isWindingInside(t,s.windingNumber),l.dirty=!0,!u&&n.checkForRightSplice(t,l)&&(n.addWinding(d,c),n.deleteRegion(t,l),t.mesh.delete(c)),u=!1,l=s,c=d;l.dirty=!0,me(l.windingNumber-d.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=pe.vertL1dist(e,t),i=pe.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(pe.vertLeq(o.Org,i.Org)){if(pe.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;pe.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(pe.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(me(!pe.vertEq(o.Dst,i.Dst)),pe.vertLeq(o.Dst,i.Dst)){if(pe.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(pe.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,d=i.Dst,c,u,p=new Wi,f,h;if(me(!pe.vertEq(d,l)),me(pe.edgeSign(l,t.event,a)<=0),me(pe.edgeSign(d,t.event,s)>=0),me(a!==t.event&&s!==t.event),me(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(c=Math.min(a.t,l.t),u=Math.max(s.t,d.t),c>u))return!1;if(pe.vertLeq(a,s)){if(pe.edgeSign(d,a,s)>0)return!1}else if(pe.edgeSign(l,s,a)<0)return!1;return n.debugEvent(t),pe.intersect(l,a,d,s,p),me(Math.min(a.t,l.t)<=p.t),me(p.t<=Math.max(s.t,d.t)),me(Math.min(d.s,l.s)<=p.s),me(p.s<=Math.max(s.s,a.s)),pe.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.event.t),f=pe.vertLeq(a,s)?a:s,pe.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),pe.vertEq(p,a)||pe.vertEq(p,s)?(n.checkForRightSplice(t,e),!1):!pe.vertEq(l,t.event)&&pe.edgeSign(l,t.event,p)>=0||!pe.vertEq(d,t.event)&&pe.edgeSign(d,t.event,p)<=0?d===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):(pe.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),pe.edgeSign(d,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,d),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,d=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(t,e),pe.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),d=!0),pe.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,a,null),d=!0),d){n.addRightEdges(t,e,r.Onext,i,i,!0);return}pe.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,pe.vertEq(o.Org,r)){me(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!pe.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}me(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(me(i!==a),n.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(r.anEdge,a),pe.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,d=new Ad;if(d.eUp=e.anEdge.Sym,r=t.dict.search(d).key,o=n.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,pe.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=pe.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);me(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 Ad,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 lP(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||(me(e.fixUpperEdge),me(++r===1)),me(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,pe.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 sP(i,pe.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,me(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||!pe.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}(),uP=function(){function n(){this.mesh=new hg,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=Pe.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],d=[0,0,0],c=[0,0,0],u=[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],d[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<d[g]&&(d[g]=i,h[g]=e),i>l[g]&&(l[g]=i,f[g]=e);var x=0;if(l[1]-d[1]>l[0]-d[0]&&(x=1),l[2]-d[2]>l[x]-d[x]&&(x=2),d[x]>=l[x]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[x],o=f[x],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)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],p[0]=c[1]*u[2]-c[2]*u[1],p[1]=c[2]*u[0]-c[0]*u[2],p[2]=c[0]*u[1]-c[1]*u[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,d=t.next;d!==t;d=d.next)l?(this.bmin[0]=this.bmax[0]=d.s,this.bmin[1]=this.bmax[1]=d.t,l=!1):(d.s<this.bmin[0]&&(this.bmin[0]=d.s),d.s>this.bmax[0]&&(this.bmax[0]=d.s),d.t<this.bmin[1]&&(this.bmin[1]=d.t),d.t>this.bmax[1]&&(this.bmax[1]=d.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(;pe.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;pe.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(pe.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(pe.edgeGoesLeft(o.Lnext)||pe.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&&(pe.edgeGoesRight(r.Lprev)||pe.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 d=t.vHead.next;d!==t.vHead;d=d.next)d.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 d=i.Org;d.n===-1&&(d.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===Xe.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 d=t.vHead.next;d!==t.vHead;d=d.next)if(d.n!==-1){var u=d.n*o;this.vertices[u+0]=d.coords[0],this.vertices[u+1]=d.coords[1],o>2&&(this.vertices[u+2]=d.coords[2]),this.vertexIndices[d.n]=d.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 d=i.Org;this.elements[p++]=d.n,l++,i=i.Lnext}while(i!==c.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-1;if(e===Xe.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,d=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[d++]=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 hg),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=Pe.ODD),e===void 0&&(e=Xe.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_(),cP.computeInterior(this,a);var s=this.mesh;return e===Xe.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===Xe.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},n}();function Cr(n){var t=n.windingRule,e=t===void 0?Pe.ODD:t,r=n.elementType,o=r===void 0?Xe.POLYGONS:r,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,d=n.normal,c=d===void 0?[0,0,1]:d,u=n.contours,p=u===void 0?[]:u,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 uP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(l||2,p[x]);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 Z4=Pe.ODD,J4=Pe.NONZERO,e5=Pe.POSITIVE,t5=Pe.NEGATIVE,r5=Pe.ABS_GEQ_TWO,o5=Xe.POLYGONS,n5=Xe.CONNECTED_POLYGONS,i5=Xe.BOUNDARY_CONTOURS;import{Box2 as mP,BufferAttribute as mc,BufferGeometry as yP,Vector2 as gP}from"three";var fc=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*fc.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*fc.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 d=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)),d.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),d.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=d,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)}},hs=fc;hs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Sg=Rt(bg()),ms={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Md={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Id={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},Od=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),tn=class extends yP{constructor(e,r,o=0,i=12,a=3,s=Pe.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 d=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(T=>{let C=T.extractShapePointsToFlatArray([],i),P=[];for(let I=C.length-1;I>=1;I-=2){let D=C[I-1],G=C[I-0];P.push(D,G)}return P}),u=[],p=[];for(let T=0;T<d.length;T+=2)p.push([d[T],d[T+1]]);u.push(p);for(let T=0;T<c.length;T++){let C=c[T],P=[];for(let I=0;I<C.length;I+=2)P.push([C[I],C[I+1]]);u.push(P)}let f;e.isText?f=new mP().setFromPoints(e.points.map(C=>C.position)).getSize(new gP).length()*.1:u[0].length===0?f=o:f=(0,Sg.default)(u).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=Cr({windingRule:s,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[d]})}catch{h=ms}let m;try{m=Cr({windingRule:Pe.ODD,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]})}catch{m=Md}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 C=m.elements[T],P=T%2===0?h.vertexCount:0;h.elements.push(C+P)}for(let T=0;T<m.vertexIndices.length;T++){let C=m.vertexIndices[T],P=h.vertexCount;h.vertexIndices.push(C+P)}for(let T=0;T<m.vertices.length;T++){let C=m.vertices[T];h.vertices.push(C)}}let g=1/0,x=-1/0,S=1/0,w=-1/0;for(let T=0,C=h.vertexCount;T<C;T++){let P=T*2,I=h.vertices[P+0],D=h.vertices[P+1];I<g&&(g=I),I>x&&(x=I),D<S&&(S=D),D>w&&(w=D)}this._minX=g,this._minY=S,this._width=x-g,this._height=w-S,this._buffer=new hs(this._computeBufferEstimatedSize(h));let b=[],_=[];for(let T=h.elementCount-1;T>=0;T--){let C=T>=y,P=T*2,I=h.elements[P+0],D=h.elements[P+1],G=I+D,N={start:I,count:D,normals:[],continuous:[],concave:[]},F=I,B=G-1,R=I+1,V=this._shape.roundedCurves.length;do{let X=F-I,k=h.vertices[B*2+0],W=h.vertices[B*2+1],U=h.vertices[F*2+0],z=h.vertices[F*2+1],oe=h.vertices[R*2+0],ee=h.vertices[R*2+1],Q=U-k,te=z-W,Z=Math.sqrt(Q*Q+te*te);Q/=Z,te/=Z;let se=U-oe,ne=z-ee,ie=Math.sqrt(se*se+ne*ne);se/=ie,ne/=ie,N.normals[X*2+0]=-ne,N.normals[X*2+1]=se,N.concave[X]=Q*ne-te*se>0;let ue=h.vertexIndices[F];if(Array.isArray(ue))N.continuous[X]=!1;else{let[le,de]=this._shape.getCurveIndexFromVertexId(ue-1,!0);if(de>0&&de<1)N.continuous[X]=!0;else{let ge=de===1?le+1:le-1;ge=(ge+V)%V;let Oe=de===1?0:1,He=this._shape.roundedCurves[le].getTangent(de),Me=this._shape.roundedCurves[ge].getTangent(Oe);N.continuous[X]=He.dot(Me)>.95}}C&&(N.normals[X*2+0]*=-1,N.normals[X*2+1]*=-1),[B,F,R]=[F,R,R+1],R>=G&&(R-=D)}while(R!==I+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(I*2,G*2),vertexCount:D,vertexIndices:new Array(D).fill(!0).map((X,k)=>[k,k]),elements:[0,D],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(I*2,G*2)});let Y=0;for(let X=1;X<=this._bevelSegments;X++){let k=X/this._bevelSegments*Math.PI/2,W=(1-Math.cos(k))*this._bevel,U=[],z=[],oe=[],ee=[],Q=0;for(let Z=0;Z<D;Z++){let se=Z*2,ne=(Z-1+D)%D*2,ie=h.vertices[N.start*2+se+0],ue=h.vertices[N.start*2+se+1],le=-N.normals[ne+0]*W,de=-N.normals[ne+1]*W,ge=-N.normals[se+0]*W,Oe=-N.normals[se+1]*W;if(N.concave[Z]||!N.concave[Z]&&C){let He=Math.atan2(de,le),Me=Math.atan2(Oe,ge);Me>He&&(Me-=Math.PI*2);let Ge=Me-He;if(N.continuous[Z]||C){let Ut=He+Ge/2,Se=Math.cos(Ut)*W,ut=Math.sin(Ut)*W;U[2*Q+0]=ie+Se*(C?-1:1),U[2*Q+1]=ue+ut*(C?-1:1),ee[Q]=Z,Q++}else{let Ut=Math.max(1,Math.floor(i/4*Math.abs(Ge)/Math.PI));for(let Se=0;Se<=Ut;Se++){let ut=He+Ge*(Se/Ut),mt=Math.cos(ut)*W,Qn=Math.sin(ut)*W;U[2*Q+0]=ie+mt,U[2*Q+1]=ue+Qn,ee[Q]=Z,Q++}}}else U[2*Q+0]=ie+le,U[2*Q+1]=ue+de,ee[Q]=Z,z[Z]=Q,Q++,U[2*Q+0]=ie,U[2*Q+1]=ue,ee[Q]=Z,Q++,U[2*Q+0]=ie+ge,U[2*Q+1]=ue+Oe,ee[Q]=Z,oe[Z]=Q,Q++}let te=Cr({windingRule:Pe.POSITIVE,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[U],edgeCreateCallback:Z=>{let ne=Z.Org.idx,ie=ee[ne],ue=ee[(ne+1)%ee.length];Z.idx=[ie,ue],Z.Sym.idx=[ue,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;Y=(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+=D);for(let ue=se;ue<ie;ue++){let le=ue%D,de=(ue+1)%D;if(!N.continuous[le]||!N.continuous[de]){te.vertexIndices[Z]=[se,le],te.vertexIndices.splice(Z+1,0,[de,ne]),te.vertices.splice((Z+1)*2,0,te.vertices[Z*2],te.vertices[Z*2+1]);break}}}q.push({bevelI:X,angle:k,size:W,boundary:te,reverseMap:ee,insetPoints:U})}let $=(X,k,W)=>{let U=0,z=X.boundary.vertexIndices.length;for(;U<z&&W(X.boundary.vertexIndices[k]);)k=(k+1)%z,U++;return U},H=b.length;for(let X=1;X<q.length;X++){let k=q[X-1],W=q[X],U=k.boundary.vertexIndices.length,z=W.boundary.vertexIndices.length;if(!U||!z)break;let oe=N.concave.length,ee=0,Q=Od(ee,D);for(;!k.boundary.vertexIndices.filter(Q).length||!W.boundary.vertexIndices.filter(Q).length;)ee++,Q=Od(ee,D);let te=k.boundary.vertexIndices.findIndex(Q),Z=W.boundary.vertexIndices.findIndex(Q);do te=(te+1)%U;while(Q(k.boundary.vertexIndices[te]));do Z=(Z+1)%z;while(Q(W.boundary.vertexIndices[Z]));ee=(ee+1)%D;let se=ee,ne=0,ie=this._buildBevelVert(N,k,(te-1+U)%U,void 0,ne),ue=this._buildBevelVert(N,W,(Z-1+z)%z,void 0,ne),le=ie,de=ue,ge,Oe,He=!1;do{ne=(ee||oe)/oe,Q=Od(ee,D);let Me=$(k,te,Q),Ge=$(W,Z,Q),Ut=He;if(He=!1,Me&&!Ge){for(let Se=0;Se<Me;Se++)ge=this._buildBevelVert(N,k,(te+Se)%U,Se/(Me-1),ne),b.push(le.topN,ge.topP,de.topN),l===!1&&b.push(ge.bottomP,le.bottomN,de.bottomN),le=ge;He=!0}else if(!Me&&Ge)for(let Se=0;Se<Ge;Se++)Oe=this._buildBevelVert(N,W,(Z+Se)%z,Se/(Ge-1),ne),b.push(de.topN,le.topP,Oe.topP),l===!1&&b.push(le.bottomP,de.bottomN,Oe.bottomP),de=Oe;else if(Me&&Ge)if(ge=this._buildBevelVert(N,k,te,0,ne),Oe=this._buildBevelVert(N,W,Z,0,ne),Ut?(b.push(le.topN,Oe.topP,de.topN),b.push(le.topN,ge.topP,Oe.topP),l===!1&&(b.push(Oe.bottomP,le.bottomN,de.bottomN),b.push(Oe.bottomP,ge.bottomP,le.bottomN))):(b.push(de.topN,le.topN,ge.topP),b.push(de.topN,ge.topP,Oe.topP),l===!1&&(b.push(ge.bottomP,le.bottomN,de.bottomN),b.push(ge.bottomP,de.bottomN,Oe.bottomP))),le=ge,de=Oe,Me===Ge)for(let Se=1;Se<Me;Se++)ge=this._buildBevelVert(N,k,(te+Se)%U,Se/(Me-1),ne),Oe=this._buildBevelVert(N,W,(Z+Se)%z,Se/(Ge-1),ne),b.push(le.topN,ge.topP,de.topN),b.push(de.topN,ge.topP,Oe.topP),l===!1&&(b.push(ge.bottomP,le.bottomN,de.bottomN),b.push(ge.bottomP,de.bottomN,Oe.bottomP)),le=ge,de=Oe;else if(Me>Ge){let Se=Me/Ge,ut=0;for(let mt=1;mt<Me;mt++)ge=this._buildBevelVert(N,k,(te+mt)%U,mt/(Me-1),ne),b.push(le.topN,ge.topP,de.topN),l===!1&&b.push(ge.bottomP,le.bottomN,de.bottomN),le=ge,mt>(ut+1)*Se&&(ut++,Oe=this._buildBevelVert(N,W,(Z+ut)%z,ut/(Ge-1),ne),b.push(de.topN,ge.topP,Oe.topP),l===!1&&b.push(ge.bottomP,de.bottomN,Oe.bottomP),de=Oe)}else{let Se=Ge/Me,ut=0;for(let mt=1;mt<Ge;mt++)Oe=this._buildBevelVert(N,W,(Z+mt)%z,mt/(Ge-1),ne),b.push(de.topN,ge.topP,Oe.topP),l===!1&&b.push(ge.bottomP,de.bottomN,Oe.bottomP),de=Oe,mt>(ut+1)*Se&&(ut++,ge=this._buildBevelVert(N,k,(te+ut)%U,ut/(Me-1),ne),b.push(le.topN,ge.topP,de.topN),l===!1&&b.push(ge.bottomP,le.bottomN,de.bottomN),le=ge)}te=(te+Me)%U,Z=(Z+Ge)%z,ee=(ee+1)%oe}while(ee!==se)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,N,b),C){let X=[];for(let k=b.length-1;k>=H+2;k-=3){let W=b[k-2],U=b[k-1],z=b[k-0];X.push(z,U,W)}b.splice(H,b.length-H,...X)}if(C){let X=[];for(let k=q[q.length-1].boundary.vertices.length-1;k>=1;k-=2){let W=q[q.length-1].boundary.vertices[k-1],U=q[q.length-1].boundary.vertices[k-0];X.push(W,U)}_.push(X)}if(!C){let X=q[q.length-1],k;try{k=Cr({windingRule:q.length>1?Pe.POSITIVE:Pe.ODD,elementType:Xe.POLYGONS,vertexSize:2,strict:!0,contours:[X.insetPoints,..._]})}catch{k=Id}if(!k)throw new Error("Error generating geometry for surface");c.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let W=0;W<k.elementCount*3;W+=3){let U=this._buildSurfaceVert(k,k.elements[W+0],Y),z=this._buildSurfaceVert(k,k.elements[W+1],Y),oe=this._buildSurfaceVert(k,k.elements[W+2],Y);b.push(U.top,z.top,oe.top),l===!1&&b.push(oe.bottom,z.bottom,U.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new mc(Uint32Array.from(b),1),v=new mc(this._buffer.positions,3),M=new mc(this._buffer.normals,3),O=new mc(this._buffer.uvs,2);v.needsUpdate=!0,M.needsUpdate=!0,O.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",v),this.setAttribute("normal",M),this.setAttribute("uv",O),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),d=this._buildBevelVert(r,i,(a+1)%s);o.push(d.topP,l.topN,l.bottomN),o.push(d.topP,l.bottomN,d.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,d=(s-this._minY)/this._height;this.forPathBevel&&(d=1);let c=this._buffer.get(this.forPathBevel?1:2),u=c*3,p=c*2,f={top:c+0,bottom:c+1};return this._buffer.positions[u+0]=a,this._buffer.positions[u+1]=s,this._buffer.positions[u+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[u+0]=0,this._buffer.normals[u+1]=0,this._buffer.normals[u+2]=1,this._buffer.uvs[p+0]=l,this._buffer.uvs[p+1]=d,this.forPathBevel===!1&&(this._buffer.positions[u+3]=a,this._buffer.positions[u+4]=s,this._buffer.positions[u+5]=o,this._buffer.normals[u+3]=0,this._buffer.normals[u+4]=0,this._buffer.normals[u+5]=-1,this._buffer.uvs[p+2]=l,this._buffer.uvs[p+3]=d),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,d]=r.boundary.vertexIndices[o],c,u,p,f;l!==d?(u=l,c=d,f=!1,p=e.continuous[u]&&e.continuous[c]):(c=l,u=(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,x=u*2,S=r.boundary.vertices[y+0],w=r.boundary.vertices[y+1],b=(1-m)*this._bevel,_=(S-this._minX)/this._width,A=(w-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(_=a),A=1);let v=e.normals[g+0],M=e.normals[g+1],O=e.normals[x+0],T=e.normals[x+1];if(f){let G=O-v,N=T-M;v=v+G*(1-i),M=M+N*(1-i);let F=Math.sqrt(v*v+M*M);v/=F,M/=F}let C=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),P=C*3,I=C*2,D={i:o,fi:c,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1,pathBevelUCoord:a};return this._buffer.positions[P+0]=S,this._buffer.positions[P+1]=w,this._buffer.positions[P+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[P+0]=v*h,this._buffer.normals[P+1]=M*h,this._buffer.normals[P+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[P+3]=S,this._buffer.positions[P+4]=w,this._buffer.positions[P+5]=b,this._buffer.normals[P+3]=v*h,this._buffer.normals[P+4]=M*h,this._buffer.normals[P+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_),p||(this.forPathBevel?(C+=1,P+=3,I+=2):(C+=2,P+=6,I+=4),D.topP=C+0,D.bottomP=C+1,this._buffer.positions[P+0]=S,this._buffer.positions[P+1]=w,this._buffer.positions[P+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[P+0]=O*h,this._buffer.normals[P+1]=T*h,this._buffer.normals[P+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[P+3]=S,this._buffer.positions[P+4]=w,this._buffer.positions[P+5]=b,this._buffer.normals[P+3]=O*h,this._buffer.normals[P+4]=T*h,this._buffer.normals[P+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_)),this.vertexCache[s]=D,D}clone(){let e=new tn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var $i=class extends xP{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Pe.ODD;this.elementType=Xe.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Pe.ODD,elementType:Xe.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,d=!0,c,u;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,g=i[y+0],x=i[y+1];if(c!==void 0&&g!==c&&(l=!1),u!==void 0&&x!==u&&(d=!1),c=g,u=x,!l&&!d)break}if(!l&&!d)try{s=Cr({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=ms}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new yc(new Float32Array(p*3),3),this._normalAttribute=new yc(new Float32Array(p*3),3),this._uvAttribute=new yc(new Float32Array(p*2),2),this._indexAttribute=new yc(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,g=-1/0;for(let w=0,b=p;w<b;w++){let _=w*2,A=s.vertices[_+0],v=s.vertices[_+1];A<h&&(h=A),A>m&&(m=A),v<y&&(y=v),v>g&&(g=v)}let x=m-h,S=g-y;for(let w=0,b=p;w<b;w++){let _=w*2,A=s.vertices[_+0],v=s.vertices[_+1],M=(A-h)/x,O=(v-y)/S;this._positionAttribute.setXYZ(w,A,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,M,O)}for(let w=0,b=f;w<b;w++){let _=w*3,A=s.elements[_+0],v=s.elements[_+1],M=s.elements[_+2];this._indexAttribute.setX(_+0,A),this._indexAttribute.setX(_+1,v),this._indexAttribute.setX(_+2,M)}}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 $i(this._shape,this._curveSegments);return e.userData=yo(this.userData),e}};var Yi=class extends tn{constructor(e,r,o=0,i=12,a=3,s=Pe.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),d=this._buildBevelVert(r,i,(a+1)%s);o.push(d.topP,l.topN,l.bottomN),o.push(d.topP,l.bottomN,d.bottomP)}}clone(){let e=new Yi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var Xt=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:Pe.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 Ne?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new Ne(r,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Ne(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 $i(n.shape,o,{windingRule:a}):s=new Yi(n.shape,t,e,o,r,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as vP,Float32BufferAttribute as bP,MathUtils as Nd,Vector2 as _g}from"three";var Ag=Math.PI*2,Ki=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=Nd.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Ne?n.shape:new Ne,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,d=n.shape,c=t*.5,u=e*.5,p=SP(d,c,u,o*Math.PI/180,r,i);d.isClosed=!0,d.update();let f;return o===0?(f=new vP,f.setAttribute("position",new bP([],3))):f=Xt.create({shape:d,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function SP(n,t,e,r,o,i){if(r>=Ag)return o>30||o%4===0?(_P(n,t,e,i),Math.round(o/4)):wg(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},d=fg({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%d.length===0?wP(n,a.x,a.y,d,o,t,e,i):wg(n,r,o,t,e,i)}function wP(n,t,e,r,o,i,a,s){let l=Math.round(o/r.length);n.addPoint(Xi(t,e));for(let d=0,c=r.length;d<c;d++){let u=r[d],p=n.points[d],f=Xi(u.x,u.y);p.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return s>0?Tg(n,i,a,s):n.addPoint(Xi(0,0)),l}function wg(n,t,e,r,o,i){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,d=Math.sin(l)*r,c=Math.cos(l)*o;n.addPoint(Xi(d,c))}return t<Ag?i>0?Tg(n,r,o,i):n.addPoint(Xi(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Cg(n,r,o,i)),1}function _P(n,t,e,r=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;n.addPoint(gc(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(gc(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(gc(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(gc(o,i-e,o+s,i-e,o-s,i-e)),r>0&&Cg(n,t,e,r)}function Xi(n,t){return new Tr(Nd.generateUUID(),new _g(n,t))}function gc(n,t,e,r,o,i){let a=Xi(n,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,i),a}function Tg(n,t,e,r){Pg(n,t,e,r).forEach(i=>n.addPoint(i))}function Cg(n,t,e,r){let o=Pg(n,t,e,r),i=new Ne;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Pg(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new _g(o/t,i/e),s=n.points.map(l=>{let d=l.clone();return d.uuid=Nd.generateUUID(),d}).reverse();return s.forEach(l=>{l.position.multiply(a);let d=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(d)}),s}import{BufferGeometry as AP,Float32BufferAttribute as Ed,Uint32BufferAttribute as TP,Vector3 as Og}from"three";var Mg=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:d,cornerRadius:c,cornerSegments:u}=n.parameters,p=new ys(!1,t,e,r,o,i,a,s,l,d,c,u);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Dd=new TP([0,0,0],1),ys=class extends AP{constructor(t=!0,e=1,r=1,o=1,i=1,a=1,s=1,l=1,d=1,c=1,u=1,p=1){if(super(),a===0)return;let f=t&&a===1;f&&(p=0),u>100&&(u=100),u===0&&(p=0);let h=()=>new Og,m=new Og,y=h(),g=h(),x=h(),S,w,b,_,A,v,M,O,T=h(),C=h(),P=h(),I=h(),D=h(),G=h(),N=h(),F=h(),B=r-2*l+.001,R=B/a,V=Math.ceil(s*a),q=V+1,Y=B/V,$=-B/2,H=c+1,X=2*Math.PI/c,k=Math.PI/2/p,W=.01,U=Math.min((1-u/100)*l,l-W),z=l-U,oe=0,ee=2,Q=p*ee+ee,te=H*Q/ee,Z=te+H*q,se=Math.max(0,H*(q+Q)),[ne,ie,ue]=[3,3,2].map(rt=>Array(se*rt).fill(0)),le=[],de=i-l;function ge(rt,rr){let Br=Math.PI/2;v=rr*Y,O=2*Math.PI*(v%R)/R+Br,v+=$,M=Math.sin(O)*de,A=Math.cos(O)*de,t?rt.set(A,M,v):rt.set(A,v,M)}ge(m,-1e-10),ge(y,0),T.copy(m),ge(m,1);let Oe=m.distanceTo(y),He=f?0:z+U,Me=Oe*V+2*He,Ge=U,Ut=Me-He;for(let rt=0;rt<=V;rt++){ge(g,rt),F.subVectors(g,T).normalize(),T.copy(g),G.copy(g).setComponent(+t+1,0).normalize(),N.crossVectors(F,G).normalize();let rr=rt===0,Br=rt===V,Gv=rr?3*Math.PI/2:k,zv=rr?Ge:Ut,kv=rr?H:Z,Fv=rr?0:se-H,jv=F.clone().multiplyScalar(rr?-z:z).add(g),Uv=F.clone().multiplyScalar(rr?-1:1).normalize();for(let uo=0;uo<H;uo++){let Jp=uo*X;if(C.addVectors(m.copy(G).multiplyScalar(l*Math.cos(Jp)),y.copy(N).multiplyScalar(l*Math.sin(Jp))),P.copy(C).normalize(),rr||Br){f||(oe=Fv+uo,[0,1,2].forEach(Ht=>{ne[oe*3+Ht]=jv.getComponent(Ht),ie[oe*3+Ht]=Uv.getComponent(Ht)}),ue[oe*2]=+Br,ue[oe*2+1]=uo/c),y.copy(P).multiplyScalar(U),x.addVectors(g,y);for(let Ht=0;Ht<p;Ht++){let mu=Ht*k+Gv;I.addVectors(m.copy(F).multiplyScalar(z*Math.sin(mu)),y.copy(P).multiplyScalar(z*Math.cos(mu))),D.copy(I).normalize(),y.addVectors(x,I),I.normalize(),oe=kv+Ht*H+uo,[0,1,2].forEach(qs=>{ne[oe*3+qs]=y.getComponent(qs),ie[oe*3+qs]=D.getComponent(qs)});let Hv=+rr+Math.sin(mu);ue[oe*2]=(zv+z*Hv)/Me,ue[oe*2+1]=uo/c}}y.addVectors(g,C),oe=te+rt*H+uo,[0,1,2].forEach(Ht=>{ne[oe*3+Ht]=y.getComponent(Ht),ie[oe*3+Ht]=P.getComponent(Ht)}),ue[oe*2]=(He+rt*Oe)/Me,ue[oe*2+1]=uo/c}}let Se=q+2*p+ee,ut=1,[mt,Qn]=[+f,Se-1];for(let rt=mt;rt<=Qn-1;rt++){let rr=f&&rt===Qn-1;for(let Br=0;Br<H-1;Br++)S=rt*H+Br,w=S+1,b=(rr?Br:S)+H,_=(rr?Br+1:w)+H,rt===0?le.push(w,_,b):rt===Se-2?le.push(S,w,b):le.push(S,w,b,w,_,b)}this.setIndex(le),this.setAttribute("position",new Ed(ne,3)),this.setAttribute("normal",new Ed(ie,3)),this.setAttribute("uv",new Ed(ue,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,d=6*(e-1)*t.radialSegments,c=e,u=c===e;for(let p=0;p<t.radialSegments;p++)i=c*r+p,a=i+1,s=(u?p:i)+r,l=(u?p+1:a)+r,o[d++]=i,o[d++]=a,o[d++]=s,o[d++]=a,o[d++]=l,o[d++]=s;return o.length=d,Dd.array=o,Dd.count=o.length,Dd}};import{IcosahedronGeometry as CP}from"three";var Ig=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 gs(t*.5,i,a):new CP(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},gs=class extends Zo{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 gs(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as PP,Shape as OP}from"three";var Ng=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 OP;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 PP(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as zg,BufferGeometryLoader as kP,Vector3 as FP,BoxGeometry as kg}from"three";import{BufferGeometry as RP,Vector2 as Vd,Vector3 as Gg}from"three";import{Box3 as MP,BufferAttribute as xs,BufferGeometry as Eg,Color as Rd,EventDispatcher as IP,Float32BufferAttribute as Qi,Matrix3 as Dg,Matrix4 as Vg,MathUtils as NP,Object3D as EP,Sphere as DP,Vector2 as sr,Vector3 as Mt,Vector4 as LP}from"three";var Yr=new Vg,Ld=new EP,xc=new Mt,rn=class extends IP{constructor(){super(),this.uuid=NP.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 Dg().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 Yr.makeRotationX(t),this.applyMatrix4(Yr),this}rotateY(t){return Yr.makeRotationY(t),this.applyMatrix4(Yr),this}rotateZ(t){return Yr.makeRotationZ(t),this.applyMatrix4(Yr),this}translate(t,e,r){return Yr.makeTranslation(t,e,r),this.applyMatrix4(Yr),this}scale(t,e,r){return Yr.makeScale(t,e,r),this.applyMatrix4(Yr),this}lookAt(t){return Ld.lookAt(t),Ld.updateMatrix(),this.applyMatrix4(Ld.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,d=o.uv2;d!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new Mt().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new Rd().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 Mt().fromBufferAttribute(a,p),new Mt().fromBufferAttribute(a,f),new Mt().fromBufferAttribute(a,h)],x=new Zi(p,f,h,g,y,m);e.faces.push(x),l!==void 0&&e.faceVertexUvs[0].push([new sr().fromBufferAttribute(l,p),new sr().fromBufferAttribute(l,f),new sr().fromBufferAttribute(l,h)]),d!==void 0&&e.faceVertexUvs[1].push([new sr().fromBufferAttribute(d,p),new sr().fromBufferAttribute(d,f),new sr().fromBufferAttribute(d,h)])}let u=t.groups;if(u.length>0)for(let p=0;p<u.length;p++){let f=u[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(xc).negate(),this.translate(xc.x,xc.y,xc.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Vg;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 Mt,e=new Mt;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 Mt;if(t){let r=new Mt,o=new Mt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],d=this.vertices[s.b],c=this.vertices[s.c];r.subVectors(c,d),o.subVectors(l,d),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 rn;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 d=new Mt,c={a:new Mt,b:new Mt,c:new Mt};i.push(d),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],d=o.vertexNormals[i];l.copy(s.normal),d.a.copy(s.vertexNormals[0]),d.b.copy(s.vertexNormals[1]),d.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 MP),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new DP),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,d=t.faces,c=this.colors,u=t.colors;e!==void 0&&(o=new Dg().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=u.length;p<f;p++)c.push(u[p].clone());for(let p=0,f=d.length;p<f;p++){let h=d[p],m,y,g=h.vertexNormals,x=h.vertexColors,S=new Zi(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,b=g.length;w<b;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,b=x.length;w<b;w++)y=x[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],x=[];for(let S=0,w=g.length;S<w;S++)x.push(g[S].clone());this.faceVertexUvs[p].push(x)}}}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,d=this.vertices.length;l<d;l++){let c=this.vertices[l],u=Math.round(c.x*i)+"_"+Math.round(c.y*i)+"_"+Math.round(c.z*i);e[u]===void 0?(e[u]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[u]]}let a=[];for(let l=0,d=this.faces.length;l<d;l++){let c=this.faces[l];c.a=o[c.a],c.b=o[c.b],c.c=o[c.c];let u=[c.a,c.b,c.c];for(let p=0;p<3;p++)if(u[p]===u[(p+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let d=a[l];this.faces.splice(d,1);for(let c=0,u=this.faceVertexUvs.length;c<u;c++)this.faceVertexUvs[c].splice(d,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 Mt(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,d){return l.materialIndex-d.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 d=t[l]._id;a&&a.push(o[d]),s&&s.push(i[d])}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=[],d={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,g=!1,x=this.faceVertexUvs[0][h]!==void 0,S=m.normal.length()>0,w=m.vertexNormals.length>0,b=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,x),A=c(A,4,S),A=c(A,5,w),A=c(A,6,b),A=c(A,7,_),r.push(A),r.push(m.a,m.b,m.c),r.push(m.materialIndex),x){let v=this.faceVertexUvs[0][h];r.push(f(v[0]),f(v[1]),f(v[2]))}if(S&&r.push(u(m.normal)),w){let v=m.vertexNormals;r.push(u(v[0]),u(v[1]),u(v[2]))}if(b&&r.push(p(m.color)),_){let v=m.vertexColors;r.push(p(v[0]),p(v[1]),p(v[2]))}}function c(h,m,y){return y?h|1<<m:h&~(1<<m)}function u(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 d[m]!==void 0||(d[m]=l.length/2,l.push(h.x,h.y)),d[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 rn().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],x=[];for(let S=0,w=g.length;S<w;S++){let b=g[S];x.push(b.clone())}this.faceVertexUvs[p].push(x)}}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],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),h.vertexNormals.push(x)}}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 d=t.lineDistances;for(let p=0,f=d.length;p<f;p++)this.lineDistances.push(d[p]);let c=t.boundingBox;c!==null&&(this.boundingBox=c.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.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 Bd().fromGeometry(this),e=new Eg,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",vc.call(new xs(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",vc.call(new xs(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",Lg.call(new xs(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",Bg.call(new xs(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",Bg.call(new xs(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 d=a[s],c=new Qi(d.data.length*3,3);c.name=d.name,i.push(vc.call(c,d.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new Qi(t.skinIndices.length*4,4);e.setAttribute("skinIndex",Rg.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new Qi(t.skinWeights.length*4,4);e.setAttribute("skinWeight",Rg.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 Eg,r=t.geometry;if(t.isPoints||t.isLine){let o=new Qi(r.vertices.length*3,3),i=new Qi(r.colors.length*3,3);if(e.setAttribute("position",vc.call(o,r.vertices)),e.setAttribute("color",Lg.call(i,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new Qi(r.lineDistances.length,1);e.setAttribute("lineDistance",BP.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}};rn.prototype.isGeometry=!0;var Bd=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,d;if(l>0){d=[];for(let g=0;g<l;g++)d[g]={name:s[g].name,data:[]};this.morphTargets.position=d}let c=t.morphNormals,u=c.length,p;if(u>0){p=[];for(let g=0;g<u;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 x=e[g];this.vertices.push(r[x.a],r[x.b],r[x.c]);let S=x.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let b=x.normal;this.normals.push(b,b,b)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let b=x.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][g];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new sr,new sr,new sr))}if(a===!0){let b=o[1][g];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new sr,new sr,new sr))}for(let b=0;b<l;b++){let _=s[b].vertices;d[b].data.push(_[x.a],_[x.b],_[x.c])}for(let b=0;b<u;b++){let _=c[b].vertexNormals[g];p[b].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(h[x.a],h[x.b],h[x.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}},Zi=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 Mt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Rd,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 BP(n){return this.array.set(n),this}function Lg(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 Rd),t[e++]=i.r,t[e++]=i.g,t[e++]=i.b}return this}function Bg(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 sr),t[e++]=i.x,t[e++]=i.y}return this}function vc(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 Mt),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z}return this}function Rg(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 LP),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z,t[e++]=i.w}return this}var VP=["a","b","c"];function GP(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Gd(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function zd(n,t,e,r,o,i){let a=Math.min(n,t),s=Math.max(n,t),l=a+"_"+s,d;if(r.has(l))d=r.get(l);else{let c=e[a],u=e[s];d={a:c,b:u,newEdge:null,faces:[]},r.set(l,d)}d.faces.push(o),i[n].edges.push(d),i[t].edges.push(d)}function zP(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],zd(a.a,a.b,n,r,a,e),zd(a.b,a.c,n,r,a,e),zd(a.c,a.a,n,r,a,e)}function bc(n,t,e,r,o){n.push(new Zi(t,e,r,void 0,void 0,o))}function Ji(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function Sc(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var wc=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof RP?t=new rn().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 Gg,r,o,i,a,s,l=t.vertices,d=t.faces,c=t.faceVertexUvs[0],u=c!==void 0&&c.length>0,p=[],f=new Map;zP(l,d,p,f);let h=[],m,y,g,x,S,w,b;for(let W of Array.from(f.keys())){for(y=f.get(W),g=new Gg,S=3/8,w=1/8,b=y.faces.length,b!=2&&(S=.5,w=0,b!=1),g.addVectors(y.a,y.b).multiplyScalar(S),e.set(0,0,0),a=0;a<b;a++){for(x=y.faces[a],s=0;s<3&&(m=l[GP(x,VP[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,v,M,O,T,C,P=[];for(o=0,i=l.length;o<i;o++){for(T=l[o],O=p[o].edges,r=O.length,r==3?_=3/16:r>3&&(_=3/(8*r)),A=1-r*Number(_),v=_,r<=2&&(r==2?(A=3/4,v=1/8):r==1||r==0),C=T.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<r;a++)M=O[a],m=M.a!==T?M.a:M.b,e.add(m);e.multiplyScalar(Number(v)),C.add(e),P.push(C)}let I=P.concat(h),D=P.length,G,N,F,B=[],R=[],V,q,Y,$,H=new Vd,X=new Vd,k=new Vd;for(o=0,i=d.length;o<i;o++)x=d[o],G=Number(Gd(x.a,x.b,f).newEdge)+D,N=Number(Gd(x.b,x.c,f).newEdge)+D,F=Number(Gd(x.c,x.a,f).newEdge)+D,bc(B,G,N,F,x.materialIndex),bc(B,x.a,G,F,x.materialIndex),bc(B,x.b,N,G,x.materialIndex),bc(B,x.c,F,N,x.materialIndex),u&&(V=c[o],q=V[0],Y=V[1],$=V[2],H.set(Ji(q.x,Y.x),Ji(q.y,Y.y)),X.set(Ji(Y.x,$.x),Ji(Y.y,$.y)),k.set(Ji(q.x,$.x),Ji(q.y,$.y)),Sc(R,H,X,k),Sc(R,q,H,k),Sc(R,Y,X,H),Sc(R,$,k,X));t.vertices=I,t.faces=B,u&&(t.faceVertexUvs[0]=R)}};var pt=new FP,Fg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new zg().copy(new kg(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(pt),r={width:pt.x,height:pt.y,depth:pt.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 zg().copy(new kg(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(pt)):pt.set(a.width,a.height,a.depth),(t!==pt.x||e!==pt.y||r!==pt.z)&&i.scale(pt.x===0?1:t/pt.x,pt.y===0?1:e/pt.y,pt.z===0?1:r/pt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new wc(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 kP(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(pt);let a=100/pt.x;Object.assign(i.parameters,{width:100,height:pt.y*a,depth:pt.z*a}),t(this.build(i))})}};var _c=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 Ne?n.shape:new Ne,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,d=t*.5,c=e*.5,u=0,p=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,g=u+Math.sin(y)*d,x=p+Math.cos(y)*c;l.addPoint(l.createPoint(g,x))}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=Xt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as jP,Float32BufferAttribute as kd,Vector2 as Xr,Vector3 as bt}from"three";var jg=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,d=new jd(t*.5,e,o,i,a,s,l);return d.scale(1,1,r/t),Object.assign(d,{userData:{...n,type:"PyramidGeometry"}})}};function vs(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Fd(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 d=a.add(s).normalize();i.copy(n).addScaledVector(d,r/Math.sin(l/2))}else{let d=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(d)),i.addScaledVector(s,r/Math.sin(d))}}function UP(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var jd=class extends jP{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=[],d=[],c=[],u=[],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,x=Math.PI-g,S=new bt(0,-f,0),w=new bt(0,f,0),b=new Xr(t,-f),_=new Xr(m,-f),A=new Xr(0,w.y).sub(_),v=new Xr(0,w.y).sub(b),M=new Xr(A.y,-A.x).normalize(),O=new Xr(v.y,-v.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,C);let P;{let R=new bt(M.x,M.y,0),V=new bt(Math.cos(y)*R.x,R.y,Math.sin(y)*R.x);P=R.angleTo(V)}let I=a/Math.tan((Math.PI-A.angle())/2),D=a/Math.tan((Math.PI-P)/2),G=new bt;if(!i){d.push(S.x,S.y,S.z),c.push(0,-1,0),u.push(0,0);let R=p++,V=[],q=b.clone(),Y=I/Math.cos(Math.PI/r);q.x-=Y;for(let $=0;$<r;$++){let H=$/r*Math.PI*2+h,X=new Xr(Math.sin(H),Math.cos(H));vs(q,X,G),d.push(G.x,G.y,G.z),c.push(0,-1,0),u.push(0,0),V.push(p++)}for(let $=0;$<V.length;$++)l.push(V[$],R,V[($+1)%V.length])}let N=[];{let R=new bt,V=new bt,q=new bt,Y=new bt,$=new bt,H=new bt;for(let X=0;X<r;X++){let k=X/r*Math.PI*2+h,W=(X+.5)/r*Math.PI*2+h,U=(X+1)/r*Math.PI*2+h,z=new Xr(Math.sin(k),Math.cos(k)),oe=new Xr(Math.sin(W),Math.cos(W)),ee=new Xr(Math.sin(U),Math.cos(U));vs(b,z,V),vs(b,ee,q),vs(M,oe,R),Fd(w,V,q,D,D,Y),d.push(Y.x,Y.y,Y.z),Fd(V,w,q,D,I,$),d.push($.x,$.y,$.z),Fd(q,V,w,I,D,H),d.push(H.x,H.y,H.z),c.push(R.x,R.y,R.z),c.push(R.x,R.y,R.z),c.push(R.x,R.y,R.z),u.push(0,0),u.push(0,0),u.push(0,0);let Q=p++,te=p++,Z=p++;if(l.push(Q,te,Z),a>0){{let ie=V.clone().add(q).multiplyScalar(.5),ue=w.clone().sub(ie).normalize(),de=S.clone().sub(ie).normalize().add(ue).normalize().multiplyScalar(-1),ge=H.clone().sub($);F(ie,ge,de,A.angle())}let se,ne;{let ie=new bt;vs(O,ee,ie);let ue=H.clone().add(Y).multiplyScalar(.5);ue=UP(ue,q,w);let le=H.clone().sub(Y);[se,ne]=F(ue,le,ie,P,Y.y)}{let ie=se,ue=ie.clone().setY(0).normalize(),le=new bt(0,-1,0),de=ue.clone().cross(le);B(ie,ue,le,de)}N.concat(ne);{let ie=A.angle(),ue=Math.PI-ie,le=w.clone();le.y-=a/Math.sin(ie-Math.PI/2);let de=new bt,ge=[];for(let He=0;He<s;He++){let Me=[],Ge=Math.PI/2-ue*He/s,Ut=Math.cos(Ge),Se=Math.sin(Ge),ut=W;for(let mt=0;mt<=He;mt++){let Qn=Math.cos(ut),rt=Math.sin(ut);R.x=Ut*rt,R.y=Se,R.z=Ut*Qn,de.copy(le).addScaledVector(R,a),d.push(de.x,de.y,de.z),c.push(R.x,R.y,R.z),u.push(0,0),Me.push(p++),ut+=Math.PI*2/He/r}ge.push(Me)}ne.reverse(),ge.push(ne);let Oe=ge.length-1;for(let He=0;He<Oe;He++){let Me=ge[He],Ge=ge[He+1],Ut=Me.length-1;l.push(Ge[1],Me[0],Ge[0]);for(let Se=1;Se<=Ut;Se++)l.push(Me[Se],Me[Se-1],Ge[Se]),l.push(Ge[Se+1],Me[Se],Ge[Se])}}}}}this.setIndex(l),this.setAttribute("position",new kd(d,3)),this.setAttribute("normal",new kd(c,3)),this.setAttribute("uv",new kd(u,2));function F(R,V,q,Y,$){let H=-Y/2,X=(Math.PI-Y)/2,k=V.clone().normalize().cross(q);R.addScaledVector(q,-a/Math.sin(X));let W=new bt,U=new bt,z=1,oe=p,ee=[];for(let Q=0;Q<=s;Q++){let te=H+Q/s*Y;U.set(0,0,0),U.addScaledVector(k,Math.sin(te)),U.addScaledVector(q,Math.cos(te));for(let Z=0;Z<=z;Z++){let se=Z/z-.5;if(W.copy(R),W.addScaledVector(V,se),W.addScaledVector(U,a),$!=null){let ne=Math.max(0,W.y-$);W.addScaledVector(V,-ne/V.y)}d.push(W.x,W.y,W.z),c.push(U.x,U.y,U.z),u.push(0,0),Z===0&&ee.push(p),p++}}for(let Q=0;Q<s;Q++)for(let te=0;te<z;te++){let Z=oe+te+(z+1)*Q,se=Z+(z+1),ne=se+1,ie=Z+1;l.push(Z,se,ie),l.push(se,ne,ie)}return[R.clone().addScaledVector(V,.5),ee]}function B(R,V,q,Y){let $=Math.PI/2,H=v.angle()-$,X=[],k=new bt,W=new bt;for(let z=0;z<=s;z++){let oe=[],ee=z/s;for(let Q=0;Q<=z;Q++){let Z=((z?Q/z:0)-.5)*x,se=Math.cos(Z),ne=Math.sin(Z),ie=Math.atan(Math.tan(H)*se),ue=($+ie)*ee,le=Math.cos(ue),de=Math.sin(ue);k.set(0,0,0),k.addScaledVector(V,de*se),k.addScaledVector(q,le),k.addScaledVector(Y,de*ne),W.copy(R).addScaledVector(k,a),d.push(W.x,W.y,W.z),c.push(k.x,k.y,k.z),u.push(0,0),oe.push(p++)}X.push(oe)}let U=X.length-1;for(let z=0;z<U;z++){let oe=X[z],ee=X[z+1],Q=oe.length-1;l.push(oe[0],ee[1],ee[0]);for(let te=1;te<=Q;te++)l.push(oe[te-1],oe[te],ee[te]),l.push(oe[te],ee[te+1],ee[te])}}}};var Ac=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 Ne?n.shape:new Ne,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,d={x:e*.5,y:r*.5},c={x:-d.x,y:-d.y},u={x:d.x,y:d.y};function p(w,b,_){return b>e&&_>r?Math.min(w*e/b,w*r/_):b>e?w*e/b:_>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=u.x,y=u.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 x=!0;for(let w=0,b=t.points.length;w<b;w++)t.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let S=Xt.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as HP,Float32BufferAttribute as qP,MathUtils as Ug,SphereGeometry as WP}from"three";var Hg=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=Ug.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:d}=n.parameters,c;return d===0?(c=new HP,c.setAttribute("position",new qP([],3))):c=new WP(.5*t,o,i,a,s,l,d*Ug.DEG2RAD),c.scale(1,e/t,r/t),Object.assign(c,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as $P}from"three";var qg=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 $P(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as YP,Float32BufferAttribute as Ud,Vector3 as XP}from"three";var Wg=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 Hd(t,e,r,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},Hd=class extends YP{constructor(t=1,e=1,r=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],d=[],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 u=[],p=Math.PI/2,f=(W=0,U=0,z=0)=>new XP(W,U,z),h=f(),m=f(),[y,g,x]=[e/2,t/2,r/2],S=-g,w=+g,[b,_,A]=[f(S,-y,+x),f(S,-y,-x),f(S,+y,-x)],v=(W,U=!1)=>Math.sin(W-Math.PI/(1+ +U)),M=(W,U=!1)=>Math.cos(W-Math.PI/(1+ +U));A.y=Math.sin(o)*e-y;let O=Math.cos(o)*e-x,T=b.z-c;o<=p?(A.z=Math.min(O,T),A.z==T&&(A.y-=(O-T)/Math.tan(p-o))):_.z=Math.min(_.z-O-x,b.z-c),h.subVectors(b,_),m.subVectors(A,_);let C=Math.min(h.length(),m.length())*i/100,P=C*Math.tan(o/2),I=C/Math.cos(o/2),D=h.clone().normalize().add(m.normalize()).setLength(I).add(_);h.set(0,v(o,!0),M(o,!0)),u.push([A,h.clone()]);let G=(Math.PI-o)/a;for(let W=0;W<=a;W++){let U=p+o+W*G;h.set(0,Math.sin(U)*P,Math.cos(U)*P),h.add(D),m.set(0,v(U),M(U)),u.push([h.clone(),m.clone()])}u.push([b,f(0,1,0)]);let N=Math.sin(G/2)*P*2,F=u.length-1,B=u[0][0].distanceTo(u[1][0]),R=u[F-1][0].distanceTo(u[F][0]),V=B+N*a+R;u[0].push(1);for(let W=0;W<=a;W++)u[W+1].push(1-(B+W*N)/V);u[F].push(0);let[q,Y,$]=u[0],H,X,k;for(let W=1;W<u.length;W++)[H,X,k]=u[W],s.push(S,q.y,q.z,S,H.y,H.z,w,q.y,q.z,w,q.y,q.z,S,H.y,H.z,w,H.y,H.z),l.push(0,Y.y,Y.z,0,X.y,X.z,0,Y.y,Y.z,0,Y.y,Y.z,0,X.y,X.z,0,X.y,X.z),d.push(0,$,0,k,1,$,1,$,0,k,1,k),[q,Y,$]=[H,X,k];this.setAttribute("position",new Ud(s,3)),this.setAttribute("normal",new Ud(l,3)),this.setAttribute("uv",new Ud(d,2))}};var Tc=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 Ne?n.shape:new Ne,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:d}=n.parameters,c=n.shape,u=t*.5,p=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=u*r/100,x=p*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let w=0;w<o;w++){let b=m*w,_=f+Math.sin(b)*u,A=h+Math.cos(b)*p;c.addPoint(c.createPoint(_,A))}}else for(let w=0;w<o;w++){let b=f+Math.cos(y)*u,_=h+Math.sin(y)*p;c.addPoint(c.createPoint(b,_)),y+=m,b=f+Math.cos(y)*g,_=h+Math.sin(y)*x,w<=o,c.addPoint(c.createPoint(b,_)),y+=m}c.isClosed=!0;for(let w=0,b=c.points.length;w<b;w++)c.points[w].roundness=i;c.roundness=i,c.update();let S=Xt.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:d}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as KP}from"three";var $g=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 KP(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as QP,Float32BufferAttribute as ZP,MathUtils as JP}from"three";var Yg=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,d=e2(t,e,r,t*.5,a,i,0,0,o,s,l);return d.scale(1,e/t,1),Object.assign(d,{userData:{...n,type:"TorusGeometry"}})}};function e2(n,t,e,r,o,i,a,s,l,d,c){[t,e]=[e,t],a=t/2;let u=JP.clamp(o/360,0,1);if(u===0){let p=new QP;return p.setAttribute("position",new ZP([],3)),p}return u===1&&(d=0),new ys(!0,n,t,e,r,u,i,a,s,l,d,c)}import{TorusKnotGeometry as t2}from"three";var Xg=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 t2(s,e,r,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var Kg=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 Ne?n.shape:new Ne,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,d=t*.5,c=e*.5;s?(l.addPoint(l.createPoint(-d,c)),l.addPoint(l.createPoint(d,-c)),l.addPoint(l.createPoint(-d,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(d,-c)),l.addPoint(l.createPoint(-d,-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 u=Xt.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as Zg,Vector3 as St,Matrix3 as r2,Matrix4 as Mn,BufferGeometry as Jg,BufferAttribute as ea,MathUtils as Cc}from"three";function Qg(n,t){let e=2*Math.PI;return(n%e+e)%e===(t%e+e)%e}var o2=new Mn,n2=new Mn;function i2(n,t,e){let r=[new St,new St,new St],o=[new St,new St,new St];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=Cc.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Mn().makeBasis(r[0],r[1],r[2])}var e0=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??Ki.create({parameters:Uu}).userData.shape;return{path:n.path??Mi.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:i,extrusion:{...jl,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new qd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Jg,{userData:{...n,type:"PathGeometry"}})}},qd=class extends Jg{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)||!Qg(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),d=Math.min(Math.max(2,l-s+1),a+2),c=[],u=[];for(let B=0;B<d;B++){let R=this.inputs.path.isClosed?(B+s)%e.length:Math.min(B+s,e.length-1);c.push(e[R].clone()),u.push(r[R].clone())}let p=(B,R,V)=>{c[B]=c[B].clone().lerp(c[R],V),u[B]=i2(u[B],u[R],V)},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 B=c.length-1;c[B].copy(c[0]),u[B].copy(u[0])}this._applyPathModifiers(u,f,m);let{bevel:g,bevelSides:x}=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:b,infos:_,vertices:A}=this._computeShapePoints(w),v=0,M;S==="round"&&(M=new tn(this.inputs.shapeData,2*g,g,w,x,void 0,!0),v=M.getAttribute("position").count);let O=0,T=0;_.sort((B,R)=>B.start-R.start),_.forEach(B=>{B.verticesStart=O,B.verticesCount=B.continuous.reduce((R,V,q)=>R+(q===0||!V?2:1),0),T+=B.verticesCount,O=T});let C=T*d,P,I=0;if(this._isOpenEnded()&&S==="flat"){try{P=Cr({windingRule:Pe.ODD,elementType:Xe.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:b})}catch{P=Id}I=P.vertexCount}let D=C+2*I+v*2,G=C+2*I,N={positions:new Float32Array(D*3),normals:new Float32Array(D*3),uvs:new Float32Array(D*2)},F=[];if(_.forEach(B=>{this._extrudeRegion(B,A,u,c,N,F,this._isGeometryClosed()&&!this._isOpenEnded())}),P&&(this._closeEnd(P,C,F,N,u[0],c[0],!1),this._closeEnd(P,C+I,F,N,u[u.length-1],c[c.length-1],!0)),M){N.positions.set(M.getAttribute("position").array,G*3),N.normals.set(M.getAttribute("normal").array,G*3),N.uvs.set(M.getAttribute("uv").array,G*2);let B=F.length;F.push(...M.getIndex().array.map(q=>q+G)),G+=v,N.positions.set(M.getAttribute("position").array,G*3),N.normals.set(M.getAttribute("normal").array,G*3),N.uvs.set(M.getAttribute("uv").array,G*2);let R=F.length;F.push(...M.getIndex().array.map(q=>q+G)),this.setAttribute("position",new ea(N.positions,3)),this.setAttribute("normal",new ea(N.normals,3)),this.setAttribute("uv",new ea(N.uvs,2)),this.setIndex(F);let V=o2;V.copy(u[u.length-1]).setPosition(c[c.length-1]),this.applyMatrix4OnRange(V,G,D),V.copy(u[0]).setPosition(c[0]).multiply(n2.makeScale(1,1,-1)),this.applyMatrix4OnRange(V,G-v,G),this.reverseIndicesOnRange(B,R)}else this.setAttribute("position",new ea(N.positions,3)),this.setAttribute("normal",new ea(N.normals,3)),this.setAttribute("uv",new ea(N.uvs,2)),this.setIndex(F)}_extractPathPoints(){let r=nc(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 St,s=new St,l=new St,d=new St,c=new St(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=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(x).normalize(),b=S.clone().sub(g).normalize(),_=w.clone().add(b).normalize();l.copy(_),y===0&&(_.equals(c)||_.clone().negate().equals(c))&&c.set(0,0,1);let A=c.clone().cross(_).normalize(),v=_.clone().cross(A).normalize();c.copy(v),d.copy(A),y===0&&(a.copy(v),s.copy(_));let M=new Mn().makeBasis(A,v,_);r.push(M)}let u=i?s:l,p=i?a:new St(0,1,0),f=u.clone().cross(d).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);u.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let g=new Mn().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:d}=this.inputs.parameters.extrusion,c=new Mn,u=new Mn;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(Cc.lerp(a,a+s,h)*Cc.DEG2RAD);let m=Cc.lerp(l,d,h);u.makeScale(m,m,m),p.multiply(c).multiply(u)}),e}_computeShapePoints(e=12,r=Pe.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let S=y[x-1],w=y[x-0];g.push(S,w)}return g}),s;try{s=Cr({windingRule:r,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=ms}let l;try{l=Cr({windingRule:Pe.ODD,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Md}if(!s)throw new Error("error generating geometry");let d=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,u=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,x=s.vertices[g+0],S=s.vertices[g+1];x<c&&(c=x),x>u&&(u=x),S<p&&(p=S),S>f&&(f=S)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=d,g=m*2,x=s.elements[g+0],S=s.elements[g+1],w=x+S,b={start:x,count:S,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(b);let _=x,A=w-1,v=x+1,M=o.roundedCurves.length;do{let O=_-x,T=s.vertices[A*2+0],C=s.vertices[A*2+1],P=s.vertices[_*2+0],I=s.vertices[_*2+1],D=s.vertices[v*2+0],G=s.vertices[v*2+1],N=P-T,F=I-C,B=Math.sqrt(N*N+F*F);N/=B,F/=B;let R=P-D,V=I-G,q=Math.sqrt(R*R+V*V);R/=q,V/=q,b.normals[O*2+0]=-V,b.normals[O*2+1]=R;let Y=s.vertexIndices[_];if(Array.isArray(Y))b.continuous[O]=!1;else{let[$,H]=o.getCurveIndexFromVertexId(Y-1,!0);if(H>0&&H<1)b.continuous[O]=!0;else{let X=H===1?$+1:$-1;X=(X+M)%M;let k=H===1?0:1,W=o.roundedCurves[$].getTangent(H),U=o.roundedCurves[X].getTangent(k);b.continuous[O]=W.dot(U)>.95}}y&&(b.normals[O*2+0]*=-1,b.normals[O*2+1]*=-1),[A,_,v]=[_,v,v+1],v>=w&&(v-=S)}while(v!==x+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 d=new St,c=new St,u=new St,p=new St,f=new Zg;o.forEach((m,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let S=0;S<e.count;S++){let w=(e.start+S)*2;if(d.set(r[w+0],r[w+1],0),u.copy(d).applyMatrix4(m).add(g),e.continuous[S])p.set(e.normals[S*2+0],e.normals[S*2+1],0);else{let b=S===0?(e.start+e.count-1)*2:w-2;c.set(r[b+0],r[b+1],0),p.copy(d).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,x,u,p,f),x++,!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 b=S===e.count-1?e.start*2:w+2;c.set(r[b+0],r[b+1],0),p.copy(c).sub(d),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,x,u,p,f),x++}}});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),x=0;for(let S=0;S<e.count;S++){(!e.continuous[S]||S===0)&&x++;let w=S===e.count-1?0:x+1,b=y+x,_=y+w,A=g+w,v=g+x;e.isHole?s.push(b,A,_,b,v,A):s.push(b,_,A,b,A,v),x++}}}_closeEnd(e,r,o,i,a,s,l){let d=e.vertexCount,c=new St(0,0,l?-1:1).applyMatrix4(a),u=new St,p=new Zg;for(let h=0;h<d;h++){let m=2*h;u.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,r+h,u,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,x=f[m+(l?2:1)]+r;o.push(y,g,x)}}applyMatrix4OnRange(e,r,o){let i=e.elements,a=new r2().getNormalMatrix(e).elements,s,l,d,c,u=this.attributes.position,p=this.attributes.normal;if(!u||!p)return;let f=u.array,h=p.array,m=u.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],d=f[y+2],c=1/(i[3]*s+i[7]*l+i[11]*d+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*d+i[12])*c,f[y+1]=(i[1]*s+i[5]*l+i[9]*d+i[13])*c,f[y+2]=(i[2]*s+i[6]*l+i[10]*d+i[14])*c,s=h[y+0],l=h[y+1],d=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*d,h[y+1]=a[1]*s+a[4]*l+a[7]*d,h[y+2]=a[2]*s+a[5]*l+a[8]*d}u.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 t0,BufferGeometry as Wd}from"three";import{mergeBufferGeometries as a2}from"three/examples/jsm/utils/BufferGeometryUtils.js";function r0(){let n=new Wd;return n.setAttribute("position",new t0(new Float32Array([]),3)),n.setIndex(new t0(new Uint16Array([]),1)),n}var s2=r0().attributes,l2=12,c2=1,ta=class extends Wd{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,s2),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:d,textTransform:c}=e,u=Kl.getDisplayedValue(d),p=c===2?u.toUpperCase():c===3?u.toLowerCase():u,f=u2(e,r,p),{shapes:h,charWidths:m,charCoords:y}=r.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,x=(typeof i=="number"?i:1)*.5,S=h.map(_=>new Ne().fromShape(_,!0));this.vectorShapes=S;let w=S.map(_=>Xt.create({shape:_,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Pe.NONZERO:Pe.ODD,subdivisions:this.isLowResolution&&a>0?c2:l2}})),b=w.length?a2(w):r0();b.translate(-g,x,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(b.attributes).forEach(([_,A])=>{this.setAttribute(_,A)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=Wt(new Wd,ta.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 u2(n,t,e){let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
16
16
|
`?(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 Yd,BufferAttribute as a0,Uint32BufferAttribute as Xd,Float32BufferAttribute as Kd,Matrix4 as h2,Vector3 as ws,Sphere as m2,Box3 as y2,BoxGeometry as g2}from"three";var n0,ra=new Promise(n=>{n0=n}),o0=!1;var Pc;function i0(){if(o0)return;if(Pc)return Pc;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.521/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(d=>d.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});n0(l),o0=!0}return Pc=n(),Pc}import{BufferGeometryLoader as d2}from"three";function Nn(n,t,e,r){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let d of a){let c=i;for(let u of d)c=c[u];for(o in c){let u=c[o];ku(u)&&(c[o]=t.getVariable(u,[r.uuid,"geometry",...d,o]),ku(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 d=Ne.createFromState(i.shape,i.width,i.height);s.shape=d}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(d=>d.materialIndex=Math.max(d.materialIndex??0,0)),s.geometry=new d2().parse(i);else if(i.type==="SubdivGeometry"){let d=new at(i,e);return d.data=n,d}else if(i.type==="TextGeometry")return new ta(i,t);let l;try{l=$d(s)}catch(d){console.error(d)}if(!l){let d=Ne.createFromState(Oi.defaultData(),100,100);s.shape=d,l=$d(s)}return l}import{Matrix4 as p2}from"three";var f2=new p2;function Ss(n,t,e,r){let o=n.position.array,i=n.normal.array,a=f2.makeScale(t,e,r).invert().elements,s,l,d;for(var c=0,u=o.length;c<u;c+=3)o[c]*=t,o[c+1]*=e,o[c+2]*=r,s=i[c],l=i[c+1],d=i[c+2],i[c]=a[0]*s+a[4]*l+a[8]*d,i[c+1]=a[1]*s+a[5]*l+a[9]*d,i[c+2]=a[2]*s+a[6]*l+a[10]*d;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Oc=new y2,oa=new ws,fe;ra.then(n=>{fe=n});var s0=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),l0=new Uint32Array([0,1,2,3]),c0=new Uint8Array([4]),at=class extends Yd{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=Fo.div(r,o);this.subdividedGeometry&&Ss(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ss(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(oa.fromArray(i));let s=oa.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}=at.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new g2(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&&(at.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new m2,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Oc.setFromBufferAttribute(r),Oc.getCenter(o),e.boundingSphere.radius=o.distanceTo(Oc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Oc.getSize(oa);let i={width:oa.x,height:oa.y,depth:oa.z};return this.userData.parameters=i,i}static build(e,r,o,i){let a,s,l,d=e?.phongAngle??35;o===!1&&(d=-1),r&&(fe.free_bvh(r),fe.free_subdivision_surface(r));try{a=at.allocate(e,i)}catch(c){console.error(c,e),a=at.allocate({positionWASM:s0,indexWASM:l0,verticesPerFaceWASM:c0},i)}if(fe.set_destination_refinement_level(a,0),s=at.buildLevel(a,!0,d),e.subdivisions>0)try{fe.set_destination_refinement_level(a,e.subdivisions),l=at.buildLevel(a,!1,d)}catch{try{fe.set_destination_refinement_level(a,e.subdivisions-1),l=at.buildLevel(a,!1,d)}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:Nn(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,d,c;({positions:s,triIndices:c}=ep(i.getAttribute("position"),a));let u;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;u=[p,f]}return{indices:l,verticesPerFace:d}=tp(s,c,i,u),{positions:s,indices:l,verticesPerFace:d}}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=s0,i=l0,a=c0);let d=o.length,c=i.length,u=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=fe._malloc(h),x=new Float32Array(fe.HEAPF32.buffer,g,p),S=new Uint32Array(fe.HEAPU32.buffer,g+m,f);x.set(o,0),x.set(s,o.length),x.set(l,o.length+s.length),S.set(i,0),S.set(a,i.length);let w;e?.scaleBaked?.some(_=>_!==1)&&(w=new h2().makeScale(...e.scaleBaked)),r&&(w?w.premultiply(r):w=r);let b=w?fe.alloc_subdivision_surface2(g,d,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,u,w.elements):fe.alloc_subdivision_surface(g,d,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,u);return fe._free(g),b}static buildLevel(e,r,o,i,a){let s=a?fe.get_mesh_data2(e,r?fe.Level.CONTROL:fe.Level.REFINED,o,a.elements):fe.get_mesh_data(e,r?fe.Level.CONTROL:fe.Level.REFINED,o),l=8,d=fe.HEAPU32.subarray(s>>2,(s>>2)+l),c=d.subarray(4,4+4),u=0,p=fe.HEAPU32[d[u]>>2],f=fe.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let h=fe.HEAPU32[d[u]>>2],m=fe.HEAPF32.subarray(h>>2,(h>>2)+c[u]);u++;let y=fe.HEAPU32[d[u]>>2],g=fe.HEAPU32.subarray(y>>2,(y>>2)+c[u]);u++;let x=fe.HEAPU32[d[u]>>2],S=fe.HEAPU32.subarray(x>>2,(x>>2)+c[u]);if(u++,i===void 0){let w=new Yd;if(w.setIndex(new Xd(S,1)),w.setAttribute("position",new Kd(f,3)),w.setAttribute("normal",new Kd(m,3)),r){w.setAttribute("faceMap",new Xd(g,1));let b=new Float32Array(m.length/3*4).fill(0);w.setAttribute("color",new a0(b,4))}return fe.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,fe.free_mesh_data(s)}static freeSubdivPointer(e){fe.free_bvh(e),fe.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let i=fe.get_wireframe_data_for_base_level(e),a=4,s=fe.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),d=0,c=fe.HEAPU32[s[d]>>2],u=fe.HEAPF32.subarray(c>>2,(c>>2)+l[d]);d++;let p=fe.HEAPU32[s[d]>>2],f=fe.HEAPU32.subarray(p>>2,(p>>2)+l[d]);if(r===void 0){let h=new Yd;h.setAttribute("position",new Kd(u,3));let m=new Float32Array(u.length);for(let y=0,g=u.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new a0(m,3)),h.setIndex(new Xd(f,1)),fe.free_wireframe_data_for_base_level(i),h}r.getAttribute("position").copyArray(u),r.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,r,o){let i=r===0;i||fe.set_destination_refinement_level(e,r);let a=o?fe.get_topological_data2(e,i?fe.Level.CONTROL:fe.Level.REFINED,o.elements):fe.get_topological_data(e,i?fe.Level.CONTROL:fe.Level.REFINED),s=6,l=fe.HEAPU32.subarray(a>>2,(a>>2)+s),d=l.subarray(3,3+3),c=0,u=fe.HEAPU32[l[c]>>2],p=new Float32Array(fe.HEAPF32.subarray(u>>2,(u>>2)+d[c]));c++;let f=fe.HEAPU32[l[c]>>2],h=new Uint32Array(fe.HEAPU32.subarray(f>>2,(f>>2)+d[c]));c++;let m=fe.HEAPU32[l[c]>>2],y=new Uint8Array(fe.HEAPU32.subarray(m>>2,(m>>2)+d[c]));return fe.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var u0=["getX","getY","getZ"];function ep(n,t){let e={},r=t?t.count:n.count,o=0,i=[],a=[],s=1e4;for(let d=0;d<r;d++){let c=t?t.getX(d):d,u="";for(let p=0;p<3;p++)u+=`${~~(n[u0[p]](c)*s)},`;if(u in e)i.push(e[u]);else{for(let p=0;p<3;p++)a.push(n[u0[p]](c));e[u]=o,i.push(o),o++}}let l=[];for(let d=0;d<i.length;d+=3)i[d]===i[d+1]||i[d]===i[d+2]||i[d+1]===i[d+2]||l.push(i[d],i[d+1],i[d+2]);return{positions:a,triIndices:l}}var Mc=new ws,Qd=new ws,Zd=new ws,Jd=new ws;function tp(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([]),d=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&d<=24&&d%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/d;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 u=0;if(c<0)for(let p=0;p<l.length;p+=2)n.push(l[p],l[p+1],0),o.push(u++);else for(let p=l.length-2;p>=0;p-=2)n.push(l[p],l[p+1],0),o.push(u++);return i.push(u),{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]){Mc.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),Qd.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Zd.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Jd.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),Qd.sub(Mc).normalize(),Zd.sub(Mc).normalize(),Jd.sub(Mc).normalize();let l=Qd.cross(Zd).dot(Jd);Math.abs(l)>.005||r&&r.some((d,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=[],d=[],c=0;for(let u=0,p=0;u<n.length;u+=3,p++)n[u+2]===0&&(l.push(p),c++),n[u+2]===a&&d.push(p);if(e.userData.parameters.extrudeBevelSize===0){let u=d[0];d[0]=d[1],d[1]=u}l.reverse(),o.push(...l,...d),i.push(c,c)}return{indices:o,verticesPerFace:i}}var dr={};Qv(dr,{calcBoolean:()=>w2,calcBooleanTopological:()=>S2,freeMeshSet:()=>C2,getMeshSet:()=>_2,hasOpenEdges:()=>A2,transformMeshSet:()=>T2});var x2,d0=new Promise(n=>{x2=n});import{Float32BufferAttribute as p0,Sphere as v2}from"three";var we,na;d0.then(n=>we=n);function b2(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}=ep(n.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:d}=tp(i,a,n);s=d.length,r=[];for(let c=0,u=0;c<s;c++){r.push(d[c]);for(let p=0;p<d[c];p++)r.push(l[u++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let d=0,c=0;c<r.length;)r[c++]=3,s++,r[c++]=a[d++],r[c++]=a[d++],r[c++]=a[d++]}return{positions:i,faceIndices:r,nFaces:s}}function f0(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=we._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(we.HEAPU32.buffer,i,t):new Float32Array(we.HEAPF32.buffer,i,t)).set(n,0),i}function h0(n){switch(n){case 0:return we.OP.UNION;case 1:return we.OP.INTERSECTION;case 2:return we.OP.A_MINUS_B;case 3:return we.OP.B_MINUS_A;case 4:return we.OP.SYMMETRIC_DIFFERENCE;case 5:return we.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function S2(n,t){na===void 0&&(na=we.init_csg());let e=f0(n),r=we.csg_calc_topological(na,e,n.length,h0(t));we._free(e);let o=6,i=we.HEAPU32.subarray(r>>2,(r>>2)+o),a=i.subarray(3,3+3),s=0,l=we.HEAPU32[i[s]>>2],d=new Float32Array(we.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=we.HEAPU32[i[s]>>2],u=new Uint32Array(we.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let p=we.HEAPU32[i[s]>>2],f=new Uint8Array(we.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return we.free_mesh_data(r),{positions:d,indices:u,verticesPerFace:f}}function w2(n,t,e,r){na===void 0&&(na=we.init_csg());let o=f0(n),i=we.csg_calc(na,o,n.length,r,h0(t));we._free(o);let a=5,s=we.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),d=0,c=we.HEAPU32[s[d]>>2],u=we.HEAPF32.subarray(c>>2,(c>>2)+l[d]);d++;let p=we.HEAPU32[s[d]>>2],f=we.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let h=l[d];e.setAttribute("position",new p0(u,3)),e.setAttribute("normal",new p0(f,3));let m=we.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new v2),e.boundingSphere.radius=-1,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},we.free_mesh_data(i),h}function _2(n,t,e){if(we===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((x,S)=>x+S,0)+i);for(let x=0,S=0,w=0;x<g.verticesPerFace.length;x++){o[w++]=g.verticesPerFace[x];for(let b=0;b<g.verticesPerFace[x];b++)o[w++]=g.indices[S++]}}else({positions:r,faceIndices:o,nFaces:i}=b2(n,t,e));let a=r.length,s=o.length,l=r.length,d=o.length,c=l*Float32Array.BYTES_PER_ELEMENT+d*Uint32Array.BYTES_PER_ELEMENT,u=l*Float32Array.BYTES_PER_ELEMENT,p=d*Uint32Array.BYTES_PER_ELEMENT,f=we._malloc(c),h=new Float32Array(we.HEAPF32.buffer,f,l),m=new Uint32Array(we.HEAPU32.buffer,f+u,d);h.set(r,0),m.set(o,0);let y=we.get_csg_mesh(f,a,f+u,s,i);return we._free(f),y}function A2(n){return we.has_open_edges(n)}function T2(n,t){we.transform_csg_mesh(n,t.elements)}function C2(n){we.free_csg_mesh(n)}var P2={ConeGeometry:$y,CubeGeometry:Yy,CylinderGeometry:Wy,DodecahedronGeometry:Xy,EllipseGeometry:Ki,HelixGeometry:Mg,IcosahedronGeometry:Ig,LatheGeometry:Ng,NonParametricGeometry:Fg,PolygonGeometry:_c,PyramidGeometry:jg,RectangleGeometry:Ac,SphereGeometry:Hg,PlaneGeometry:qg,BackdropGeometry:Wg,StarGeometry:Tc,TextFrameGeometry:$g,TorusGeometry:Yg,TorusKnotGeometry:Xg,TriangleGeometry:Kg,PathGeometry:e0,VectorGeometry:Xt},$d=n=>P2[n.type].create(n);function ia(n){return n!==null&&"booleanOp"in n}var aa=class extends ji(M2){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new O2}updateVisible(e){super.updateVisible(e),this.visible=!ia(this.parent)&&this.visible,ia(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(dr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ia(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof aa&&(e.freeBooleanPointer(),ia(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&ia(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),ia(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Ic=new I2;function _s(n,t=0,e=n.count,r,o){let i=1/0,a=1/0,s=1/0,l=-1/0,d=-1/0,c=-1/0;for(let u=t;u<e;u++){let p=n.getX(u),f=n.getY(u),h=n.getZ(u);p<i&&(i=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>d&&(d=f),h>c&&(c=h)}Ic.min.set(i,a,s),Ic.max.set(l,d,c),Ic.getCenter(r),Ic.getSize(o).multiplyScalar(.5)}var L2=new N2,D2=new E2,It=class extends aa{constructor(t,e){super(L2,D2),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?_s(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 WO,Matrix4 as $O,Sphere as Z0,Vector3 as YO}from"three";import{BufferAttribute as UO,Float32BufferAttribute as Q0,MathUtils as Op,Vector3 as Mp}from"three";import{ShaderMaterial as OO}from"three";import{CubeReflectionMapping as W2,CubeRefractionMapping as $2,CubeUVReflectionMapping as Y2,LinearEncoding as w0,sRGBEncoding as X2}from"three";var As=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 B2}from"three";var wt=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=B2.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 wt&&(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 rp=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}},ft=new rp;import{Vector2 as m0}from"three";import{MathUtils as R2}from"three";var ae=class extends wt{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=R2.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 d=this.getTemp(e,o);if(d)return e.format(d,l,r);{d=super.generate(e,r,o,s.output,i);let c=this.generate(e,l,o);return e.addNodeCode(d+" = "+c+";"),e.format(d,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 Re=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 Ke=class extends Re{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof m0?e:new m0(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 y0}from"three";var Nt=class extends Re{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof y0?e:new y0(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 V2}from"three";var ht=class extends V2{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)}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 Kt=class extends Re{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ht?e:new ht(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 G2=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,g0=/[a-z_0-9]+/gi,K=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,d=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let c=[];for(;s=g0.exec(this.src);)c.push(s);for(let u=0;u<c.length;u++){let p=c[u],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&ft.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=ft.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||ft.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&d[p.index+l-1]!=="."&&(d=d.substring(0,p.index+l)+m+d.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&ft.contains(m)&&e.include(ft.get(m))}return r==="source"?d:this.isMethod?(this.isInterface||e.include(this,void 0,d),this.name):e.format("( "+d+" )",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=G2.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(g0);if(s){let l=0;for(;l<s.length;){let d=s[l++],c;d==="in"||d==="out"||d==="inout"?c=s[l++]:(c=d,d="");let u=s[l++];this.inputs.push({name:u,type:c,qualifier:d})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var z2=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,op=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||op.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,d="",c=z2.exec(e);this.useDefine=a??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],s=c[2],d=c[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=d}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)}},Ie=op;Ie.PI="PI",Ie.PI2="PI2",Ie.RECIPROCAL_PI="RECIPROCAL_PI",Ie.RECIPROCAL_PI2="RECIPROCAL_PI2",Ie.LOG2="LOG2",Ie.EPSILON="EPSILON";var k2=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
18
|
-
)*?)}`,"gim"),
|
|
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 Yd,BufferAttribute as a0,Uint32BufferAttribute as Xd,Float32BufferAttribute as Kd,Matrix4 as m2,Vector3 as Ss,Sphere as y2,Box3 as g2,BoxGeometry as x2}from"three";var n0,ra=new Promise(n=>{n0=n}),o0=!1;var Pc;function i0(){if(o0)return;if(Pc)return Pc;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.522/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(d=>d.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});n0(l),o0=!0}return Pc=n(),Pc}import{BufferGeometryLoader as d2}from"three";var p2=["font"];function Nn(n,t,e,r){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let d of a){let c=i;for(let u of d)c=c[u];for(o in c){let u=c[o];ku(u)&&!p2.includes(o)&&(c[o]=t.getVariable(u,[r.uuid,"geometry",...d,o]),ku(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 d=Ne.createFromState(i.shape,i.width,i.height);s.shape=d}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(d=>d.materialIndex=Math.max(d.materialIndex??0,0)),s.geometry=new d2().parse(i);else if(i.type==="SubdivGeometry"){let d=new at(i,e);return d.data=n,d}else if(i.type==="TextGeometry")return new ta(i,t);let l;try{l=$d(s)}catch(d){console.error(d)}if(!l){let d=Ne.createFromState(Oi.defaultData(),100,100);s.shape=d,l=$d(s)}return l}import{Matrix4 as f2}from"three";var h2=new f2;function bs(n,t,e,r){let o=n.position.array,i=n.normal.array,a=h2.makeScale(t,e,r).invert().elements,s,l,d;for(var c=0,u=o.length;c<u;c+=3)o[c]*=t,o[c+1]*=e,o[c+2]*=r,s=i[c],l=i[c+1],d=i[c+2],i[c]=a[0]*s+a[4]*l+a[8]*d,i[c+1]=a[1]*s+a[5]*l+a[9]*d,i[c+2]=a[2]*s+a[6]*l+a[10]*d;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Oc=new g2,oa=new Ss,fe;ra.then(n=>{fe=n});var s0=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),l0=new Uint32Array([0,1,2,3]),c0=new Uint8Array([4]),at=class extends Yd{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=Fo.div(r,o);this.subdividedGeometry&&bs(this.subdividedGeometry.attributes,...i),this.originalGeometry&&bs(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(oa.fromArray(i));let s=oa.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}=at.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new x2(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&&(at.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new y2,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Oc.setFromBufferAttribute(r),Oc.getCenter(o),e.boundingSphere.radius=o.distanceTo(Oc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Oc.getSize(oa);let i={width:oa.x,height:oa.y,depth:oa.z};return this.userData.parameters=i,i}static build(e,r,o,i){let a,s,l,d=e?.phongAngle??35;o===!1&&(d=-1),r&&(fe.free_bvh(r),fe.free_subdivision_surface(r));try{a=at.allocate(e,i)}catch(c){console.error(c,e),a=at.allocate({positionWASM:s0,indexWASM:l0,verticesPerFaceWASM:c0},i)}if(fe.set_destination_refinement_level(a,0),s=at.buildLevel(a,!0,d),e.subdivisions>0)try{fe.set_destination_refinement_level(a,e.subdivisions),l=at.buildLevel(a,!1,d)}catch{try{fe.set_destination_refinement_level(a,e.subdivisions-1),l=at.buildLevel(a,!1,d)}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:Nn(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,d,c;({positions:s,triIndices:c}=ep(i.getAttribute("position"),a));let u;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;u=[p,f]}return{indices:l,verticesPerFace:d}=tp(s,c,i,u),{positions:s,indices:l,verticesPerFace:d}}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=s0,i=l0,a=c0);let d=o.length,c=i.length,u=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=fe._malloc(h),x=new Float32Array(fe.HEAPF32.buffer,g,p),S=new Uint32Array(fe.HEAPU32.buffer,g+m,f);x.set(o,0),x.set(s,o.length),x.set(l,o.length+s.length),S.set(i,0),S.set(a,i.length);let w;e?.scaleBaked?.some(_=>_!==1)&&(w=new m2().makeScale(...e.scaleBaked)),r&&(w?w.premultiply(r):w=r);let b=w?fe.alloc_subdivision_surface2(g,d,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,u,w.elements):fe.alloc_subdivision_surface(g,d,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,u);return fe._free(g),b}static buildLevel(e,r,o,i,a){let s=a?fe.get_mesh_data2(e,r?fe.Level.CONTROL:fe.Level.REFINED,o,a.elements):fe.get_mesh_data(e,r?fe.Level.CONTROL:fe.Level.REFINED,o),l=8,d=fe.HEAPU32.subarray(s>>2,(s>>2)+l),c=d.subarray(4,4+4),u=0,p=fe.HEAPU32[d[u]>>2],f=fe.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let h=fe.HEAPU32[d[u]>>2],m=fe.HEAPF32.subarray(h>>2,(h>>2)+c[u]);u++;let y=fe.HEAPU32[d[u]>>2],g=fe.HEAPU32.subarray(y>>2,(y>>2)+c[u]);u++;let x=fe.HEAPU32[d[u]>>2],S=fe.HEAPU32.subarray(x>>2,(x>>2)+c[u]);if(u++,i===void 0){let w=new Yd;if(w.setIndex(new Xd(S,1)),w.setAttribute("position",new Kd(f,3)),w.setAttribute("normal",new Kd(m,3)),r){w.setAttribute("faceMap",new Xd(g,1));let b=new Float32Array(m.length/3*4).fill(0);w.setAttribute("color",new a0(b,4))}return fe.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,fe.free_mesh_data(s)}static freeSubdivPointer(e){fe.free_bvh(e),fe.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let i=fe.get_wireframe_data_for_base_level(e),a=4,s=fe.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),d=0,c=fe.HEAPU32[s[d]>>2],u=fe.HEAPF32.subarray(c>>2,(c>>2)+l[d]);d++;let p=fe.HEAPU32[s[d]>>2],f=fe.HEAPU32.subarray(p>>2,(p>>2)+l[d]);if(r===void 0){let h=new Yd;h.setAttribute("position",new Kd(u,3));let m=new Float32Array(u.length);for(let y=0,g=u.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new a0(m,3)),h.setIndex(new Xd(f,1)),fe.free_wireframe_data_for_base_level(i),h}r.getAttribute("position").copyArray(u),r.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,r,o){let i=r===0;i||fe.set_destination_refinement_level(e,r);let a=o?fe.get_topological_data2(e,i?fe.Level.CONTROL:fe.Level.REFINED,o.elements):fe.get_topological_data(e,i?fe.Level.CONTROL:fe.Level.REFINED),s=6,l=fe.HEAPU32.subarray(a>>2,(a>>2)+s),d=l.subarray(3,3+3),c=0,u=fe.HEAPU32[l[c]>>2],p=new Float32Array(fe.HEAPF32.subarray(u>>2,(u>>2)+d[c]));c++;let f=fe.HEAPU32[l[c]>>2],h=new Uint32Array(fe.HEAPU32.subarray(f>>2,(f>>2)+d[c]));c++;let m=fe.HEAPU32[l[c]>>2],y=new Uint8Array(fe.HEAPU32.subarray(m>>2,(m>>2)+d[c]));return fe.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var u0=["getX","getY","getZ"];function ep(n,t){let e={},r=t?t.count:n.count,o=0,i=[],a=[],s=1e4;for(let d=0;d<r;d++){let c=t?t.getX(d):d,u="";for(let p=0;p<3;p++)u+=`${~~(n[u0[p]](c)*s)},`;if(u in e)i.push(e[u]);else{for(let p=0;p<3;p++)a.push(n[u0[p]](c));e[u]=o,i.push(o),o++}}let l=[];for(let d=0;d<i.length;d+=3)i[d]===i[d+1]||i[d]===i[d+2]||i[d+1]===i[d+2]||l.push(i[d],i[d+1],i[d+2]);return{positions:a,triIndices:l}}var Mc=new Ss,Qd=new Ss,Zd=new Ss,Jd=new Ss;function tp(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([]),d=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&d<=24&&d%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/d;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 u=0;if(c<0)for(let p=0;p<l.length;p+=2)n.push(l[p],l[p+1],0),o.push(u++);else for(let p=l.length-2;p>=0;p-=2)n.push(l[p],l[p+1],0),o.push(u++);return i.push(u),{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]){Mc.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),Qd.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Zd.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Jd.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),Qd.sub(Mc).normalize(),Zd.sub(Mc).normalize(),Jd.sub(Mc).normalize();let l=Qd.cross(Zd).dot(Jd);Math.abs(l)>.005||r&&r.some((d,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=[],d=[],c=0;for(let u=0,p=0;u<n.length;u+=3,p++)n[u+2]===0&&(l.push(p),c++),n[u+2]===a&&d.push(p);if(e.userData.parameters.extrudeBevelSize===0){let u=d[0];d[0]=d[1],d[1]=u}l.reverse(),o.push(...l,...d),i.push(c,c)}return{indices:o,verticesPerFace:i}}var pr={};Qv(pr,{calcBoolean:()=>_2,calcBooleanTopological:()=>w2,freeMeshSet:()=>P2,getMeshSet:()=>A2,hasOpenEdges:()=>T2,transformMeshSet:()=>C2});var v2,d0=new Promise(n=>{v2=n});import{Float32BufferAttribute as p0,Sphere as b2}from"three";var we,na;d0.then(n=>we=n);function S2(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}=ep(n.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:d}=tp(i,a,n);s=d.length,r=[];for(let c=0,u=0;c<s;c++){r.push(d[c]);for(let p=0;p<d[c];p++)r.push(l[u++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let d=0,c=0;c<r.length;)r[c++]=3,s++,r[c++]=a[d++],r[c++]=a[d++],r[c++]=a[d++]}return{positions:i,faceIndices:r,nFaces:s}}function f0(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=we._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(we.HEAPU32.buffer,i,t):new Float32Array(we.HEAPF32.buffer,i,t)).set(n,0),i}function h0(n){switch(n){case 0:return we.OP.UNION;case 1:return we.OP.INTERSECTION;case 2:return we.OP.A_MINUS_B;case 3:return we.OP.B_MINUS_A;case 4:return we.OP.SYMMETRIC_DIFFERENCE;case 5:return we.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function w2(n,t){na===void 0&&(na=we.init_csg());let e=f0(n),r=we.csg_calc_topological(na,e,n.length,h0(t));we._free(e);let o=6,i=we.HEAPU32.subarray(r>>2,(r>>2)+o),a=i.subarray(3,3+3),s=0,l=we.HEAPU32[i[s]>>2],d=new Float32Array(we.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=we.HEAPU32[i[s]>>2],u=new Uint32Array(we.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let p=we.HEAPU32[i[s]>>2],f=new Uint8Array(we.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return we.free_mesh_data(r),{positions:d,indices:u,verticesPerFace:f}}function _2(n,t,e,r){na===void 0&&(na=we.init_csg());let o=f0(n),i=we.csg_calc(na,o,n.length,r,h0(t));we._free(o);let a=5,s=we.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),d=0,c=we.HEAPU32[s[d]>>2],u=we.HEAPF32.subarray(c>>2,(c>>2)+l[d]);d++;let p=we.HEAPU32[s[d]>>2],f=we.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let h=l[d];e.setAttribute("position",new p0(u,3)),e.setAttribute("normal",new p0(f,3));let m=we.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new b2),e.boundingSphere.radius=-1,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},we.free_mesh_data(i),h}function A2(n,t,e){if(we===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((x,S)=>x+S,0)+i);for(let x=0,S=0,w=0;x<g.verticesPerFace.length;x++){o[w++]=g.verticesPerFace[x];for(let b=0;b<g.verticesPerFace[x];b++)o[w++]=g.indices[S++]}}else({positions:r,faceIndices:o,nFaces:i}=S2(n,t,e));let a=r.length,s=o.length,l=r.length,d=o.length,c=l*Float32Array.BYTES_PER_ELEMENT+d*Uint32Array.BYTES_PER_ELEMENT,u=l*Float32Array.BYTES_PER_ELEMENT,p=d*Uint32Array.BYTES_PER_ELEMENT,f=we._malloc(c),h=new Float32Array(we.HEAPF32.buffer,f,l),m=new Uint32Array(we.HEAPU32.buffer,f+u,d);h.set(r,0),m.set(o,0);let y=we.get_csg_mesh(f,a,f+u,s,i);return we._free(f),y}function T2(n){return we.has_open_edges(n)}function C2(n,t){we.transform_csg_mesh(n,t.elements)}function P2(n){we.free_csg_mesh(n)}var O2={ConeGeometry:$y,CubeGeometry:Yy,CylinderGeometry:Wy,DodecahedronGeometry:Xy,EllipseGeometry:Ki,HelixGeometry:Mg,IcosahedronGeometry:Ig,LatheGeometry:Ng,NonParametricGeometry:Fg,PolygonGeometry:_c,PyramidGeometry:jg,RectangleGeometry:Ac,SphereGeometry:Hg,PlaneGeometry:qg,BackdropGeometry:Wg,StarGeometry:Tc,TextFrameGeometry:$g,TorusGeometry:Yg,TorusKnotGeometry:Xg,TriangleGeometry:Kg,PathGeometry:e0,VectorGeometry:Xt},$d=n=>O2[n.type].create(n);function ia(n){return n!==null&&"booleanOp"in n}var aa=class extends ji(I2){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new M2}updateVisible(e){super.updateVisible(e),this.visible=!ia(this.parent)&&this.visible,ia(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(pr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ia(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof aa&&(e.freeBooleanPointer(),ia(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&ia(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),ia(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Ic=new N2;function ws(n,t=0,e=n.count,r,o){let i=1/0,a=1/0,s=1/0,l=-1/0,d=-1/0,c=-1/0;for(let u=t;u<e;u++){let p=n.getX(u),f=n.getY(u),h=n.getZ(u);p<i&&(i=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>d&&(d=f),h>c&&(c=h)}Ic.min.set(i,a,s),Ic.max.set(l,d,c),Ic.getCenter(r),Ic.getSize(o).multiplyScalar(.5)}var L2=new E2,B2=new D2,It=class extends aa{constructor(t,e){super(L2,B2),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?ws(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 $O,Matrix4 as YO,Sphere as Z0,Vector3 as XO}from"three";import{BufferAttribute as HO,Float32BufferAttribute as Q0,MathUtils as Op,Vector3 as Mp}from"three";import{ShaderMaterial as MO}from"three";import{CubeReflectionMapping as $2,CubeRefractionMapping as Y2,CubeUVReflectionMapping as X2,LinearEncoding as w0,sRGBEncoding as K2}from"three";var _s=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 R2}from"three";var wt=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=R2.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 wt&&(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 rp=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}},ft=new rp;import{Vector2 as m0}from"three";import{MathUtils as V2}from"three";var ae=class extends wt{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=V2.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 d=this.getTemp(e,o);if(d)return e.format(d,l,r);{d=super.generate(e,r,o,s.output,i);let c=this.generate(e,l,o);return e.addNodeCode(d+" = "+c+";"),e.format(d,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 Re=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 Ke=class extends Re{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof m0?e:new m0(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 y0}from"three";var Nt=class extends Re{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof y0?e:new y0(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 G2}from"three";var ht=class extends G2{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)}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 Kt=class extends Re{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ht?e:new ht(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 z2=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,g0=/[a-z_0-9]+/gi,K=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,d=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let c=[];for(;s=g0.exec(this.src);)c.push(s);for(let u=0;u<c.length;u++){let p=c[u],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&ft.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=ft.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||ft.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&d[p.index+l-1]!=="."&&(d=d.substring(0,p.index+l)+m+d.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&ft.contains(m)&&e.include(ft.get(m))}return r==="source"?d:this.isMethod?(this.isInterface||e.include(this,void 0,d),this.name):e.format("( "+d+" )",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=z2.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(g0);if(s){let l=0;for(;l<s.length;){let d=s[l++],c;d==="in"||d==="out"||d==="inout"?c=s[l++]:(c=d,d="");let u=s[l++];this.inputs.push({name:u,type:c,qualifier:d})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var k2=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,op=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||op.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,d="",c=k2.exec(e);this.useDefine=a??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],s=c[2],d=c[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=d}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)}},Ie=op;Ie.PI="PI",Ie.PI2="PI2",Ie.RECIPROCAL_PI="RECIPROCAL_PI",Ie.RECIPROCAL_PI2="RECIPROCAL_PI2",Ie.LOG2="LOG2",Ie.EPSILON="EPSILON";var F2=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
18
|
+
)*?)}`,"gim"),j2=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),sa=class extends ae{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=F2.exec(e);if(r){let o=r[2],i;for(;i=j2.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var la=class extends ae{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)}};ft.addKeyword("uv",function(){return new la});ft.addKeyword("uv2",function(){return new la(1)});import{LinearEncoding as U2,sRGBEncoding as H2}from"three";var En=class extends ae{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??En.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case U2:return["Linear"];case H2:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),a=En.Nodes[this.method],s=e.include(a);if(s===En.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=En.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=En.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},kt=En;kt.Nodes={LinearToLinear:new K(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
19
19
|
`)),sRGBToLinear:new K(["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(`
|
|
20
20
|
`)),LinearTosRGB:new K(["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(`
|
|
21
|
-
`))},kt.LINEAR_TO_LINEAR="LinearToLinear",kt.SRGB_TO_LINEAR="sRGBToLinear",kt.LINEAR_TO_SRGB="LinearTosRGB";var Ee=class extends K{constructor(e="",r,o,i,a){super(e,a,i,o,r);this.nodeType="Expression"}};import{Texture as
|
|
21
|
+
`))},kt.LINEAR_TO_LINEAR="LinearToLinear",kt.SRGB_TO_LINEAR="sRGBToLinear",kt.LINEAR_TO_SRGB="LinearTosRGB";var Ee=class extends K{constructor(e="",r,o,i,a){super(e,a,i,o,r);this.nodeType="Expression"}};import{Texture as q2}from"three";var Ft=class extends Re{constructor(e=new q2,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new la,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 d={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(d),this.colorSpace=this.colorSpace??new kt(new Ee("",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 J=class extends Re{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 As=class extends ae{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)+"( ",d=[];if(s.inputs){for(let c=0;c<s.inputs.length;c++){let u=s.inputs[c],p=this.inputs[c]||this.inputs[u.name];d.push(p.build(e,e.getTypeByFormat(u.type)))}l+=d.join(", ")+" )"}return e.format(l,i,r)}};var np=class extends ae{constructor(e,r,o=np.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)}},_t=np;_t.ADD="+",_t.SUB="-",_t.MUL="*",_t.DIV="/";var Ve=class extends ae{constructor(e,r=Ve.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 Ve.MIX:case Ve.CLAMP:case Ve.REFRACT:case Ve.SMOOTHSTEP:case Ve.FACEFORWARD:return 3;case Ve.MIN:case Ve.MAX:case Ve.MOD:case Ve.STEP:case Ve.REFLECT:case Ve.DISTANCE:case Ve.DOT:case Ve.CROSS:case Ve.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 Ve.LENGTH:case Ve.DISTANCE:case Ve.DOT:return"f";case Ve.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,d=this.c?e.getTypeLength(this.c.getType(e)):0,c=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Ve.NEGATE:return e.format("( -"+this.a.build(e,c)+" )",c,r);case Ve.INVERT:return e.format("( 1.0 - "+this.a.build(e,c)+" )",c,r);case Ve.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ve.STEP:o=this.a.build(e,s===1?"f":c),i=this.b.build(e,c);break;case Ve.MIN:case Ve.MAX:case Ve.MOD:o=this.a.build(e,c),i=this.b.build(e,l===1?"f":c);break;case Ve.REFRACT:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,"f");break;case Ve.MIX:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,d===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(", ")+" )",u,r)}},xe=Ve;xe.RAD="radians",xe.DEG="degrees",xe.EXP="exp",xe.EXP2="exp2",xe.LOG="log",xe.LOG2="log2",xe.SQRT="sqrt",xe.INV_SQRT="inversesqrt",xe.FLOOR="floor",xe.CEIL="ceil",xe.NORMALIZE="normalize",xe.FRACT="fract",xe.SATURATE="saturate",xe.SIN="sin",xe.COS="cos",xe.TAN="tan",xe.ASIN="asin",xe.ACOS="acos",xe.ARCTAN="atan",xe.ABS="abs",xe.SIGN="sign",xe.LENGTH="length",xe.NEGATE="negate",xe.INVERT="invert",xe.MIN="min",xe.MAX="max",xe.MOD="mod",xe.STEP="step",xe.REFLECT="reflect",xe.DISTANCE="distance",xe.DOT="dot",xe.CROSS="cross",xe.POW="pow",xe.MIX="mix",xe.CLAMP="clamp",xe.REFRACT="refract",xe.SMOOTHSTEP="smoothstep",xe.FACEFORWARD="faceforward";var ca=class extends ae{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 As(ca.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new kt(new Ee("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new kt(new Ee("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new kt(new Ee("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new kt(new Ee("","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 Ee(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ee(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ee(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ee(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ee("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 As(ca.Nodes.roughnessToMip,[i]),s=new xe(a,ca.Nodes.m0,ca.Nodes.cubeUV_maxMipLevel,xe.CLAMP),l=new xe(s,xe.FLOOR),d=new xe(s,xe.FRACT),c=this.bilinearCubeUV(e,this.value,o,l),u=this.bilinearCubeUV(e,this.value,o,new _t(l,new J(1).setReadonly(!0),_t.ADD)),p=new xe(c,u,d,xe.MIX);return e.format(p.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},ua=ca;ua.Nodes=function(){let e=new sa(`struct TextureCubeUVData {
|
|
22
22
|
vec4 tl;
|
|
23
23
|
vec4 tr;
|
|
24
24
|
vec4 br;
|
|
@@ -97,7 +97,7 @@ var qv=Object.create;var Ws=Object.defineProperty;var Wv=Object.getOwnPropertyDe
|
|
|
97
97
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
98
98
|
}
|
|
99
99
|
return mip;
|
|
100
|
-
}`,M);return{bilinearCubeUV:d,roughnessToMip:O,m0:p,cubeUV_maxMipLevel:r}}();var
|
|
100
|
+
}`,M);return{bilinearCubeUV:d,roughnessToMip:O,m0:p,cubeUV_maxMipLevel:r}}();var Dn=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Dn.VIEW}getShared(){return this.scope===Dn.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 Dn.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case Dn.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case Dn.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),r)}},At=Dn;At.LOCAL="local",At.WORLD="world",At.VIEW="view",At.NORMAL="normal";ft.addKeyword("viewNormal",function(){return new At(At.VIEW)});ft.addKeyword("localNormal",function(){return new At(At.NORMAL)});ft.addKeyword("worldNormal",function(){return new At(At.WORLD)});var Kr=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Kr.LOCAL}getType(){switch(this.scope){case Kr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Kr.LOCAL:case Kr.WORLD:return!1}return!0}generate(e,r,o,i,a){let s;switch(this.scope){case Kr.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case Kr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case Kr.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Kr.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),r)}},Qt=Kr;Qt.LOCAL="local",Qt.WORLD="world",Qt.VIEW="view",Qt.PROJECTION="projection";ft.addKeyword("position",function(){return new Qt});ft.addKeyword("worldPosition",function(){return new Qt(Qt.WORLD)});ft.addKeyword("viewPosition",function(){return new Qt(Qt.VIEW)});var Pr=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Pr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Pr.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Pr.VECTOR:{let a=new At(At.VIEW),s=e.context.roughness,l=a.build(e,"v3"),d=new Qt(Qt.VIEW).build(e,"v3"),c=s?s.build(e,"f"):void 0,u=`reflect( -normalize( ${d} ), ${l} )`;c&&(u=`normalize( mix( ${u}, ${l}, ${c} * ${c} ) )`);let p=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case Pr.CUBE:{let a=new Pr(Pr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case Pr.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new Pr(Pr.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)}},Qr=Pr;Qr.CUBE="cube",Qr.SPHERE="sphere",Qr.VECTOR="vector";var Nc=class extends ae{constructor(e=new Ft,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ua(this.value,r??new Qr(Qr.VECTOR),o),this.irradianceNode=new ua(this.value,new At(At.WORLD),new J(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 W2}from"three";var Ec=class extends Re{constructor(e=new W2,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new Qr,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},d=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new kt(new Ee("",d)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,d),e.removeContext(),e.format(s,d,r)}};var x0=`
|
|
101
101
|
uniform int frameIndex;
|
|
102
102
|
uniform vec2 resolution;
|
|
103
103
|
uniform mat4 previousModelViewMatrix;
|
|
@@ -199,7 +199,7 @@ vec2 velocity = (newPos - oldPos);
|
|
|
199
199
|
if (gl_FragColor.a <= 0.0) discard;
|
|
200
200
|
|
|
201
201
|
gVelocity = vec4(velocity, 0.0, 1.0);
|
|
202
|
-
`;var _0=["x","y","z","w"],
|
|
202
|
+
`;var _0=["x","y","z","w"],Q2=["float","vec2","vec3","vec4"],Z2={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},J2={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[]"},Dc=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+`
|
|
203
203
|
`);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",`
|
|
204
204
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
205
205
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -244,7 +244,7 @@ gVelocity = vec4(velocity, 0.0, 1.0);
|
|
|
244
244
|
`}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 d=s.length;l={name:r||"node"+i+d+(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(`
|
|
245
245
|
`)}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,d=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+`[${d}];
|
|
246
246
|
`:r+=e+" "+c+" "+l+`;
|
|
247
|
-
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof wt?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,d=new
|
|
247
|
+
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof wt?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,d=new _s({type:e,size:r.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(d),s[t].push(d),s[t][d.name]=d,this.uniforms[d.name]=d,d}else{let s=this.inputs.uniforms,l=s.list.length,d=new _s({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(d),s[t].push(d),s[t][d.name]=d,this.uniforms[d.name]=d,d}}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"?ft.get(t):t,this.context.include===!1)return t.name;t instanceof K?o=this.includes.functions:t instanceof Ie?o=this.includes.consts:t instanceof sa&&(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 K&&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 Q2[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 $2:case Y2:return new Ec(r);case X2:return new Nc(new Ft(r));default:return new Ft(r)}else{if(r.isVector2)return new Ke(r);if(r.isVector3)return new Nt(r);if(r.isVector4)return new Kt(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 Z2[t]||t}getFormatByType(t){return J2[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return _0[t]}getIndexByElement(t){return _0.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=w0,e===w0&&this.context.gamma&&(e=K2),e}};import{Vector2 as Nr,Vector3 as eo,Vector4 as Pa}from"three";var Le=class extends Re{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof ht?e:new ht(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),d=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let c=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${c};`)}return d?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 _e=class extends Re{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 nO,UniformsUtils as iO}from"three";var et=class extends Re{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 Or=class extends Re{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 eO}from"three";var on=class extends Re{};var Lc=class extends on{constructor(e){super("v3");this.image=e;this._value=new eO}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 Ln=class extends on{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};import{Matrix3 as tO}from"three";var da=class extends Re{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new tO}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 rO}from"three";var Et=class extends Re{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new rO}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 oO}from"three";function A0(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Bc=class extends da{constructor(e,r){super(new oO);this.repeat=e;this.offset=r;A0(this.value,e,r)}updateMatrix(){A0(this.value,this.repeat,this.offset)}};import{Vector4 as T0}from"three";var Mr=class extends Re{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof T0?new Array(e).fill(r):new Array(e).fill(new T0(0))}};var pa=class extends ae{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 ip=class extends ae{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(ip.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)}},Bn=ip;Bn.Nodes=function(){return{customColor:new K(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
|
|
248
248
|
float lalpha = alpha * mask;
|
|
249
249
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
250
250
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
@@ -492,7 +492,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
492
492
|
}`),i=new K(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
493
493
|
float dist = length(position - origin);
|
|
494
494
|
return ( dist - near ) / ( far - near );
|
|
495
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var
|
|
495
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Ts=class extends ae{constructor(e,r,o,i,a,s,l,d){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=a,this.isMask=d,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 K(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
|
|
496
496
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
497
497
|
|
|
498
498
|
float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
|
|
@@ -554,7 +554,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
554
554
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
555
555
|
|
|
556
556
|
return matcapColor.rgb;
|
|
557
|
-
}`)}}();var
|
|
557
|
+
}`)}}();var Cs=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(Cs||{}),Tt=function(){let t=new K(`vec3 random3(vec3 c) {
|
|
558
558
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
559
559
|
vec3 r;
|
|
560
560
|
r.z = fract(512.0*j);
|
|
@@ -907,7 +907,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
907
907
|
return hashwithoutsine13(vec3(p + mb) + seed);
|
|
908
908
|
}
|
|
909
909
|
}
|
|
910
|
-
`,[f,h,m,y,g,x]);return{simplex:e,simplexFractal:r,simplexAshima:a,fbm:c,perlin:p,voronoi:S}}();var va=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u,p,f,h,m,y,g,x,S,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=d,this.colorC=c,this.colorD=u,this.noiseType=f,this.voronoiStyle=m,this.highCut=y,this.lowCut=g,this.smoothness=x,this.seed=S,this.quality=w,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(
|
|
910
|
+
`,[f,h,m,y,g,x]);return{simplex:e,simplexFractal:r,simplexAshima:a,fbm:c,perlin:p,voronoi:S}}();var va=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u,p,f,h,m,y,g,x,S,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=d,this.colorC=c,this.colorD=u,this.noiseType=f,this.voronoiStyle=m,this.highCut=y,this.lowCut=g,this.smoothness=x,this.seed=S,this.quality=w,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(Cs)[this.noiseType.value],l=s=="voronoi"?`
|
|
911
911
|
float v = ${s}(st + move, voronoiStyle, smoothness, seed, quality);
|
|
912
912
|
|
|
913
913
|
// Apply clipping to colors
|
|
@@ -1773,7 +1773,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1773
1773
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1774
1774
|
|
|
1775
1775
|
return transmission;
|
|
1776
|
-
}`,[a])}}();var fp=(e=>(e.NOISE="noise",e.MAP="map",e))(fp||{}),hp=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u,p){super("v3");this.displacementTypeIndex=new _e(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(fp)[this.displacementTypeIndex.value]==="map"&&(this.mat=new da(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=u,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=d,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(fp)[this.displacementTypeIndex.value]){case"map":{o=e.include(hp.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(
|
|
1776
|
+
}`,[a])}}();var fp=(e=>(e.NOISE="noise",e.MAP="map",e))(fp||{}),hp=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u,p){super("v3");this.displacementTypeIndex=new _e(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(fp)[this.displacementTypeIndex.value]==="map"&&(this.mat=new da(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=u,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=d,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(fp)[this.displacementTypeIndex.value]){case"map":{o=e.include(hp.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(Cs)[this.noiseFunctionIndex.value],l=new K(`vec3 orthogonal(vec3 v) {
|
|
1777
1777
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1778
1778
|
}`),d=s=="voronoi"?`
|
|
1779
1779
|
float v = ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
|
|
@@ -1824,7 +1824,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1824
1824
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
1825
1825
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1826
1826
|
return displaced_position;
|
|
1827
|
-
}`,[e,r])}}();var be={normalRenderTarget:new Ft,normalRenderTargetDepth:new Ft,transmissionRenderTarget:new Ft,aspectRatio:new Ke,transmissionSize:new Ke(2048,2048),transmissionRenderTargetDepth:new Ft,aoRenderTarget:new Ft,aoEnabled:new et,pixelRatioNode:new J(1),resolution:new Ke,penumbraSize:new Or(5,.5),frameIndex:new _e(0),transmissionLod:new _e(2)};for(let n of Object.values(be))n.isRenderGlobal=!0;var Vn=class extends wt{constructor(){super("basic");this.nodeType="Basic";this.color=new
|
|
1827
|
+
}`,[e,r])}}();var be={normalRenderTarget:new Ft,normalRenderTargetDepth:new Ft,transmissionRenderTarget:new Ft,aspectRatio:new Ke,transmissionSize:new Ke(2048,2048),transmissionRenderTargetDepth:new Ft,aoRenderTarget:new Ft,aoEnabled:new et,pixelRatioNode:new J(1),resolution:new Ke,penumbraSize:new Or(5,.5),frameIndex:new _e(0),transmissionLod:new _e(2)};for(let n of Object.values(be))n.isRenderGlobal=!0;var Vn=class extends wt{constructor(){super("basic");this.nodeType="Basic";this.color=new Le(dt),this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.previousModelViewMatrix=new Et,this.previouseProjectionMatrix=new Et}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:be.frameIndex}),e.mergeUniform({resolution:be.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(iO.merge([nO.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
1828
1828
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1829
1829
|
#if !defined( USE_LAYER_DISPLACE )
|
|
1830
1830
|
#include <defaultnormal_vertex>
|
|
@@ -1842,9 +1842,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1842
1842
|
#include <begin_vertex>
|
|
1843
1843
|
#endif /* !USE_LAYER_DISPLACE */
|
|
1844
1844
|
`];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(`
|
|
1845
|
-
`)}else{this.color===void 0&&(this.color=new
|
|
1845
|
+
`)}else{this.color===void 0&&(this.color=new Le(dt)),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(`
|
|
1846
1846
|
`));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 d="1.0";this.mask&&(this.mask.analyze(e),d=`luminance(${this.mask.flow(e,"v3").result})`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${d} );`):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(`
|
|
1847
|
-
`)}return r}};import{UniformsLib as M0,UniformsUtils as
|
|
1847
|
+
`)}return r}};import{UniformsLib as M0,UniformsUtils as aO}from"three";var Ps=class extends wt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Le(dt),this.emissive=new Le(0),this.emissiveIntensity=new J(1),this.previousModelViewMatrix=new Et,this.previouseProjectionMatrix=new Et,this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.occlusion=new et(!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:be.frameIndex}),e.mergeUniform({resolution:be.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(aO.merge([M0.fog,M0.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(`
|
|
1848
1848
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1849
1849
|
#ifndef USE_LAYER_DISPLACE
|
|
1850
1850
|
#include <defaultnormal_vertex>
|
|
@@ -1937,7 +1937,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1937
1937
|
#pragma unroll_loop_end
|
|
1938
1938
|
#endif
|
|
1939
1939
|
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
1940
|
-
`)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled}),this.color===void 0&&(this.color=new
|
|
1940
|
+
`)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled}),this.color===void 0&&(this.color=new Le(dt)),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"),d=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 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(`
|
|
1941
1941
|
`));let f=["#include <normal_fragment_begin>",`
|
|
1942
1942
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1943
1943
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -1953,7 +1953,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1953
1953
|
outgoingLight *= ao;
|
|
1954
1954
|
}
|
|
1955
1955
|
`),c&&f.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.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(`
|
|
1956
|
-
`)}return r}};import{UniformsLib as I0,UniformsUtils as
|
|
1956
|
+
`)}return r}};import{UniformsLib as I0,UniformsUtils as sO}from"three";var To=function(){let n=new K(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
|
|
1957
1957
|
|
|
1958
1958
|
// Gradient of UVs w.r.t. X coordinate (in screen-space)
|
|
1959
1959
|
vec2 dSTdx = dFdx(bumpMapUv);
|
|
@@ -1984,7 +1984,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1984
1984
|
|
|
1985
1985
|
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
|
|
1986
1986
|
return normalize( abs( fDet ) * vN - vGrad );
|
|
1987
|
-
}`);return{dHdxy:n,perturbNormalArb:t}}();var
|
|
1987
|
+
}`);return{dHdxy:n,perturbNormalArb:t}}();var Os=class extends wt{constructor(){super("phong");this.nodeType="Phong";this.color=new Le(dt),this.specular=new Le(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new Et,this.previouseProjectionMatrix=new Et,this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.occlusion=new et(!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:be.frameIndex}),e.mergeUniform({resolution:be.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(sO.merge([I0.fog,I0.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(`
|
|
1988
1988
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1989
1989
|
#include <skinbase_vertex>
|
|
1990
1990
|
#include <skinnormal_vertex>
|
|
@@ -2005,7 +2005,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2005
2005
|
#include <begin_vertex>
|
|
2006
2006
|
#endif
|
|
2007
2007
|
`];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(`
|
|
2008
|
-
`)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled}),this.color===void 0&&(this.color=new
|
|
2008
|
+
`)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled}),this.color===void 0&&(this.color=new Le(dt)),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"),d=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["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(`
|
|
2009
2009
|
`));let f=["#include <normal_fragment_begin>",`
|
|
2010
2010
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2011
2011
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2052,7 +2052,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2052
2052
|
outgoingLight *= ao;
|
|
2053
2053
|
}
|
|
2054
2054
|
`),c&&f.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.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(`
|
|
2055
|
-
`)}return r}};import{UniformsLib as mp,UniformsUtils as
|
|
2055
|
+
`)}return r}};import{UniformsLib as mp,UniformsUtils as lO}from"three";var Ms=class extends wt{constructor(){super("standard");this.nodeType="Standard";this.color=new Le(dt),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.previousModelViewMatrix=new Et,this.previouseProjectionMatrix=new Et,this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.occlusion=new et(!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:be.frameIndex}),e.mergeUniform({resolution:be.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(lO.merge([mp.fog,mp.lights])),mp.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(`
|
|
2056
2056
|
`));let i=["#include <beginnormal_vertex>",`
|
|
2057
2057
|
#if !defined( USE_LAYER_DISPLACE )
|
|
2058
2058
|
#include <defaultnormal_vertex>
|
|
@@ -2070,7 +2070,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2070
2070
|
#include <begin_vertex>
|
|
2071
2071
|
#endif /* !USE_LAYER_DISPLACE */
|
|
2072
2072
|
`];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(`
|
|
2073
|
-
`)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new
|
|
2073
|
+
`)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new Le(dt)),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"),d=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,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(`
|
|
2074
2074
|
`));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
2075
2075
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2076
2076
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2143,7 +2143,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2143
2143
|
outgoingLight *= ao;
|
|
2144
2144
|
}
|
|
2145
2145
|
`),u&&m.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.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(`
|
|
2146
|
-
`)}return r}};import{UniformsLib as N0,UniformsUtils as
|
|
2146
|
+
`)}return r}};import{UniformsLib as N0,UniformsUtils as cO}from"three";var Is=class extends wt{constructor(){super("toon");this.nodeType="Toon";this.color=new Le(dt),this.specular=new Le(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new Et,this.previouseProjectionMatrix=new Et,this.shadingAlpha=new J(1),this.shadingBlend=new _e(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:be.frameIndex}),e.mergeUniform({resolution:be.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(cO.merge([N0.fog,N0.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(`
|
|
2147
2147
|
`));let i=["#include <beginnormal_vertex>",`
|
|
2148
2148
|
#ifndef USE_LAYER_DISPLACE
|
|
2149
2149
|
#include <defaultnormal_vertex>
|
|
@@ -2161,7 +2161,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2161
2161
|
#include <begin_vertex>
|
|
2162
2162
|
#endif
|
|
2163
2163
|
`];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(`
|
|
2164
|
-
`)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled}),this.color===void 0&&(this.color=new
|
|
2164
|
+
`)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled}),this.color===void 0&&(this.color=new Le(dt)),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"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,c=this.alpha?this.alpha.flow(e,"f"):void 0,u=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>",`
|
|
2165
2165
|
varying vec3 vViewPosition;
|
|
2166
2166
|
struct ToonMaterial {
|
|
2167
2167
|
vec3 diffuseColor;
|
|
@@ -2226,11 +2226,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2226
2226
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
|
|
2227
2227
|
}
|
|
2228
2228
|
`),d&&p.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u&&p.push(`gl_FragColor.a *= ${u.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
2229
|
-
`)}return r}};import{VideoTexture as cO,Texture as uO}from"three";var Rc=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 gp=class extends Rc{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},yp;function E0(n){return typeof n=="string"?n:(yp||(yp=new gp),yp.load(n))}var Vc=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")}},Gc=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 Ca=class extends Vc{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type==="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let a of i){let s=this[a];s&&(s.image=this.img,s.needsUpdate=!0)}this.shared.requestRender()};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=E0(e),this.img.onload=r}getTexture(e){let r=this[e];if(r)return r;{let o;return this.isVideo?o=new cO(this.img,void 0,e,e):o=new uO(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var pr=class extends Ca{};import{Vector2 as Co,Vector3 as Jr,Vector4 as zc}from"three";function Lt(n,t){return t.color(n)}function L0(n,t){switch(n.type){case"fresnel":return fO(n,t);case"gradient":return hO(n,t);case"depth":return mO(n,t);case"normal":return yO(n,t);case"noise":return gO(n,t);case"rainbow":return xO(n,t);case"toon":return vO(n,t);case"outline":return bO(n,t);case"transmission":return SO(n,t);case"color":return pO(n,t);case"pattern":return wO(n,t)}}function dO(n){return{type:n.type}}function Ir(n,t){let{alpha:e,mode:r,isMask:o}=n,i=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...dO(n),alpha:i,mode:r,isMask:o}}function pO(n,t){return{...Ir(n,t),color:Lt(n.color,t)}}function fO(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:a}=n;return{...Ir(n,t),color:Lt(a,t),bias:e,scale:r,intensity:o,factor:i}}function hO(n,t){let{gradientType:e,smooth:r,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...Ir(n,t),gradientType:e,smooth:r,colors:o.map(d=>new zc(d[0],d[1],d[2],d[3])),num:o.length,steps:i,offset:new Co(...s),morph:new Co(...l),angle:a}}function mO(n,t){let{gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:d,steps:c,smooth:u}=n;return{...Ir(n,t),gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:new Jr(...s),direction:l?new Jr(...l):new Jr(1,0,0),colors:d.map(p=>p!==void 0?new zc(p[0],p[1],p[2],p[3]):new zc(0,0,0,0)),steps:c.slice(0,d.length),smooth:u}}function yO(n,t){let{cnormal:e}=n;return{...Ir(n,t),cnormal:new Jr(e[0],e[1],e[2])}}function gO(n,t){return{...Ir(n,t),scale:n.scale,move:n.move,fA:new Co(...n.fA),fB:new Co(...n.fB),size:new Jr(...n.size),distortion:new Co(...n.distortion),colorA:Lt(n.colorA,t),colorB:Lt(n.colorB,t),colorC:Lt(n.colorC,t),colorD:Lt(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 xO(n,t){return{...Ir(n,t),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Jr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Jr(...n.offset)}}function vO(n,t){return{...Ir(n,t),positioning:n.positioning,colors:n.colors.map(e=>new zc(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Jr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Lt(n.shadowColor,t),offset:new Jr(...n.offset)}}function bO(n,t){return{...Ir(n,t),outlineColor:Lt(n.outlineColor,t),contourColor:Lt(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Jr(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function SO(n,t){return{...Ir(n,t),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function wO(n,t){return{...Ir(n,t),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Co(...n.offset),colorA:Lt(n.colorA,t),colorB:Lt(n.colorB,t),frequency:new Co(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Co(...n.vertical),horizontal:new Co(...n.horizontal),sides:n.sides}}var an=class extends ht{};import{Vector4 as _O}from"three";var xp={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},vp={depth:["colors"]};function AO(n,t,e){if(t==="isMask")return!0;let r=xp[n.type],o=vp[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 bp(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("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 D0(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(Sp(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 on))switch(o=o||AO(e,i,a),s.constructor){case De:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof an?s.value=new ht(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case Kt:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof an?s.value=new ht(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case Ke:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Nt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Ft:{bp(a,t,e);break}case Mr:{s.value=a.map(l=>new _O(...l));break}default:{s.value=a;break}}}return o}var sn=(n,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,to=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)Sp(a,this,r,i)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return sr.createLigherLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let i=r.type==="texture"?o.image(r.texture.image):o.video(r.texture.video),a=new Dn(i,r.texture.wrapping),s=new Dc(i),l=new Bc(r.texture.repeat,r.texture.offset),d=new J(r.crop?1:0),c=new _e(r.projection??0),u=new _e(["x","y","z"].indexOf(r.axis)??0),p=new _e(r.side??0),f=new Ke(r.size?new Nr(r.size[0],r.size[1]):new Nr(100,100)),h=new J(r.blending??0),m=new J(sn(r.alpha,o)),y=new _e(r.mode??0),g=new et(r.isMask??!1),x=new nn(a,s,d,c,u,p,f,h,l,m,y,g),S=new Ee(x.calpha,"f");return new We(t,e,r,{texture:a,textureSize:s,crop:d,projection:c,axis:u,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:g},x,y,S,g,o)}else if(r.type==="matcap"){let i=o.image(r.texture.image),a=new Dn(i,r.texture.wrapping),s=new J(sn(r.alpha,o)),l=new _e(r.mode??0),d=new et(r.isMask??!1),c=new xa(a,s,l,d),u=new Ee(c.calpha,"f");return new We(t,e,r,{texture:a,alpha:s,mode:l,isMask:d},c,l,u,d,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Nt(new eo(...r.offset)),a=new J(r.scale??10),s=new J(r.intensity??8),l=new J(r.movement??1),d=new _e(r.noiseType??0),c=new _e(r.voronoiStyle??0),u=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 _e(r.quality??1),y=new Ta(s,l,i,c,u,p,f,h,m,a,d);return new Es(t,e,r,{offset:i,scale:a,intensity:s,movement:l,noiseType:d,voronoiStyle:c,smoothness:u,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return PO(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):D0(o.props,r.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?bp(o.props,r.shared,this):!0;return!1}dispose(){if(TO(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}},We=class extends to{constructor(e,r,o,i,a,s,l,d,c){super(e,r,o,i,c);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=d}},Es=class extends to{constructor(e,r,o,i,a,s){super(e,r,o,i,s);this.position=a}},sr=class extends to{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(sn(o.alpha,i)),l=new _e(o.mode),d=new J(o.bumpMapIntensity),c=new J(sn(o.alphaOverride,i)),u;if(!o.visible)a=new Vn,u={};else if(o.category==="lambert"){a=new Os;let p=new De(i.color(o.emissive)??0),f=new et(o.occlusion??!0);u={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new Ns;let p=new J(o.shininess??30),f=new De(i.color(o.specular)??1118481);u={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new Is;let p=new J(o.roughness??.3),f=new J(o.metalness??0),h=new J(o.reflectivity??.5),m=new et(o.occlusion??!0);u={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new Ms;let p=new J(o.shininess??30),f=new De(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new et(o.occlusion??!0);u={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=d,a.alphaOverride=c,u.alpha=a.shadingAlpha,u.mode=a.shadingBlend,u.bumpMapIntensity=a.bumpMapIntensity,u.alphaOverride=a.alphaOverride,new sr(e,r,o,a,u,i)}get category(){return this.node.category}};function TO(n){let t=n instanceof to?n.type:n;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function fr(n){return{alpha:new J(n.alpha??1),mode:new _e(n.mode??0),isMask:new et(n.isMask??!1)}}function CO(n,t,e,r,o){switch(n.type){case"color":{let i=new De(r.color??dt),a=fr(r),s=new Bn(i,a.alpha),l=new Ee(s.calpha,"f");return new We(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new De(r.color??16777215),a=new J(r.bias??.1),s=new J(r.scale??1),l=new J(r.intensity??2),d=new J(r.factor??1),c=fr(r),u=new Cs(i,a,s,l,d,c.alpha,c.mode,c.isMask),p=new Ee(u.calpha,"f");return new We(t,e,n,{color:i,bias:a,scale:s,intensity:l,factor:d,...c},u,c.mode,p,c.isMask,o)}case"rainbow":{let i=new J(r.filmThickness??30),a=new J(r.movement??0),s=new Nt(r.wavelengths??new eo(0,0,0)),l=new J(r.noiseStrength??0),d=new J(r.noiseScale??1),c=new Nt(r.offset??new eo(0,0,0)),u=fr(r),p=new wa(i,a,s,l,d,c,u.alpha,u.isMask),f=new Ee(p.calpha,"f");return new We(t,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:d,offset:c,...u},p,u.mode,f,u.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=be.transmissionSize,d=be.transmissionRenderTarget,c=be.transmissionRenderTargetDepth,u=window.innerWidth,p=window.innerHeight,f=u>=p?new Ke(p/u,1):new Ke(1,u/p),h=fr(r),m=new Aa(i,a,s,l,d,c,f,h.alpha),y=new Ee(m.calpha,"f");return new We(t,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new _e(r.positioning??0),a;r.colors?a=new Mr(r.colors.length,r.colors):(a=new Mr(10,new Pa(0,0,0,1)),a.value[1]=new Pa(1,1,1,1));let s;r.steps?s=new Or(r.steps.length,r.steps):(s=new Or(10,1),s.value[0]=0);let l=new Nt(r.source??new eo(0,0,0)),d=new et(r.isWorldSpace??!0),c=new J(r.noiseStrength??0),u=new J(r.noiseScale??1),p=new Kt(r.shadowColor),f=new Nt(r.offset??new eo(0,0,0)),h=fr(r),m=new _a(i,a,s,l,d,c,u,p,f,h.alpha),y=new Ee(m.calpha,"f");return new We(t,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:d,noiseStrength:c,noiseScale:u,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let i=new De(r.outlineColor??16777215),a=new De(r.contourColor??16777215),s=new J(r.outlineWidth??.1),l=new J(r.contourWidth??.1),d=new J(r.outlineThreshold??.1),c=new J(r.contourThreshold??.1),u=new J(r.outlineSmoothing??.1),p=new J(r.contourFrequency??.1),f=new Nt(r.contourDirection??new eo(0,1,0)),h=new et(r.positionalLines??!1),m=new et(r.compensation??!0),y=be.normalRenderTarget,g=be.normalRenderTargetDepth,x=be.pixelRatioNode,S=be.resolution,w=fr(r),b=new ba(i,a,s,l,d,c,u,p,f,h,m,S,y,g,x,w.alpha),_=new Ee(b.calpha,"f");return new We(t,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:d,contourThreshold:c,outlineSmoothing:u,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...w},b,w.mode,_,w.isMask,o)}case"depth":{let i=new _e(r.gradientType??0),a=new et(r.smooth??!1),s=new J(r.near??50),l=new J(r.far??200),d=new J(r.isVector??1),c=new J(r.isWorldSpace??0),u=new Nt(r.origin??new eo),p=new Nt(r.direction??new eo),f;r.colors?f=new Mr(r.colors.length,r.colors):(f=new Mr(2,new Pa(0,0,0,1)),f.value[1]=new Pa(1,1,1,1));let h;r.steps?h=new Or(r.steps.length,r.steps):(h=new Or(2,1),h.value[0]=0);let m=fr(r),y=new ya(i,a,s,l,d,c,u,p,f,h,m.alpha,m.isMask),g=new Ee(y.calpha,"f");return new We(t,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:d,isWorldSpace:c,origin:u,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 Nt(r.size??new eo(100,100,100)),s=new J(r.move??1),l=new Ke(r.fA??new Nr(1.7,9.2)),d=new Ke(r.fB??new Nr(8.3,2.8)),c=new Ke(r.distortion??new Nr(1,1)),u=new Kt(r.colorA),p=new Kt(r.colorB),f=new Kt(r.colorC),h=new Kt(r.colorD),m=new _e(r.noiseType??0),y=new _e(r.voronoiStyle??0),g=new J(r.highCut??1),x=new J(r.lowCut??0),S=new J(r.smoothness??.5),w=new J(r.seed??.5),b=new _e(r.quality??1),_=fr(r),A=new va(i,a,s,l,d,c,u,p,f,h,_.alpha,m,_.isMask,y,g,x,S,w,b),v=new Ee(A.calpha,"f");return new We(t,e,n,{scale:i,size:a,move:s,fA:l,fB:d,distortion:c,colorA:u,colorB:p,colorC:f,colorD:h,noiseType:m,..._,voronoiStyle:y,highCut:g,lowCut:x,smoothness:S,seed:w,quality:b},A,_.mode,v,_.isMask,o)}case"normal":{let i=new Nt(r.cnormal??new eo(1,1,1)),a=fr(r),s=new fa(i,a.alpha),l=new Ee(s.calpha,"f");return new We(t,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new _e(r.gradientType??0),a=new et(r.smooth??!1),s;r.colors?s=new Mr(r.colors.length,r.colors):(s=new Mr(10,new Pa(0,0,0,1)),s.value[1]=new Pa(1,1,1,1));let l;r.steps?l=new Or(r.steps.length,r.steps):(l=new Or(10,1),l.value[0]=0);let d=new Ke(r.offset??new Nr(0,0)),c=new Ke(r.morph??new Nr(0,0)),u=new J(r.angle??0),p=fr(r),f=new ga(i,a,s,l,d,c,u,p.alpha,p.isMask),h=new Ee(f.calpha,"f");return new We(t,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:d,morph:c,angle:u,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let i=new _e(r.style??0),a=new _e(r.projection??0),s=new _e(["x","y","z"].indexOf(r.axis)??0),l=new J(r.blending??0),d=new Ke(r.offset??new Nr(0,0)),c=new Kt(r.colorA),u=new Kt(r.colorB),p=new Ke(r.frequency??new Nr(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),x=new Ke(r.vertical??new Nr(0,1)),S=new Ke(r.horizontal??new Nr(0,1)),w=new _e(r.sides??6),b=fr(r),_=new Sa(i,a,s,l,d,c,u,p,f,h,m,y,g,x,S,w,b.alpha,b.isMask),A=new Ee(_.calpha,"f");return new We(t,e,n,{style:i,projection:a,axis:s,blending:l,offset:d,colorA:c,colorB:u,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:g,vertical:x,horizontal:S,sides:w,...b},_,b.mode,A,b.isMask,o)}default:{let i=new De(1,0,0,1),a=fr(r),s=new Bn(i,a.alpha),l=new Ee(s.calpha,"f");return new We(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function PO(n,t,e,r){let o=L0(e,r);return CO(e,n,t,o,r)}function Sp(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=sn(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 kc(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,d=t.color(o.data.colorD).a,c=Math.min(a,Math.min(s,Math.min(l,d)));c<1&&(i=c)}e+=(1-e)*i}}return e<1}var Zt=class extends OO{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}},Fc=class extends Zt{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()}},Gn=class extends Zt{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 Fc(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){this.data!==e&&this.reset0(e,r)}reset0(e,r){this.data=e;let o=e.layers??Pt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>to.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=kc(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=kc(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=kc(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 sr),this.lightLayer===void 0&&(this.lightLayer=new sr(0,"",{...zt.defaultData("light","phong"),visible:!1},new Vn,{},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 sr);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 We&&s.color instanceof nn&&(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=kc(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=to.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(d=>d.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),d;if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?d={...e.props,alpha:sn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:d={...e.props,alphaOverride:sn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...d?{props:d}:{},path:e.path.slice(2)},l,o)){let u=to.create(this.layerIdGen++,a,l,i);this.layers.splice(this.layers.findIndex(p=>p.uuid===a),1,u),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 We?r.color.mask=void 0:r instanceof sr&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof We&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof sr?i.node.mask=new _t(r.color,r.alpha,_t.MUL):i instanceof We&&(i.isMask.value||(i.color.mask=new _t(r.color,r.alpha,_t.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof We),r=this.layers.findIndex(o=>o instanceof sr);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 We){if(a.isMask.value)continue;o=new pa(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ee("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof sr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof We){if(i.isMask.value)continue;e=new pa(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 Es);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new _t(r,e[o].position,_t.ADD),r=new _t(r,new J(.5).setReadonly(!0),_t.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=(xp[r.type]??[]).map(d=>r[d]),i=(vp[r.type]??[]).map(d=>r[d]?.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 Lc;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 We){let r=e.params.texture;if(r instanceof Dn&&!r.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Zt.prototype,{properties:{get:function(){return this.fragment.properties}}});var zn=class extends Gn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var G0=Rt(B0());var R0=new Map;function V0(n){if(typeof n=="string")return n;let t=R0.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},R0.set(n,t)),t.url}var kn=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:V0(t),format:"wav"},this.sound=new G0.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 MO,Vector2 as Fn,Path as z0,Shape as IO,ShapeUtils as NO,Color as EO}from"three";var Uc=class{constructor(){this.type="ShapePath";this.color=new EO;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new z0,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,x){let S=m.x,w=y.x,b=g.x,_=x.x,A=m.y,v=y.y,M=g.y,O=x.y,T=(_-b)*(A-M)-(O-M)*(S-b),C=(w-S)*(A-M)-(v-A)*(S-b),P=(O-M)*(w-S)-(_-b)*(v-A),I=T/P,L=C/P;if(P===0&&T!==0||I<=0||I>=1||L<0||L>1)return null;if(T===0&&P===0){for(let G=0;G<2;G++)if(i(G===0?g:x,m,y),r.loc===e.ORIGIN){let N=G===0?g:x;return{x:N.x,y:N.y,t:r.t}}else if(r.loc===e.BETWEEN){let N=+(S+r.t*(w-S)).toPrecision(10),F=+(A+r.t*(v-A)).toPrecision(10);return{x:N,y:F,t:r.t}}return null}else{for(let F=0;F<2;F++)if(i(F===0?g:x,m,y),r.loc===e.ORIGIN){let B=F===0?g:x;return{x:B.x,y:B.y,t:r.t}}let G=+(S+I*(w-S)).toPrecision(10),N=+(A+I*(v-A)).toPrecision(10);return{x:G,y:N,t:I}}}function i(m,y,g){let x=g.x-y.x,S=g.y-y.y,w=m.x-y.x,b=m.y-y.y,_=x*b-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(x*w<0||S*b<0){r.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+b*b)){r.loc=e.BEYOND;return}let A;x!==0?A=w/x:A=b/S,r.loc=e.BETWEEN,r.t=A}function a(m,y){let g=[],x=[];for(let S=1;S<m.length;S++){let w=m[S-1],b=m[S];for(let _=1;_<y.length;_++){let A=y[_-1],v=y[_],M=o(w,b,A,v);M!==null&&g.find(O=>O.t<=M.t+Number.EPSILON&&O.t>=M.t-Number.EPSILON)===void 0&&(g.push(M),x.push(new Fn(M.x,M.y)))}}return x}function s(m,y,g){let x=new Fn;y.getCenter(x);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&a(m,w.points).forEach(_=>{S.push({identifier:w.identifier,isCW:w.isCW,point:_})})}),S.sort((w,b)=>w.point.x-b.point.x),S}function l(m,y,g,x,S){(S==null||S==="")&&(S="nonzero");let w=new Fn;m.boundingBox.getCenter(w);let b=[new Fn(g,w.y),new Fn(x,w.y)],_=s(b,m.boundingBox,y);_.sort((C,P)=>C.point.x-P.point.x);let A=[],v=[];_.forEach(C=>{C.identifier===m.identifier?A.push(C):v.push(C)});let M=A[0].point.x,O=[],T=0;for(;T<v.length&&v[T].point.x<M;)O.length>0&&O[O.length-1]===v[T].identifier?O.pop():O.push(v[T].identifier),T++;if(O.push(m.identifier),S==="evenodd"){let C=O.length%2===0,P=O[O.length-2];return{identifier:m.identifier,isHole:C,for:P}}else if(S==="nonzero"){let C=!0,P=null,I=null;for(let L=0;L<O.length;L++){let G=O[L];y[G]&&(C?(I=y[G].isCW,C=!1,P=G):I!==y[G].isCW&&(I=y[G].isCW,C=!0))}return{identifier:m.identifier,isHole:C,for:P}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let d=0,c=999999999,u=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,x=999999999,S=-999999999,w=999999999;for(let b=0;b<y.length;b++){let _=y[b];_.y>g&&(g=_.y),_.y<x&&(x=_.y),_.x>S&&(S=_.x),_.x<w&&(w=_.x)}u<=S&&(u=S+1),c>=w&&(c=w-1),y.length&&p.push({curves:m.curves,points:y,isCW:NO.isClockWise(y),identifier:d++,boundingBox:new MO(new Fn(w,x),new Fn(S,g))})});let f=p.map(m=>l(m,p,c,u,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let g=new IO;g.curves=m.curves,f.filter(S=>S?.isHole&&S.for===m.identifier).forEach(S=>{if(S){let w=p[S.identifier],b=new z0;b.curves=w.curves,g.holes.push(b)}}),h.push(g)}}),h}};var F0,wp=new Promise(n=>{F0=n}),k0=!1;var Hc;function j0(){if(k0)return;if(Hc)return Hc;async function n(){let e=await import("./opentype.js");F0(e),k0=!0}return Hc=n(),Hc}var Ls=class{async load(t,e,r=()=>{}){let{load:o}=await wp;o(t,(i,a)=>{i||!a?r(i??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await wp;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 LO(n){return await(await fetch(n)).arrayBuffer()}var DO=new Ls;async function _p(n){let t,e,r=!1;if(n.url?(t=await LO(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){let o=await DO.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}}import{CubicBezierCurve as BO,LineCurve as RO,QuadraticBezierCurve as VO}from"three";function GO(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var qc=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=_p(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=_p(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 d=0;d<r.length;d++){let c=r[d].index,u=String.fromCharCode(r[d].unicode),p=i[s];if(GO(c,p)||l)a.push({char:u,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:u,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(x=>this.getTextWidth(x,e)),s=e.width,l=this.getCharWidth(`
|
|
2229
|
+
`)}return r}};import{VideoTexture as uO,Texture as dO}from"three";var Rc=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 gp=class extends Rc{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},yp;function E0(n){return typeof n=="string"?n:(yp||(yp=new gp),yp.load(n))}var Vc=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")}},Gc=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 Ca=class extends Vc{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type==="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let a of i){let s=this[a];s&&(s.image=this.img,s.needsUpdate=!0)}this.shared.requestRender()};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=E0(e),this.img.onload=r}getTexture(e){let r=this[e];if(r)return r;{let o;return this.isVideo?o=new uO(this.img,void 0,e,e):o=new dO(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var fr=class extends Ca{};import{Vector2 as Co,Vector3 as Jr,Vector4 as zc}from"three";function Dt(n,t){return t.color(n)}function D0(n,t){switch(n.type){case"fresnel":return hO(n,t);case"gradient":return mO(n,t);case"depth":return yO(n,t);case"normal":return gO(n,t);case"noise":return xO(n,t);case"rainbow":return vO(n,t);case"toon":return bO(n,t);case"outline":return SO(n,t);case"transmission":return wO(n,t);case"color":return fO(n,t);case"pattern":return _O(n,t)}}function pO(n){return{type:n.type}}function Ir(n,t){let{alpha:e,mode:r,isMask:o}=n,i=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...pO(n),alpha:i,mode:r,isMask:o}}function fO(n,t){return{...Ir(n,t),color:Dt(n.color,t)}}function hO(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:a}=n;return{...Ir(n,t),color:Dt(a,t),bias:e,scale:r,intensity:o,factor:i}}function mO(n,t){let{gradientType:e,smooth:r,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...Ir(n,t),gradientType:e,smooth:r,colors:o.map(d=>new zc(d[0],d[1],d[2],d[3])),num:o.length,steps:i,offset:new Co(...s),morph:new Co(...l),angle:a}}function yO(n,t){let{gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:d,steps:c,smooth:u}=n;return{...Ir(n,t),gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:new Jr(...s),direction:l?new Jr(...l):new Jr(1,0,0),colors:d.map(p=>p!==void 0?new zc(p[0],p[1],p[2],p[3]):new zc(0,0,0,0)),steps:c.slice(0,d.length),smooth:u}}function gO(n,t){let{cnormal:e}=n;return{...Ir(n,t),cnormal:new Jr(e[0],e[1],e[2])}}function xO(n,t){return{...Ir(n,t),scale:n.scale,move:n.move,fA:new Co(...n.fA),fB:new Co(...n.fB),size:new Jr(...n.size),distortion:new Co(...n.distortion),colorA:Dt(n.colorA,t),colorB:Dt(n.colorB,t),colorC:Dt(n.colorC,t),colorD:Dt(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 vO(n,t){return{...Ir(n,t),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Jr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Jr(...n.offset)}}function bO(n,t){return{...Ir(n,t),positioning:n.positioning,colors:n.colors.map(e=>new zc(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Jr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Dt(n.shadowColor,t),offset:new Jr(...n.offset)}}function SO(n,t){return{...Ir(n,t),outlineColor:Dt(n.outlineColor,t),contourColor:Dt(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Jr(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function wO(n,t){return{...Ir(n,t),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function _O(n,t){return{...Ir(n,t),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Co(...n.offset),colorA:Dt(n.colorA,t),colorB:Dt(n.colorB,t),frequency:new Co(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Co(...n.vertical),horizontal:new Co(...n.horizontal),sides:n.sides}}var an=class extends ht{};import{Vector4 as AO}from"three";var xp={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},vp={depth:["colors"]};function TO(n,t,e){if(t==="isMask")return!0;let r=xp[n.type],o=vp[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 bp(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 fr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=t.video(a),l=r;l.image instanceof fr||l.image.deref(),l.image=s}if("wrapping"in i){let a=r;a.wrap=i.wrapping}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 L0(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(Sp(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 on))switch(o=o||TO(e,i,a),s.constructor){case Le:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof an?s.value=new ht(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case Kt:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof an?s.value=new ht(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case Ke:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Nt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Ft:{bp(a,t,e);break}case Mr:{s.value=a.map(l=>new AO(...l));break}default:{s.value=a;break}}}return o}var sn=(n,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,to=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)Sp(a,this,r,i)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return lr.createLigherLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let i=r.type==="texture"?o.image(r.texture.image):o.video(r.texture.video),a=new Ln(i,r.texture.wrapping),s=new Lc(i),l=new Bc(r.texture.repeat,r.texture.offset),d=new J(r.crop?1:0),c=new _e(r.projection??0),u=new _e(["x","y","z"].indexOf(r.axis)??0),p=new _e(r.side??0),f=new Ke(r.size?new Nr(r.size[0],r.size[1]):new Nr(100,100)),h=new J(r.blending??0),m=new J(sn(r.alpha,o)),y=new _e(r.mode??0),g=new et(r.isMask??!1),x=new nn(a,s,d,c,u,p,f,h,l,m,y,g),S=new Ee(x.calpha,"f");return new We(t,e,r,{texture:a,textureSize:s,crop:d,projection:c,axis:u,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:g},x,y,S,g,o)}else if(r.type==="matcap"){let i=o.image(r.texture.image),a=new Ln(i,r.texture.wrapping),s=new J(sn(r.alpha,o)),l=new _e(r.mode??0),d=new et(r.isMask??!1),c=new xa(a,s,l,d),u=new Ee(c.calpha,"f");return new We(t,e,r,{texture:a,alpha:s,mode:l,isMask:d},c,l,u,d,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Nt(new eo(...r.offset)),a=new J(r.scale??10),s=new J(r.intensity??8),l=new J(r.movement??1),d=new _e(r.noiseType??0),c=new _e(r.voronoiStyle??0),u=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 _e(r.quality??1),y=new Ta(s,l,i,c,u,p,f,h,m,a,d);return new Ns(t,e,r,{offset:i,scale:a,intensity:s,movement:l,noiseType:d,voronoiStyle:c,smoothness:u,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return OO(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):L0(o.props,r.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?bp(o.props,r.shared,this):!0;return!1}dispose(){if(CO(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof fr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},We=class extends to{constructor(e,r,o,i,a,s,l,d,c){super(e,r,o,i,c);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=d}},Ns=class extends to{constructor(e,r,o,i,a,s){super(e,r,o,i,s);this.position=a}},lr=class extends to{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(sn(o.alpha,i)),l=new _e(o.mode),d=new J(o.bumpMapIntensity),c=new J(sn(o.alphaOverride,i)),u;if(!o.visible)a=new Vn,u={};else if(o.category==="lambert"){a=new Ps;let p=new Le(i.color(o.emissive)??0),f=new et(o.occlusion??!0);u={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new Is;let p=new J(o.shininess??30),f=new Le(i.color(o.specular)??1118481);u={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new Ms;let p=new J(o.roughness??.3),f=new J(o.metalness??0),h=new J(o.reflectivity??.5),m=new et(o.occlusion??!0);u={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new Os;let p=new J(o.shininess??30),f=new Le(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new et(o.occlusion??!0);u={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=d,a.alphaOverride=c,u.alpha=a.shadingAlpha,u.mode=a.shadingBlend,u.bumpMapIntensity=a.bumpMapIntensity,u.alphaOverride=a.alphaOverride,new lr(e,r,o,a,u,i)}get category(){return this.node.category}};function CO(n){let t=n instanceof to?n.type:n;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function hr(n){return{alpha:new J(n.alpha??1),mode:new _e(n.mode??0),isMask:new et(n.isMask??!1)}}function PO(n,t,e,r,o){switch(n.type){case"color":{let i=new Le(r.color??dt),a=hr(r),s=new Bn(i,a.alpha),l=new Ee(s.calpha,"f");return new We(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new Le(r.color??16777215),a=new J(r.bias??.1),s=new J(r.scale??1),l=new J(r.intensity??2),d=new J(r.factor??1),c=hr(r),u=new Ts(i,a,s,l,d,c.alpha,c.mode,c.isMask),p=new Ee(u.calpha,"f");return new We(t,e,n,{color:i,bias:a,scale:s,intensity:l,factor:d,...c},u,c.mode,p,c.isMask,o)}case"rainbow":{let i=new J(r.filmThickness??30),a=new J(r.movement??0),s=new Nt(r.wavelengths??new eo(0,0,0)),l=new J(r.noiseStrength??0),d=new J(r.noiseScale??1),c=new Nt(r.offset??new eo(0,0,0)),u=hr(r),p=new wa(i,a,s,l,d,c,u.alpha,u.isMask),f=new Ee(p.calpha,"f");return new We(t,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:d,offset:c,...u},p,u.mode,f,u.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=be.transmissionSize,d=be.transmissionRenderTarget,c=be.transmissionRenderTargetDepth,u=window.innerWidth,p=window.innerHeight,f=u>=p?new Ke(p/u,1):new Ke(1,u/p),h=hr(r),m=new Aa(i,a,s,l,d,c,f,h.alpha),y=new Ee(m.calpha,"f");return new We(t,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new _e(r.positioning??0),a;r.colors?a=new Mr(r.colors.length,r.colors):(a=new Mr(10,new Pa(0,0,0,1)),a.value[1]=new Pa(1,1,1,1));let s;r.steps?s=new Or(r.steps.length,r.steps):(s=new Or(10,1),s.value[0]=0);let l=new Nt(r.source??new eo(0,0,0)),d=new et(r.isWorldSpace??!0),c=new J(r.noiseStrength??0),u=new J(r.noiseScale??1),p=new Kt(r.shadowColor),f=new Nt(r.offset??new eo(0,0,0)),h=hr(r),m=new _a(i,a,s,l,d,c,u,p,f,h.alpha),y=new Ee(m.calpha,"f");return new We(t,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:d,noiseStrength:c,noiseScale:u,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let i=new Le(r.outlineColor??16777215),a=new Le(r.contourColor??16777215),s=new J(r.outlineWidth??.1),l=new J(r.contourWidth??.1),d=new J(r.outlineThreshold??.1),c=new J(r.contourThreshold??.1),u=new J(r.outlineSmoothing??.1),p=new J(r.contourFrequency??.1),f=new Nt(r.contourDirection??new eo(0,1,0)),h=new et(r.positionalLines??!1),m=new et(r.compensation??!0),y=be.normalRenderTarget,g=be.normalRenderTargetDepth,x=be.pixelRatioNode,S=be.resolution,w=hr(r),b=new ba(i,a,s,l,d,c,u,p,f,h,m,S,y,g,x,w.alpha),_=new Ee(b.calpha,"f");return new We(t,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:d,contourThreshold:c,outlineSmoothing:u,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...w},b,w.mode,_,w.isMask,o)}case"depth":{let i=new _e(r.gradientType??0),a=new et(r.smooth??!1),s=new J(r.near??50),l=new J(r.far??200),d=new J(r.isVector??1),c=new J(r.isWorldSpace??0),u=new Nt(r.origin??new eo),p=new Nt(r.direction??new eo),f;r.colors?f=new Mr(r.colors.length,r.colors):(f=new Mr(2,new Pa(0,0,0,1)),f.value[1]=new Pa(1,1,1,1));let h;r.steps?h=new Or(r.steps.length,r.steps):(h=new Or(2,1),h.value[0]=0);let m=hr(r),y=new ya(i,a,s,l,d,c,u,p,f,h,m.alpha,m.isMask),g=new Ee(y.calpha,"f");return new We(t,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:d,isWorldSpace:c,origin:u,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 Nt(r.size??new eo(100,100,100)),s=new J(r.move??1),l=new Ke(r.fA??new Nr(1.7,9.2)),d=new Ke(r.fB??new Nr(8.3,2.8)),c=new Ke(r.distortion??new Nr(1,1)),u=new Kt(r.colorA),p=new Kt(r.colorB),f=new Kt(r.colorC),h=new Kt(r.colorD),m=new _e(r.noiseType??0),y=new _e(r.voronoiStyle??0),g=new J(r.highCut??1),x=new J(r.lowCut??0),S=new J(r.smoothness??.5),w=new J(r.seed??.5),b=new _e(r.quality??1),_=hr(r),A=new va(i,a,s,l,d,c,u,p,f,h,_.alpha,m,_.isMask,y,g,x,S,w,b),v=new Ee(A.calpha,"f");return new We(t,e,n,{scale:i,size:a,move:s,fA:l,fB:d,distortion:c,colorA:u,colorB:p,colorC:f,colorD:h,noiseType:m,..._,voronoiStyle:y,highCut:g,lowCut:x,smoothness:S,seed:w,quality:b},A,_.mode,v,_.isMask,o)}case"normal":{let i=new Nt(r.cnormal??new eo(1,1,1)),a=hr(r),s=new fa(i,a.alpha),l=new Ee(s.calpha,"f");return new We(t,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new _e(r.gradientType??0),a=new et(r.smooth??!1),s;r.colors?s=new Mr(r.colors.length,r.colors):(s=new Mr(10,new Pa(0,0,0,1)),s.value[1]=new Pa(1,1,1,1));let l;r.steps?l=new Or(r.steps.length,r.steps):(l=new Or(10,1),l.value[0]=0);let d=new Ke(r.offset??new Nr(0,0)),c=new Ke(r.morph??new Nr(0,0)),u=new J(r.angle??0),p=hr(r),f=new ga(i,a,s,l,d,c,u,p.alpha,p.isMask),h=new Ee(f.calpha,"f");return new We(t,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:d,morph:c,angle:u,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let i=new _e(r.style??0),a=new _e(r.projection??0),s=new _e(["x","y","z"].indexOf(r.axis)??0),l=new J(r.blending??0),d=new Ke(r.offset??new Nr(0,0)),c=new Kt(r.colorA),u=new Kt(r.colorB),p=new Ke(r.frequency??new Nr(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),x=new Ke(r.vertical??new Nr(0,1)),S=new Ke(r.horizontal??new Nr(0,1)),w=new _e(r.sides??6),b=hr(r),_=new Sa(i,a,s,l,d,c,u,p,f,h,m,y,g,x,S,w,b.alpha,b.isMask),A=new Ee(_.calpha,"f");return new We(t,e,n,{style:i,projection:a,axis:s,blending:l,offset:d,colorA:c,colorB:u,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:g,vertical:x,horizontal:S,sides:w,...b},_,b.mode,A,b.isMask,o)}default:{let i=new Le(1,0,0,1),a=hr(r),s=new Bn(i,a.alpha),l=new Ee(s.calpha,"f");return new We(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function OO(n,t,e,r){let o=D0(e,r);return PO(e,n,t,o,r)}function Sp(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=sn(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 kc(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,d=t.color(o.data.colorD).a,c=Math.min(a,Math.min(s,Math.min(l,d)));c<1&&(i=c)}e+=(1-e)*i}}return e<1}var Zt=class extends MO{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}},Fc=class extends Zt{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()}},Gn=class extends Zt{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 Fc(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){this.data!==e&&this.reset0(e,r)}reset0(e,r){this.data=e;let o=e.layers??Pt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>to.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=kc(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=kc(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=kc(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 lr),this.lightLayer===void 0&&(this.lightLayer=new lr(0,"",{...zt.defaultData("light","phong"),visible:!1},new Vn,{},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 lr);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 We&&s.color instanceof nn&&(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=kc(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=to.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(d=>d.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),d;if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?d={...e.props,alpha:sn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:d={...e.props,alphaOverride:sn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...d?{props:d}:{},path:e.path.slice(2)},l,o)){let u=to.create(this.layerIdGen++,a,l,i);this.layers.splice(this.layers.findIndex(p=>p.uuid===a),1,u),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 We?r.color.mask=void 0:r instanceof lr&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof We&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof lr?i.node.mask=new _t(r.color,r.alpha,_t.MUL):i instanceof We&&(i.isMask.value||(i.color.mask=new _t(r.color,r.alpha,_t.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof We),r=this.layers.findIndex(o=>o instanceof lr);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 We){if(a.isMask.value)continue;o=new pa(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ee("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof lr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof We){if(i.isMask.value)continue;e=new pa(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 Ns);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new _t(r,e[o].position,_t.ADD),r=new _t(r,new J(.5).setReadonly(!0),_t.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=(xp[r.type]??[]).map(d=>r[d]),i=(vp[r.type]??[]).map(d=>r[d]?.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 Dc;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 We){let r=e.params.texture;if(r instanceof Ln&&!r.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Zt.prototype,{properties:{get:function(){return this.fragment.properties}}});var zn=class extends Gn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var G0=Rt(B0());var R0=new Map;function V0(n){if(typeof n=="string")return n;let t=R0.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},R0.set(n,t)),t.url}var kn=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:V0(t),format:"wav"},this.sound=new G0.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 IO,Vector2 as Fn,Path as z0,Shape as NO,ShapeUtils as EO,Color as DO}from"three";var Uc=class{constructor(){this.type="ShapePath";this.color=new DO;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new z0,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,x){let S=m.x,w=y.x,b=g.x,_=x.x,A=m.y,v=y.y,M=g.y,O=x.y,T=(_-b)*(A-M)-(O-M)*(S-b),C=(w-S)*(A-M)-(v-A)*(S-b),P=(O-M)*(w-S)-(_-b)*(v-A),I=T/P,D=C/P;if(P===0&&T!==0||I<=0||I>=1||D<0||D>1)return null;if(T===0&&P===0){for(let G=0;G<2;G++)if(i(G===0?g:x,m,y),r.loc===e.ORIGIN){let N=G===0?g:x;return{x:N.x,y:N.y,t:r.t}}else if(r.loc===e.BETWEEN){let N=+(S+r.t*(w-S)).toPrecision(10),F=+(A+r.t*(v-A)).toPrecision(10);return{x:N,y:F,t:r.t}}return null}else{for(let F=0;F<2;F++)if(i(F===0?g:x,m,y),r.loc===e.ORIGIN){let B=F===0?g:x;return{x:B.x,y:B.y,t:r.t}}let G=+(S+I*(w-S)).toPrecision(10),N=+(A+I*(v-A)).toPrecision(10);return{x:G,y:N,t:I}}}function i(m,y,g){let x=g.x-y.x,S=g.y-y.y,w=m.x-y.x,b=m.y-y.y,_=x*b-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(x*w<0||S*b<0){r.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+b*b)){r.loc=e.BEYOND;return}let A;x!==0?A=w/x:A=b/S,r.loc=e.BETWEEN,r.t=A}function a(m,y){let g=[],x=[];for(let S=1;S<m.length;S++){let w=m[S-1],b=m[S];for(let _=1;_<y.length;_++){let A=y[_-1],v=y[_],M=o(w,b,A,v);M!==null&&g.find(O=>O.t<=M.t+Number.EPSILON&&O.t>=M.t-Number.EPSILON)===void 0&&(g.push(M),x.push(new Fn(M.x,M.y)))}}return x}function s(m,y,g){let x=new Fn;y.getCenter(x);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&a(m,w.points).forEach(_=>{S.push({identifier:w.identifier,isCW:w.isCW,point:_})})}),S.sort((w,b)=>w.point.x-b.point.x),S}function l(m,y,g,x,S){(S==null||S==="")&&(S="nonzero");let w=new Fn;m.boundingBox.getCenter(w);let b=[new Fn(g,w.y),new Fn(x,w.y)],_=s(b,m.boundingBox,y);_.sort((C,P)=>C.point.x-P.point.x);let A=[],v=[];_.forEach(C=>{C.identifier===m.identifier?A.push(C):v.push(C)});let M=A[0].point.x,O=[],T=0;for(;T<v.length&&v[T].point.x<M;)O.length>0&&O[O.length-1]===v[T].identifier?O.pop():O.push(v[T].identifier),T++;if(O.push(m.identifier),S==="evenodd"){let C=O.length%2===0,P=O[O.length-2];return{identifier:m.identifier,isHole:C,for:P}}else if(S==="nonzero"){let C=!0,P=null,I=null;for(let D=0;D<O.length;D++){let G=O[D];y[G]&&(C?(I=y[G].isCW,C=!1,P=G):I!==y[G].isCW&&(I=y[G].isCW,C=!0))}return{identifier:m.identifier,isHole:C,for:P}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let d=0,c=999999999,u=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,x=999999999,S=-999999999,w=999999999;for(let b=0;b<y.length;b++){let _=y[b];_.y>g&&(g=_.y),_.y<x&&(x=_.y),_.x>S&&(S=_.x),_.x<w&&(w=_.x)}u<=S&&(u=S+1),c>=w&&(c=w-1),y.length&&p.push({curves:m.curves,points:y,isCW:EO.isClockWise(y),identifier:d++,boundingBox:new IO(new Fn(w,x),new Fn(S,g))})});let f=p.map(m=>l(m,p,c,u,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let g=new NO;g.curves=m.curves,f.filter(S=>S?.isHole&&S.for===m.identifier).forEach(S=>{if(S){let w=p[S.identifier],b=new z0;b.curves=w.curves,g.holes.push(b)}}),h.push(g)}}),h}};var F0,wp=new Promise(n=>{F0=n}),k0=!1;var Hc;function j0(){if(k0)return;if(Hc)return Hc;async function n(){let e=await import("./opentype.js");F0(e),k0=!0}return Hc=n(),Hc}var Es=class{async load(t,e,r=()=>{}){let{load:o}=await wp;o(t,(i,a)=>{i||!a?r(i??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await wp;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 LO(n){return await(await fetch(n)).arrayBuffer()}var BO=new Es;async function _p(n){let t,e,r=!1;if(n.url?(t=await LO(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){let o=await BO.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}}import{CubicBezierCurve as RO,LineCurve as VO,QuadraticBezierCurve as GO}from"three";function zO(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var qc=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=_p(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=_p(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 d=0;d<r.length;d++){let c=r[d].index,u=String.fromCharCode(r[d].unicode),p=i[s];if(zO(c,p)||l)a.push({char:u,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:u,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(x=>this.getTextWidth(x,e)),s=e.width,l=this.getCharWidth(`
|
|
2230
2230
|
`,e),d=e.horizontalAlign===1?l:0,c=this.computeSpaceWidthForLine(t,0,e),u=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(x=>[]),m=t.map(x=>[]),y;for(let x=0;x<t.length;x++){let S=t[x],w={features:{liga:!0}},b=[];try{b=r.stringToGlyphs(S,w)}catch(A){console.warn(A)}u=this.getLineInitialOffsetX(a[x],s,e.horizontalAlign,S,l);let _=[];try{_=this.reverseLigaturesTable(r,S,b)}catch(A){console.warn(A)}c=this.computeSpaceWidthForLine(t,x,e);for(let A=0;A<b.length;A++){let v=b[A],M=v.index===0?`
|
|
2231
2231
|
`:v.unicode?String.fromCharCode(v.unicode):void 0,O=_[A],T=0,C=0;A===0&&e.horizontalAlign===2&&v.leftSideBearing!==void 0&&(C=-v.leftSideBearing*o),y&&(T=r.getKerningValue(v,y)*o),u+=C+T;let P=0;if(M===`
|
|
2232
|
-
`)P=d;else if(M===" ")P=c;else{let I=this.createPath(v,o,u,p,e);I&&(P=I.offsetX-(T+C),f.push(I.path))}if(O.replacements.length===1)m[x].push([u,p]),h[x].push(P);else{let I=O.replacements.map(F=>(r.glyphs.get(F).advanceWidth??0)*o),
|
|
2233
|
-
`)>=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,d=-this.ascender*o-l/2;return i===3?-(r-a-d):i===2?-(r*.5-a*.5-d):d}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 Uc,l=(t.advanceWidth??1)*e;if(t)for(let d of a.commands){let c=s.currentPath?.currentPoint;if(!(c&&d.type!=="Z"&&c.x===d.x&&-c.y===d.y))switch(d.type){case"M":s.moveTo(d.x,-d.y);break;case"L":s.lineTo(d.x,-d.y);break;case"Q":s.quadraticCurveTo(d.x1,-d.y1,d.x,-d.y);break;case"C":s.bezierCurveTo(d.x1,-d.y1,d.x2,-d.y2,d.x,-d.y);break}}return s.subPaths.forEach(d=>{let c=zO(d.curves);c!==void 0&&d.currentPoint.distanceTo(c)>0&&d.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 zO(n){if(n.length){let t=n[0];if(t instanceof RO)return t.v1;if(t instanceof BO||t instanceof VO)return t.v0}}var Ap=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()}},Ds=class extends Ap{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let i=Nn(e,r,this.flatShading,o);return i.computeBoundingSphere(),i}};var U0={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as H0}from"three";var Tp=class extends Gc{constructor(e){super();this.shared=e}create(e){return new Ca(e,this.shared)}},jn=class{constructor(t,e={}){this.data=t;this.geometryCache=new Ds(!0);this.geometryCache2=new Ds(!1);this.imageHolderCache=new Tp(this);this.thisContext={scene:U0,shared:this};this.deletedMaterial=new zn(Pt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new pr(Ri.emptyImage,this);this.deletedVideo=new pr(Pi.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};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);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.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 zn(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 Gn(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)}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 an(e.r,e.g,e.b,e.a):this.colors[t]=new an(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 ht(0,0,0,0))}else return"a"in t?new ht(t.r,t.g,t.b,t.a):new ht(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 kn)return e;{let r=new kn({src:e.data});return this.audios[t]=r,r}}deleteAudio(t){let e=this.audios[t];e&&(e instanceof kn&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new qc(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 kn&&e.dispose()}),this.audios={},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,d={scene:o,shared:this},c=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(c,l,d)});let u=this.materials[s];u&&u.onVariableUpdate(c,l,d)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(i,1);continue}if(a[1]!=="geometry"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"?s[a[a.length-1]]=r*H0.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),Ae.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 d=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(d.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.instances.forEach(c=>{let u=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(u.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*=H0.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],i=o.locations?.findIndex(a=>ot.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.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]==="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]==="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(nt.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(nt.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)}}},q0=new jn(br.emptyData());var Jt=class extends It{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Dm(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(Dt(e.path,["material"])&&this.material instanceof Zt)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(nt.drop(e,1),r.material,o);else if(Dt(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(nt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;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&&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&&$s(this.material).forEach(e=>{e instanceof Zt&&(e instanceof zn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as FO,Matrix4 as Cp,Vector3 as K0,Vector4 as Pp}from"three";var W0=new K0,$0=new Pp,Y0=new Pp,jO=new K0,X0=new Cp,st=class extends Jt{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 Cp().fromArray(r.bindMatrix),this.bindMatrixInverse=new Cp)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof FO&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof jn){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 os.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return os.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Dt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(nt.drop(e,1),r.geometry,o)}removeInteractionGeometry(){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=Nn(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 d=this.localGeometry.userData;d.sxPrev!==void 0&&Ss(this.localGeometry.attributes,a/d.sxPrev,s/d.syPrev,l/d.szPrev),d.sxPrev=a,d.syPrev=s,d.szPrev=l}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Nn(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 at&&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 Pp,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;$0.fromBufferAttribute(i.attributes.skinIndex,e),Y0.fromBufferAttribute(i.attributes.skinWeight,e),W0.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=Y0.getComponent(a);if(s!==0){let l=$0.getComponent(a);X0.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(jO.copy(W0).applyMatrix4(X0),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function HO(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 Mp(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Mp})}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 Q0(i,3))}function qO(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 Mp;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 Q0(r,3))}function Oa(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Zt)||n.material.getLayersOfType("outline").length===0)return;n instanceof st&&n.is2DAndNoDepth?qO(n):HO(n)}function Ma(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=[Op.seededRandom(o),Op.seededRandom(o+1e4),Op.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=i[a%3];n.geometry.setAttribute("randomColor",new UO(r,3))}var XO;ra.then(n=>{XO=n});var ro=new WO,Bs=new YO;function J0(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var Un=class extends st{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new $O;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}=at.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,Oa(this),Ma(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=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){at.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&at.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=at.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=at.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,It.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 Z0,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;ro.setFromBufferAttribute(r),ro.getCenter(o),e.boundingSphere.radius=o.distanceTo(ro.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ro.getSize(Bs),this.hasNonUniformScale&&Bs.divide(this.scale);let i={width:Bs.x,height:Bs.y,depth:Bs.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let r=this.originalGeometry;ro.min.set(e[0],e[2],e[4]),ro.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(ro.min.applyMatrix4(this.shearScaleInv),ro.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Z0);let o=r.boundingSphere.center;ro.getCenter(o),r.boundingSphere.radius=o.distanceTo(ro.max)}freeSubdivPointer(){this.subdivPointer&&(at.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 KO,Vector3 as qn}from"three";var ex=-1,QO=1,tx={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},rx={polygon_center:0,edge:1,vertex:2},Rs=(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-ex)*(e-r)/(QO-ex)+r};function ox(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 ZO=new qn,Wc=new qn,JO=new qn,eM=new qn;function Ia(n,t){let e=JO.fromArray(n),r=eM.fromArray(t);Wc.copy(r).sub(e);let o=Wc.length();return Wc.normalize().multiplyScalar(o*.5),ZO.copy(e).add(Wc).toArray()}var hr=new KO,$c=new qn,Yc=new qn,Hn=new qn;function nx(n){let t=[];for(let e=0;e<=n.index.count;e++)if($c.fromArray(n.index.array,e*3),hr.setFromAttributeAndIndices(n.attributes.position,$c.x,$c.y,$c.z),hr.getNormal(Yc),hr.getMidpoint(Hn),!(isNaN(Hn.x)||isNaN(Hn.y)||isNaN(Hn.z))){let{a:r,b:o,c:i}=hr,a=r.toArray(),s=o.toArray(),l=i.toArray(),d=r.distanceTo(o),c=o.distanceTo(i),u=i.distanceTo(r),p=Ia(a,s),f=Ia(s,l),h=Ia(l,a),m=[d,c,u],y=Math.max(...m),g=m.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],S=hr.getMidpoint(Hn).toArray();y===d&&!g&&(x=[f,h,h],S=p),y===c&&!g&&(x=[p,h,h],S=f),y===u&&!g&&(x=[p,f,f],S=h),g&&(x=[p,f,h]),t.push({vertices:[a,s,l],faceCenters:x,midpoint:S,norm:hr.getNormal(Yc).toArray()})}return t}function ix(n){let t=[],{position:e}=n.attributes;for(let r=0;r<e.count;r++){hr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),hr.getNormal(Yc),hr.getMidpoint(Hn);let o=hr.a.toArray(),i=hr.b.toArray(),a=hr.c.toArray();t.push({vertices:[o,i,a],faceCenters:[Ia(o,i),Ia(i,a),Ia(a,o)],midpoint:Hn.toArray(),norm:Yc.toArray()})}return t}var tM=4,rM=.5,Ip=n=>.5*(1-Math.cos(n*Math.PI)),Np=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,d=r-a,c,u,p=0,f=.5,h,m,y;for(let g=0;g<tM;g++){let x=o+(i<<4)+(a<<8);c=Ip(s),u=Ip(l),h=this.perlin[x&4095],h+=c*(this.perlin[x+1&4095]-h),m=this.perlin[x+16&4095],m+=c*(this.perlin[x+16+1&4095]-m),h+=u*(m-h),x+=256,m=this.perlin[x&4095],m+=c*(this.perlin[x+1&4095]-m),y=this.perlin[x+16&4095],y+=c*(this.perlin[x+16+1&4095]-y),m+=u*(y-m),h+=Ip(d)*(m-h),p+=h*f,f*=rM,o<<=1,s*=2,i<<=1,l*=2,a<<=1,d*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),d>=1&&(a++,d--)}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()}},ax=Np;import{Vector3 as oM,Matrix4 as nM,Ray as iM}from"three";var sx=new oM,lx=new nM,cx=new iM;function ux(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var Na=class extends st{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)&&(lx.copy(o).invert(),cx.copy(e.ray).applyMatrix4(lx),cx.intersectBox(this.singleBBox,sx))){let i=sx.applyMatrix4(o),a=e.ray.origin.distanceTo(i);r.push({distance:a,point:i.clone(),object:this})}}};var jt=1e-4,oo,hx,mx,yx,px=new lr,fx=new lr;ra.then(n=>{oo=n,hx=[oo.get_face_center,oo.get_edge_midpoint,oo.get_vertex_position],mx=[oo.get_face_normal,oo.get_edge_normal,oo.get_vertex_normal],yx=[oo.face_count,oo.edge_count,oo.vertex_count]});var sM=new $n,lM=new $n,ln=new lr,Wn=new lr,Vs=new lr,Lp=new lr,cM=new lr,uM=new lr;var Po=new ax,La=class extends zi(aM){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 wo&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof wo&&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 wo(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 wo(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*dx.DEG2RAD,i=r.end*dx.DEG2RAD,a=o-i,s=new Ep(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new lr(0,0,1);break;case"y":l=new lr(0,1,0);break;default:case"x":l=new lr(1,0,0);break}let d=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,c=d.noiseType==="perlin";Po.noiseSeed(d.seed);let u=tc((0,Ea.default)(d.seed)),p=Rs(d.strength,this.parameters.randomness);for(let[f,h]of this.children.entries()){let m=f*(d.freqScale/10)+d.movement,y=c?Po.noise(m):u(m,m),g=f+1;h.scale.x=r.scale[0]+p(g,ve(y,d.scale[0]))||jt,h.scale.y=r.scale[1]+p(g,ve(y,d.scale[1]))||jt,h.scale.z=r.scale[2]+p(g,ve(y,d.scale[2]))||jt,h.position.setScalar(0);let x=a/e.count*f-o;switch(r.axis){case"x":h.rotation.set(0,x,0);break;case"y":h.rotation.set(0,0,x);break;case"z":h.rotation.set(x,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0]+p(g,ve(y,d.position[0])),h.position.y+=r.position[1]+p(g,ve(y,d.position[1])),h.position.z+=r.position[2]+p(g,ve(y,d.position[2]));let S=p(g,ve(y,d.rotation[0])),w=p(g,ve(y,d.rotation[1])),b=p(g,ve(y,d.rotation[2]));r.alignment===!0?(h.rotation.x+=s.x+S,h.rotation.y+=s.y+w,h.rotation.z+=s.z+b):h.rotation.set(s.x+S,s.y+w,s.z+b)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Ep(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Po.noiseSeed(i.seed);let s=tc((0,Ea.default)(i.seed)),l=Rs(i.strength,this.parameters.randomness);for(let[d,c]of this.children.entries()){let u=d*(i.freqScale/10)+i.movement,p=a?Po.noise(u):s(u,u),f=d+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)*d+l(f,ve(p,i.scale[0]))||jt,c.scale.y=1+(r.scale[1]-1)*d+l(f,ve(p,i.scale[1]))||jt,c.scale.z=1+(r.scale[2]-1)*d+l(f,ve(p,i.scale[2]))||jt,c.rotation.x=o.x*d+h,c.rotation.y=o.y*d+m,c.rotation.z=o.z*d+y,c.position.x=r.position[0]*d+l(f,ve(p,i.position[0])),c.position.y=r.position[1]*d+l(f,ve(p,i.position[1])),c.position.z=r.position[2]*d+l(f,ve(p,i.position[2]))}}_updateGrid(e){let r=0,o=e.grid,i=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,a=Rs(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Po.noiseSeed(i.seed);let l=Ry((0,Ea.default)(i.seed));if(o.useCenter===!0){let d={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 lr(o.size[0]*(o.count[0]-d.x)*.5,o.size[1]*(o.count[1]-d.y)*.5,o.size[2]*(o.count[2]-d.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let h=[(u+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],m=s?Po.noise(...h):l(...h),y=this.children[r++];y.scale.x=1+a(r,ve(m,i.scale[0]))||jt,y.scale.y=1+a(r,ve(m,i.scale[1]))||jt,y.scale.z=1+a(r,ve(m,i.scale[2]))||jt;let g=a(r,ve(m,i.rotation[0])),x=a(r,ve(m,i.rotation[1])),S=a(r,ve(m,i.rotation[2]));y.rotation.set(g,x,S),y.position.x=o.size[0]*u-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 d=0;d<o.count[0];d++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let p=[(d+1)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement],f=s?Po.noise(...p):l(...p),h=this.children[r++];h.scale.x=1+a(r,ve(f,i.scale[0]))||jt,h.scale.y=1+a(r,ve(f,i.scale[1]))||jt,h.scale.z=1+a(r,ve(f,i.scale[2]))||jt;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]*d+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]*u+a(r,ve(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new Ep(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Po.noiseSeed(i.seed);let s=tc((0,Ea.default)(i.seed)),l=Rs(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 Na)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 d=this.getSubdivData(),c=[],u=g=>{let x=g.length,S=g.map(_=>_[0]).reduce((_,A)=>_+A,0),w=g.map(_=>_[1]).reduce((_,A)=>_+A,0),b=g.map(_=>_[2]).reduce((_,A)=>_+A,0);return[S/x,w/x,b/x]},p=g=>Math.round(g*1e6)/1e6;d.forEach(g=>{let x=d.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]));x.length>1?c.push({pos:g.pos,norm:u(x.map(S=>S.norm))}):c.push(g)});let f=ox(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 rc(this.objectForSample).build(),m=tx[r.axis],y=this.children;h.setRandomGenerator((0,Ea.default)(this.object.uuid+r.seed));for(let[g,x]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?Po.noise(S):s(S,S),b=g+1,_=l(b,ve(w,i.rotation[0])),A=l(b,ve(w,i.rotation[1])),v=l(b,ve(w,i.rotation[2]));r.spreadType==="random"?h.sample(Vs,Lp):(f.length&&(Vs.fromArray(f[g].pos),Lp.fromArray(f[g].norm)),this.objectForSample instanceof Un&&Vs.applyMatrix4(sM.copy(this.objectForSample.matrixWorld).invert())),Vs.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(Vs),ln.fromArray(m);let M=r.align==="normal"?Lp:this.object.getWorldDirection(uM),O=Wn.fromArray(r.position);Wn.x+=Wn.x+l(b,ve(w,i.position[0])),Wn.y+=Wn.y+l(b,ve(w,i.position[1])),Wn.z+=Wn.z+l(b,ve(w,i.position[2]));let T=Math.acos(M.dot(ln)),C=cM.crossVectors(ln,M).normalize(),P=lM.makeRotationAxis(C,T),I=M.clone().cross(this.object.up).normalize(),L=I.clone().cross(M).normalize(),G=new $n().makeBasis(I,M,L),N=new lr(ln.y,ln.z,ln.x).normalize(),F=N.clone().cross(ln).normalize(),B=new $n().makeBasis(N,ln,F).invert(),R=new $n().multiplyMatrices(G,B);x.rotation.setFromRotationMatrix(R),O.applyMatrix4(P),x.position.add(O),x.rotation.x=x.rotation.x+o.x+_,x.rotation.y=x.rotation.y+o.y+A,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+r.scale[0]+l(b,ve(w,i.scale[0]))||jt,x.scale.y=x.scale.y+r.scale[1]+l(b,ve(w,i.scale[1]))||jt,x.scale.z=x.scale.z+r.scale[2]+l(b,ve(w,i.scale[2]))||jt,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof Un){let r=this.objectForSample,o=rx[e],i=yx[o],a=hx[o],s=mx[o],l=[],d=i(r.subdivPointerNew);for(let c=0;c<=d-1;c++){let u=a(r.subdivPointerNew,c),p=s(r.subdivPointerNew,c);px.fromArray(u).applyMatrix4(r.matrixWorld),fx.fromArray(p),l.push({pos:px.toArray(),norm:fx.toArray()})}return l}else return(this.objectForSample.geometry.index?nx(this.objectForSample.geometry):ix(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=yo(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 It?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new $n,this.hiddenMatrix=new $n,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as iN,Vector3 as aN,Matrix4 as sN,Box3 as lN,MeshBasicMaterial as cN,Skeleton as uN}from"three";import{Camera as wM,OrthographicCamera as _M,PerspectiveCamera as AM,Vector3 as Lr,Object3D as bx,Quaternion as TM,Matrix4 as CM}from"three";import{Camera as yM,LineSegments as gM,BufferGeometry as xM,LineBasicMaterial as vM,Color as Bp,Vector3 as bM,Float32BufferAttribute as xx}from"three";import{BoxGeometry as dM}from"three";var no=n=>{var t;return t=class extends n{},t.geometryHelper=new dM(30,30,30),t};import{Ray as pM,Sphere as fM,Matrix4 as hM,Vector3 as Oo}from"three";var Xc=new pM,Dp=new fM,gx=new hM,io=(n,t,e,r,o=!1)=>{let i=t,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Dp.copy(i.boundingSphere),Dp.applyMatrix4(a),e.ray.intersectsSphere(Dp)===!1||(gx.copy(a).invert(),Xc.copy(e.ray).applyMatrix4(gx),i.boundingBox!==null&&Xc.intersectsBox(i.boundingBox)===!1))return;let s,l,d,c,u=i.index,p=i.attributes.position,f=i.drawRange,h,m;if(o===!1){let g=Math.max(0,f.start),x=Math.min(u.count,f.start+f.count);for(h=g,m=x;h<m;h+=3)if(l=u.getX(h),d=u.getX(h+1),c=u.getX(h+2),s=y(n,e,Xc,p,l,d,c),s){s.faceIndex=Math.floor(h/3),r.push(s);return}}else{let x=i.attributes.position,S=new Oo,w=new Oo,b=new Oo,_=new Oo,A=2,M=1/((n.scale.x+n.scale.y+n.scale.z)/3),O=M*M,T=Math.max(0,f.start),C=Math.min(x.count,f.start+f.count);for(let P=T,I=C-1;P<I;P+=A){if(S.fromBufferAttribute(x,P),w.fromBufferAttribute(x,P+1),Xc.distanceSqToSegment(S,w,_,b)>O)continue;_.applyMatrix4(n.matrixWorld);let G=e.ray.origin.distanceTo(_);G<e.near||G>e.far||r.push({distance:G,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,S,w,b,_,A){let v=new Oo,M=new Oo,O=new Oo,T=new Oo,C=new Oo;if(v.fromBufferAttribute(w,b),M.fromBufferAttribute(w,_),O.fromBufferAttribute(w,A),S.intersectTriangle(v,M,O,!1,T)===null)return null;C.copy(T),C.applyMatrix4(g.matrixWorld);let I=x.ray.origin.distanceTo(C);return I<x.near||I>x.far?null:{faceIndex:1,distance:I,point:C.clone(),object:g}}};var Kc=new bM,mr=new yM,Rp=class extends gM{constructor(e){let r=new xM,o=new vM({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new Bp(15711266),d=new Bp(15711266),c=new Bp(2857471);u("n1","n2",l),u("n2","n4",l),u("n4","n3",l),u("n3","n1",l),u("f1","f2",l),u("f2","f4",l),u("f4","f3",l),u("f3","f1",l),u("n1","f1",l),u("n2","f2",l),u("n3","f3",l),u("n4","f4",l),u("p","n1",d),u("p","n2",d),u("p","n3",d),u("p","n4",d),u("u1","u2",c),u("u2","u3",c),u("u3","u1",c);function u(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 xx(i,3)),r.setAttribute("color",new xx(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;mr.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;Er("n1",r,e,mr,-i,-a,s),Er("n2",r,e,mr,i,-a,s),Er("n3",r,e,mr,-i,a,s),Er("n4",r,e,mr,i,a,s);let l=s;Er("f1",r,e,mr,-i,-a,l),Er("f2",r,e,mr,i,-a,l),Er("f3",r,e,mr,-i,a,l),Er("f4",r,e,mr,i,a,l);let d=l,c=.5;Er("u1",r,e,mr,i*.7*c,a*1.1,d),Er("u2",r,e,mr,-i*.7*c,a*1.1,d),Er("u3",r,e,mr,0,a*(1.1+.9*c),d),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Er(n,t,e,r,o,i,a){Kc.set(o,i,a).unproject(r);let s=t[n];if(s!==void 0){let l=e.getAttribute("position");for(let d=0,c=s.length;d<c;d++)l.setXYZ(s[d],Kc.x,Kc.y,Kc.z)}}var Qc=class extends no(Rp){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){io(this.object,this.geometry,e,r,!0)}};import{Box3Helper as vx,BoxGeometry as SM}from"three";var Zc;(t=>t.is=e=>"objectHelper"in e)(Zc||(Zc={}));var ao=(n,t)=>class extends ji(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 vx&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof SM?(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 vx&&(i.visible=!1)}}};var Jc=790,Da=new Lr,Vp=new Lr,Gp=new TM,zp=new Lr,Gs=new Lr,kp=new Lr,Mo=class extends ao(wM,Qc){constructor(e="",r={...Tn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=qo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new CM,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new _M(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new AM(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 Lr(e,r,o)),super.lookAt(e),this.getWorldPosition(Da),this.targetOffset=Da.distanceTo(e)}getTarget(e=new Lr){return this.getWorldDirection(Vp),this.getWorldPosition(Da),Vp.multiplyScalar(this.targetOffset),e.copy(Da).add(Vp),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Da),Da.distanceTo(e)}updateUp(){this.getWorldQuaternion(Gp),zp.set(0,0,1).applyQuaternion(Gp),Gs.copy(bx.DEFAULT_UP),this.isUpVectorFlipped&&Gs.negate(),Gs.applyQuaternion(Gp),kp.copy(bx.DEFAULT_UP).projectOnPlane(zp),this.angleOffsetFromUp=kp.angleTo(Gs),this.angleOffsetFromUp*=kp.cross(Gs).dot(zp)>=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 Lr),i=e.getWorldDirection(new Lr).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Lr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Lr,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=-Jc*.5*i,this.right=Jc*.5*i,this.top=Jc*.5*(1/a),this.bottom=-Jc*.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 ZJ}from"three";import{BufferGeometry as Sx,Matrix4 as Fp,Float32BufferAttribute as PM,Vector3 as Ax}from"three";var Ba=new Fp,OM=new Fp,eu=new Fp,wx=new Ax,_x=new Ax;var yr=class extends Jt{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Sx;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 yr&&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 It&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){Ba.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=dr.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;dr.transformMeshSet(a.booleanMeshSetAddress,Ba),a.booleanMatrixInvOld.copy(Ba).invert(),a.booleanWasTransformed=!1}else a instanceof yr&&a.needsTransformForDownstream===!0?(dr.transformMeshSet(a.booleanMeshSetAddress,Ba),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(dr.transformMeshSet(a.booleanMeshSetAddress,OM.multiplyMatrices(Ba,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Ba).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}dr.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 PM([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return dr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Sx,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=dr.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,Oa(this),Ma(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),eu.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(eu),wx.copy(e.max).applyMatrix4(eu),_x.copy(e.min).applyMatrix4(eu),this.geometry.boundingSphere.radius=wx.distanceTo(_x)/2),e}};import{Light as MM}from"three";var Tx;(t=>{function n(e){return Ae.is(e)&&e instanceof MM}t.is=n})(Tx||(Tx={}));var Ra=(n,t)=>class extends ao(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 cn=n=>n instanceof It,Va=n=>n!==null&&n instanceof yr;var zs=n=>Zc.is(n);import{Group as NM}from"three";import{AxesHelper as IM}from"three";var so=class extends no(IM){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){io(this.object,so.geometryHelper,e,r)}update(){}};var un=class extends ao(NM,so){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{Color as qM,Fog as WM,HemisphereLight as $M}from"three";import{ShaderChunk as ks}from"three";var EM=n=>`
|
|
2232
|
+
`)P=d;else if(M===" ")P=c;else{let I=this.createPath(v,o,u,p,e);I&&(P=I.offsetX-(T+C),f.push(I.path))}if(O.replacements.length===1)m[x].push([u,p]),h[x].push(P);else{let I=O.replacements.map(F=>(r.glyphs.get(F).advanceWidth??0)*o),D=I.reduce((F,B)=>F+=B,0),G=I.map(F=>F/D),N=u;for(let F=0;F<G.length;F++){let B=P*G[F];m[x].push([N,p]),h[x].push(B),N+=B}}u+=P,y=v}p-=i}let g=[];for(let x=0,S=f.length;x<S;x++)g.push(...f[x].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(`
|
|
2233
|
+
`)>=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,d=-this.ascender*o-l/2;return i===3?-(r-a-d):i===2?-(r*.5-a*.5-d):d}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 Uc,l=(t.advanceWidth??1)*e;if(t)for(let d of a.commands){let c=s.currentPath?.currentPoint;if(!(c&&d.type!=="Z"&&c.x===d.x&&-c.y===d.y))switch(d.type){case"M":s.moveTo(d.x,-d.y);break;case"L":s.lineTo(d.x,-d.y);break;case"Q":s.quadraticCurveTo(d.x1,-d.y1,d.x,-d.y);break;case"C":s.bezierCurveTo(d.x1,-d.y1,d.x2,-d.y2,d.x,-d.y);break}}return s.subPaths.forEach(d=>{let c=kO(d.curves);c!==void 0&&d.currentPoint.distanceTo(c)>0&&d.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 kO(n){if(n.length){let t=n[0];if(t instanceof VO)return t.v1;if(t instanceof RO||t instanceof GO)return t.v0}}var Ap=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()}},Ds=class extends Ap{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let i=Nn(e,r,this.flatShading,o);return i.computeBoundingSphere(),i}};var U0={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as H0}from"three";var Tp=class extends Gc{constructor(e){super();this.shared=e}create(e){return new Ca(e,this.shared)}},jn=class{constructor(t,e={}){this.data=t;this.geometryCache=new Ds(!0);this.geometryCache2=new Ds(!1);this.imageHolderCache=new Tp(this);this.thisContext={scene:U0,shared:this};this.deletedMaterial=new zn(Pt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new fr(Ri.emptyImage,this);this.deletedVideo=new fr(Pi.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};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);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.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 zn(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 Gn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new fr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new fr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new an(e.r,e.g,e.b,e.a):this.colors[t]=new an(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 ht(0,0,0,0))}else return"a"in t?new ht(t.r,t.g,t.b,t.a):new ht(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 kn)return e;{let r=new kn({src:e.data});return this.audios[t]=r,r}}deleteAudio(t){let e=this.audios[t];e&&(e instanceof kn&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new qc(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 kn&&e.dispose()}),this.audios={},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,d={scene:o,shared:this},c=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(c,l,d)});let u=this.materials[s];u&&u.onVariableUpdate(c,l,d)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(i,1);continue}if(a[1]!=="geometry"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"?s[a[a.length-1]]=r*H0.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),Ae.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 d=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(d.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.instances.forEach(c=>{let u=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(u.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*=H0.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],i=o.locations?.findIndex(a=>ot.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.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]==="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]==="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(nt.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(nt.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)}}},q0=new jn(br.emptyData());var Jt=class extends It{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Lm(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(Lt(e.path,["material"])&&this.material instanceof Zt)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(nt.drop(e,1),r.material,o);else if(Lt(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(nt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;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&&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&&$s(this.material).forEach(e=>{e instanceof Zt&&(e instanceof zn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as jO,Matrix4 as Cp,Vector3 as K0,Vector4 as Pp}from"three";var W0=new K0,$0=new Pp,Y0=new Pp,UO=new K0,X0=new Cp,st=class extends Jt{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 Cp().fromArray(r.bindMatrix),this.bindMatrixInverse=new Cp)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof jO&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof jn){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 rs.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return rs.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Lt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(nt.drop(e,1),r.geometry,o)}removeInteractionGeometry(){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=Nn(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 d=this.localGeometry.userData;d.sxPrev!==void 0&&bs(this.localGeometry.attributes,a/d.sxPrev,s/d.syPrev,l/d.szPrev),d.sxPrev=a,d.syPrev=s,d.szPrev=l}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Nn(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 at&&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 Pp,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;$0.fromBufferAttribute(i.attributes.skinIndex,e),Y0.fromBufferAttribute(i.attributes.skinWeight,e),W0.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=Y0.getComponent(a);if(s!==0){let l=$0.getComponent(a);X0.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(UO.copy(W0).applyMatrix4(X0),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function qO(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 Mp(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Mp})}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 Q0(i,3))}function WO(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 Mp;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 Q0(r,3))}function Oa(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Zt)||n.material.getLayersOfType("outline").length===0)return;n instanceof st&&n.is2DAndNoDepth?WO(n):qO(n)}function Ma(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=[Op.seededRandom(o),Op.seededRandom(o+1e4),Op.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=i[a%3];n.geometry.setAttribute("randomColor",new HO(r,3))}var KO;ra.then(n=>{KO=n});var ro=new $O,Ls=new XO;function J0(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var Un=class extends st{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new YO;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}=at.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,Oa(this),Ma(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=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){at.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&at.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=at.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=at.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,It.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 Z0,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;ro.setFromBufferAttribute(r),ro.getCenter(o),e.boundingSphere.radius=o.distanceTo(ro.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ro.getSize(Ls),this.hasNonUniformScale&&Ls.divide(this.scale);let i={width:Ls.x,height:Ls.y,depth:Ls.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let r=this.originalGeometry;ro.min.set(e[0],e[2],e[4]),ro.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(ro.min.applyMatrix4(this.shearScaleInv),ro.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Z0);let o=r.boundingSphere.center;ro.getCenter(o),r.boundingSphere.radius=o.distanceTo(ro.max)}freeSubdivPointer(){this.subdivPointer&&(at.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 QO,Vector3 as qn}from"three";var ex=-1,ZO=1,tx={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},rx={polygon_center:0,edge:1,vertex:2},Bs=(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-ex)*(e-r)/(ZO-ex)+r};function ox(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 JO=new qn,Wc=new qn,eM=new qn,tM=new qn;function Ia(n,t){let e=eM.fromArray(n),r=tM.fromArray(t);Wc.copy(r).sub(e);let o=Wc.length();return Wc.normalize().multiplyScalar(o*.5),JO.copy(e).add(Wc).toArray()}var mr=new QO,$c=new qn,Yc=new qn,Hn=new qn;function nx(n){let t=[];for(let e=0;e<=n.index.count;e++)if($c.fromArray(n.index.array,e*3),mr.setFromAttributeAndIndices(n.attributes.position,$c.x,$c.y,$c.z),mr.getNormal(Yc),mr.getMidpoint(Hn),!(isNaN(Hn.x)||isNaN(Hn.y)||isNaN(Hn.z))){let{a:r,b:o,c:i}=mr,a=r.toArray(),s=o.toArray(),l=i.toArray(),d=r.distanceTo(o),c=o.distanceTo(i),u=i.distanceTo(r),p=Ia(a,s),f=Ia(s,l),h=Ia(l,a),m=[d,c,u],y=Math.max(...m),g=m.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],S=mr.getMidpoint(Hn).toArray();y===d&&!g&&(x=[f,h,h],S=p),y===c&&!g&&(x=[p,h,h],S=f),y===u&&!g&&(x=[p,f,f],S=h),g&&(x=[p,f,h]),t.push({vertices:[a,s,l],faceCenters:x,midpoint:S,norm:mr.getNormal(Yc).toArray()})}return t}function ix(n){let t=[],{position:e}=n.attributes;for(let r=0;r<e.count;r++){mr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),mr.getNormal(Yc),mr.getMidpoint(Hn);let o=mr.a.toArray(),i=mr.b.toArray(),a=mr.c.toArray();t.push({vertices:[o,i,a],faceCenters:[Ia(o,i),Ia(i,a),Ia(a,o)],midpoint:Hn.toArray(),norm:Yc.toArray()})}return t}var rM=4,oM=.5,Ip=n=>.5*(1-Math.cos(n*Math.PI)),Np=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,d=r-a,c,u,p=0,f=.5,h,m,y;for(let g=0;g<rM;g++){let x=o+(i<<4)+(a<<8);c=Ip(s),u=Ip(l),h=this.perlin[x&4095],h+=c*(this.perlin[x+1&4095]-h),m=this.perlin[x+16&4095],m+=c*(this.perlin[x+16+1&4095]-m),h+=u*(m-h),x+=256,m=this.perlin[x&4095],m+=c*(this.perlin[x+1&4095]-m),y=this.perlin[x+16&4095],y+=c*(this.perlin[x+16+1&4095]-y),m+=u*(y-m),h+=Ip(d)*(m-h),p+=h*f,f*=oM,o<<=1,s*=2,i<<=1,l*=2,a<<=1,d*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),d>=1&&(a++,d--)}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()}},ax=Np;import{Vector3 as nM,Matrix4 as iM,Ray as aM}from"three";var sx=new nM,lx=new iM,cx=new aM;function ux(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var Na=class extends st{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)&&(lx.copy(o).invert(),cx.copy(e.ray).applyMatrix4(lx),cx.intersectBox(this.singleBBox,sx))){let i=sx.applyMatrix4(o),a=e.ray.origin.distanceTo(i);r.push({distance:a,point:i.clone(),object:this})}}};var jt=1e-4,oo,hx,mx,yx,px=new cr,fx=new cr;ra.then(n=>{oo=n,hx=[oo.get_face_center,oo.get_edge_midpoint,oo.get_vertex_position],mx=[oo.get_face_normal,oo.get_edge_normal,oo.get_vertex_normal],yx=[oo.face_count,oo.edge_count,oo.vertex_count]});var lM=new $n,cM=new $n,ln=new cr,Wn=new cr,Rs=new cr,Dp=new cr,uM=new cr,dM=new cr;var Po=new ax,Da=class extends zi(sM){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 wo&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof wo&&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 wo(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 wo(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*dx.DEG2RAD,i=r.end*dx.DEG2RAD,a=o-i,s=new Ep(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new cr(0,0,1);break;case"y":l=new cr(0,1,0);break;default:case"x":l=new cr(1,0,0);break}let d=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,c=d.noiseType==="perlin";Po.noiseSeed(d.seed);let u=tc((0,Ea.default)(d.seed)),p=Bs(d.strength,this.parameters.randomness);for(let[f,h]of this.children.entries()){let m=f*(d.freqScale/10)+d.movement,y=c?Po.noise(m):u(m,m),g=f+1;h.scale.x=r.scale[0]+p(g,ve(y,d.scale[0]))||jt,h.scale.y=r.scale[1]+p(g,ve(y,d.scale[1]))||jt,h.scale.z=r.scale[2]+p(g,ve(y,d.scale[2]))||jt,h.position.setScalar(0);let x=a/e.count*f-o;switch(r.axis){case"x":h.rotation.set(0,x,0);break;case"y":h.rotation.set(0,0,x);break;case"z":h.rotation.set(x,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0]+p(g,ve(y,d.position[0])),h.position.y+=r.position[1]+p(g,ve(y,d.position[1])),h.position.z+=r.position[2]+p(g,ve(y,d.position[2]));let S=p(g,ve(y,d.rotation[0])),w=p(g,ve(y,d.rotation[1])),b=p(g,ve(y,d.rotation[2]));r.alignment===!0?(h.rotation.x+=s.x+S,h.rotation.y+=s.y+w,h.rotation.z+=s.z+b):h.rotation.set(s.x+S,s.y+w,s.z+b)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Ep(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Po.noiseSeed(i.seed);let s=tc((0,Ea.default)(i.seed)),l=Bs(i.strength,this.parameters.randomness);for(let[d,c]of this.children.entries()){let u=d*(i.freqScale/10)+i.movement,p=a?Po.noise(u):s(u,u),f=d+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)*d+l(f,ve(p,i.scale[0]))||jt,c.scale.y=1+(r.scale[1]-1)*d+l(f,ve(p,i.scale[1]))||jt,c.scale.z=1+(r.scale[2]-1)*d+l(f,ve(p,i.scale[2]))||jt,c.rotation.x=o.x*d+h,c.rotation.y=o.y*d+m,c.rotation.z=o.z*d+y,c.position.x=r.position[0]*d+l(f,ve(p,i.position[0])),c.position.y=r.position[1]*d+l(f,ve(p,i.position[1])),c.position.z=r.position[2]*d+l(f,ve(p,i.position[2]))}}_updateGrid(e){let r=0,o=e.grid,i=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,a=Bs(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Po.noiseSeed(i.seed);let l=Ry((0,Ea.default)(i.seed));if(o.useCenter===!0){let d={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 cr(o.size[0]*(o.count[0]-d.x)*.5,o.size[1]*(o.count[1]-d.y)*.5,o.size[2]*(o.count[2]-d.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let h=[(u+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],m=s?Po.noise(...h):l(...h),y=this.children[r++];y.scale.x=1+a(r,ve(m,i.scale[0]))||jt,y.scale.y=1+a(r,ve(m,i.scale[1]))||jt,y.scale.z=1+a(r,ve(m,i.scale[2]))||jt;let g=a(r,ve(m,i.rotation[0])),x=a(r,ve(m,i.rotation[1])),S=a(r,ve(m,i.rotation[2]));y.rotation.set(g,x,S),y.position.x=o.size[0]*u-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 d=0;d<o.count[0];d++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let p=[(d+1)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement],f=s?Po.noise(...p):l(...p),h=this.children[r++];h.scale.x=1+a(r,ve(f,i.scale[0]))||jt,h.scale.y=1+a(r,ve(f,i.scale[1]))||jt,h.scale.z=1+a(r,ve(f,i.scale[2]))||jt;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]*d+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]*u+a(r,ve(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new Ep(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Po.noiseSeed(i.seed);let s=tc((0,Ea.default)(i.seed)),l=Bs(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 Na)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 d=this.getSubdivData(),c=[],u=g=>{let x=g.length,S=g.map(_=>_[0]).reduce((_,A)=>_+A,0),w=g.map(_=>_[1]).reduce((_,A)=>_+A,0),b=g.map(_=>_[2]).reduce((_,A)=>_+A,0);return[S/x,w/x,b/x]},p=g=>Math.round(g*1e6)/1e6;d.forEach(g=>{let x=d.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]));x.length>1?c.push({pos:g.pos,norm:u(x.map(S=>S.norm))}):c.push(g)});let f=ox(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 rc(this.objectForSample).build(),m=tx[r.axis],y=this.children;h.setRandomGenerator((0,Ea.default)(this.object.uuid+r.seed));for(let[g,x]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?Po.noise(S):s(S,S),b=g+1,_=l(b,ve(w,i.rotation[0])),A=l(b,ve(w,i.rotation[1])),v=l(b,ve(w,i.rotation[2]));r.spreadType==="random"?h.sample(Rs,Dp):(f.length&&(Rs.fromArray(f[g].pos),Dp.fromArray(f[g].norm)),this.objectForSample instanceof Un&&Rs.applyMatrix4(lM.copy(this.objectForSample.matrixWorld).invert())),Rs.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(Rs),ln.fromArray(m);let M=r.align==="normal"?Dp:this.object.getWorldDirection(dM),O=Wn.fromArray(r.position);Wn.x+=Wn.x+l(b,ve(w,i.position[0])),Wn.y+=Wn.y+l(b,ve(w,i.position[1])),Wn.z+=Wn.z+l(b,ve(w,i.position[2]));let T=Math.acos(M.dot(ln)),C=uM.crossVectors(ln,M).normalize(),P=cM.makeRotationAxis(C,T),I=M.clone().cross(this.object.up).normalize(),D=I.clone().cross(M).normalize(),G=new $n().makeBasis(I,M,D),N=new cr(ln.y,ln.z,ln.x).normalize(),F=N.clone().cross(ln).normalize(),B=new $n().makeBasis(N,ln,F).invert(),R=new $n().multiplyMatrices(G,B);x.rotation.setFromRotationMatrix(R),O.applyMatrix4(P),x.position.add(O),x.rotation.x=x.rotation.x+o.x+_,x.rotation.y=x.rotation.y+o.y+A,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+r.scale[0]+l(b,ve(w,i.scale[0]))||jt,x.scale.y=x.scale.y+r.scale[1]+l(b,ve(w,i.scale[1]))||jt,x.scale.z=x.scale.z+r.scale[2]+l(b,ve(w,i.scale[2]))||jt,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof Un){let r=this.objectForSample,o=rx[e],i=yx[o],a=hx[o],s=mx[o],l=[],d=i(r.subdivPointerNew);for(let c=0;c<=d-1;c++){let u=a(r.subdivPointerNew,c),p=s(r.subdivPointerNew,c);px.fromArray(u).applyMatrix4(r.matrixWorld),fx.fromArray(p),l.push({pos:px.toArray(),norm:fx.toArray()})}return l}else return(this.objectForSample.geometry.index?nx(this.objectForSample.geometry):ix(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=yo(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 It?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new $n,this.hiddenMatrix=new $n,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as aN,Vector3 as sN,Matrix4 as lN,Box3 as cN,MeshBasicMaterial as uN,Skeleton as dN}from"three";import{Camera as _M,OrthographicCamera as AM,PerspectiveCamera as TM,Vector3 as Dr,Object3D as bx,Quaternion as CM,Matrix4 as PM}from"three";import{Camera as gM,LineSegments as xM,BufferGeometry as vM,LineBasicMaterial as bM,Color as Bp,Vector3 as SM,Float32BufferAttribute as xx}from"three";import{BoxGeometry as pM}from"three";var no=n=>{var t;return t=class extends n{},t.geometryHelper=new pM(30,30,30),t};import{Ray as fM,Sphere as hM,Matrix4 as mM,Vector3 as Oo}from"three";var Xc=new fM,Lp=new hM,gx=new mM,io=(n,t,e,r,o=!1)=>{let i=t,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Lp.copy(i.boundingSphere),Lp.applyMatrix4(a),e.ray.intersectsSphere(Lp)===!1||(gx.copy(a).invert(),Xc.copy(e.ray).applyMatrix4(gx),i.boundingBox!==null&&Xc.intersectsBox(i.boundingBox)===!1))return;let s,l,d,c,u=i.index,p=i.attributes.position,f=i.drawRange,h,m;if(o===!1){let g=Math.max(0,f.start),x=Math.min(u.count,f.start+f.count);for(h=g,m=x;h<m;h+=3)if(l=u.getX(h),d=u.getX(h+1),c=u.getX(h+2),s=y(n,e,Xc,p,l,d,c),s){s.faceIndex=Math.floor(h/3),r.push(s);return}}else{let x=i.attributes.position,S=new Oo,w=new Oo,b=new Oo,_=new Oo,A=2,M=1/((n.scale.x+n.scale.y+n.scale.z)/3),O=M*M,T=Math.max(0,f.start),C=Math.min(x.count,f.start+f.count);for(let P=T,I=C-1;P<I;P+=A){if(S.fromBufferAttribute(x,P),w.fromBufferAttribute(x,P+1),Xc.distanceSqToSegment(S,w,_,b)>O)continue;_.applyMatrix4(n.matrixWorld);let G=e.ray.origin.distanceTo(_);G<e.near||G>e.far||r.push({distance:G,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,S,w,b,_,A){let v=new Oo,M=new Oo,O=new Oo,T=new Oo,C=new Oo;if(v.fromBufferAttribute(w,b),M.fromBufferAttribute(w,_),O.fromBufferAttribute(w,A),S.intersectTriangle(v,M,O,!1,T)===null)return null;C.copy(T),C.applyMatrix4(g.matrixWorld);let I=x.ray.origin.distanceTo(C);return I<x.near||I>x.far?null:{faceIndex:1,distance:I,point:C.clone(),object:g}}};var Kc=new SM,yr=new gM,Rp=class extends xM{constructor(e){let r=new vM,o=new bM({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new Bp(15711266),d=new Bp(15711266),c=new Bp(2857471);u("n1","n2",l),u("n2","n4",l),u("n4","n3",l),u("n3","n1",l),u("f1","f2",l),u("f2","f4",l),u("f4","f3",l),u("f3","f1",l),u("n1","f1",l),u("n2","f2",l),u("n3","f3",l),u("n4","f4",l),u("p","n1",d),u("p","n2",d),u("p","n3",d),u("p","n4",d),u("u1","u2",c),u("u2","u3",c),u("u3","u1",c);function u(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 xx(i,3)),r.setAttribute("color",new xx(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;yr.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;Er("n1",r,e,yr,-i,-a,s),Er("n2",r,e,yr,i,-a,s),Er("n3",r,e,yr,-i,a,s),Er("n4",r,e,yr,i,a,s);let l=s;Er("f1",r,e,yr,-i,-a,l),Er("f2",r,e,yr,i,-a,l),Er("f3",r,e,yr,-i,a,l),Er("f4",r,e,yr,i,a,l);let d=l,c=.5;Er("u1",r,e,yr,i*.7*c,a*1.1,d),Er("u2",r,e,yr,-i*.7*c,a*1.1,d),Er("u3",r,e,yr,0,a*(1.1+.9*c),d),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Er(n,t,e,r,o,i,a){Kc.set(o,i,a).unproject(r);let s=t[n];if(s!==void 0){let l=e.getAttribute("position");for(let d=0,c=s.length;d<c;d++)l.setXYZ(s[d],Kc.x,Kc.y,Kc.z)}}var Qc=class extends no(Rp){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){io(this.object,this.geometry,e,r,!0)}};import{Box3Helper as vx,BoxGeometry as wM}from"three";var Zc;(t=>t.is=e=>"objectHelper"in e)(Zc||(Zc={}));var ao=(n,t)=>class extends ji(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 vx&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof wM?(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 vx&&(i.visible=!1)}}};var Jc=790,La=new Dr,Vp=new Dr,Gp=new CM,zp=new Dr,Vs=new Dr,kp=new Dr,Mo=class extends ao(_M,Qc){constructor(e="",r={...Tn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=qo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new PM,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new AM(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new TM(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 Dr(e,r,o)),super.lookAt(e),this.getWorldPosition(La),this.targetOffset=La.distanceTo(e)}getTarget(e=new Dr){return this.getWorldDirection(Vp),this.getWorldPosition(La),Vp.multiplyScalar(this.targetOffset),e.copy(La).add(Vp),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(La),La.distanceTo(e)}updateUp(){this.getWorldQuaternion(Gp),zp.set(0,0,1).applyQuaternion(Gp),Vs.copy(bx.DEFAULT_UP),this.isUpVectorFlipped&&Vs.negate(),Vs.applyQuaternion(Gp),kp.copy(bx.DEFAULT_UP).projectOnPlane(zp),this.angleOffsetFromUp=kp.angleTo(Vs),this.angleOffsetFromUp*=kp.cross(Vs).dot(zp)>=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 Dr),i=e.getWorldDirection(new Dr).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Dr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Dr,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=-Jc*.5*i,this.right=Jc*.5*i,this.top=Jc*.5*(1/a),this.bottom=-Jc*.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 JJ}from"three";import{BufferGeometry as Sx,Matrix4 as Fp,Float32BufferAttribute as OM,Vector3 as Ax}from"three";var Ba=new Fp,MM=new Fp,eu=new Fp,wx=new Ax,_x=new Ax;var er=class extends Jt{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Sx;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 er&&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 It&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){Ba.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=pr.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;pr.transformMeshSet(a.booleanMeshSetAddress,Ba),a.booleanMatrixInvOld.copy(Ba).invert(),a.booleanWasTransformed=!1}else a instanceof er&&a.needsTransformForDownstream===!0?(pr.transformMeshSet(a.booleanMeshSetAddress,Ba),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(pr.transformMeshSet(a.booleanMeshSetAddress,MM.multiplyMatrices(Ba,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Ba).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}pr.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 OM([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return pr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Sx,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=pr.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,Oa(this),Ma(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),eu.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(eu),wx.copy(e.max).applyMatrix4(eu),_x.copy(e.min).applyMatrix4(eu),this.geometry.boundingSphere.radius=wx.distanceTo(_x)/2),e}};import{Light as IM}from"three";var Tx;(t=>{function n(e){return Ae.is(e)&&e instanceof IM}t.is=n})(Tx||(Tx={}));var Ra=(n,t)=>class extends ao(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 cn=n=>n instanceof It,Gs=n=>n!==null&&n instanceof er;var zs=n=>Zc.is(n);import{Group as EM}from"three";import{AxesHelper as NM}from"three";var so=class extends no(NM){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){io(this.object,so.geometryHelper,e,r)}update(){}};var un=class extends ao(EM,so){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{Color as WM,Fog as $M,HemisphereLight as YM}from"three";import{ShaderChunk as ks}from"three";var DM=n=>`
|
|
2234
2234
|
|
|
2235
2235
|
// PCSS implementation based on:
|
|
2236
2236
|
// https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
|
|
@@ -2604,13 +2604,13 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
|
|
|
2604
2604
|
}
|
|
2605
2605
|
|
|
2606
2606
|
#endif
|
|
2607
|
-
`,LM=ks.lights_fragment_begin,DM=ks.shadowmask_pars_fragment,Cx=null,BM=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Px=(n="medium")=>{if(Cx===n)return!1;Cx=n;let t=BM(n);ks.shadowmap_pars_fragment=EM(t);let e=LM.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 ]"),ks.lights_fragment_begin=e;let r=DM.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),ks.shadowmask_pars_fragment=r,!0};import{DirectionalLight as kM,CameraHelper as Ox}from"three";import{DirectionalLightHelper as RM}from"three";var Ga=class extends no(RM){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){io(this.object,Ga.geometryHelper,e,r)}};import{PointLightHelper as VM}from"three";var za=class extends no(VM){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){io(this.object,za.geometryHelper,e,r)}};import{SpotLightHelper as GM,Vector3 as zM}from"three";var tu=class extends no(GM){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){io(this.object,tu.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=tu._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)}}},Fs=tu;Fs._vector=new zM;function FM(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 ka=class extends Ra(kM,Ga){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 Ox(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 Ox&&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&&FM(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 YM}from"three";import{SpotLight as jM,CameraHelper as Mx,MathUtils as UM,Vector3 as Lx,Quaternion as HM}from"three";var Ix=new Lx,Nx=new Lx,Ex=new HM,Fa=class extends Ra(jM,Fs){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=UM.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Mx(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 Mx&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),Nx.setFromMatrixPosition(this.matrixWorld),Ex.setFromRotationMatrix(this.matrixWorld),Ix.copy(this.up).applyQuaternion(Ex).negate().multiplyScalar(this.distance),this.target.position.copy(Nx).add(Ix),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 dn=class extends ji(YM){constructor(e,r){super();this.data=r;this.bgColor=new ht(1,1,1,1);this.fog=null;this.backupFog=new WM(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new qM;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new Mo(Uo,{...Tn.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new $M(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=Lt(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.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Jt)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&&Px(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=Lt(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=Lt(e.aoColor,r))}updateByOp(e,r,o,i){super.updateByOp(e,r,o,i);let a=r;Dt(e.path,["fog"])?this.updateFog(a.fog,o.shared):Dt(e.path,["ao"])?this.updateAo(a.ao,o.shared):Dt(e.path,["ambient"])?this.updateAmbientLight(a.ambient,o.shared):Dt(e.path,["shadow"])&&this.updateShadow(a.shadow)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(Lt(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)}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 ka&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof Fa&&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;Ae.is(a)&&(a.visible||s?.object.data.visible)&&((cn(a)||zs(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Us(a,e,r,!0)),o(a))}};return o(this),r}};import{PointLight as XM,Vector3 as ru,Box3 as KM,Box3Helper as Dx,Color as QM}from"three";var ou=class extends Ra(XM,za){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 ru(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new ru(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new KM(a,s),d=new Dx(l,new QM(16755200));d.visible=!1,this.gizmos.shadowmap=d,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 Dx){let r=this.shadow.camera,o=new ru(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),i=new ru(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 nu=class extends st{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?_s(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var ja=class extends st{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=Ac;break;case"Ellipse":i=Ki;break;case"Polygon":i=_c;break;case"Star":i=Tc;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?_s(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 ZM,Matrix4 as JM,Skeleton as eI}from"three";var Io=class extends ao(ZM,so){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=Di.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let i,a;for(let s of Hr.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]=Gr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Ot.defaultData,...e,...xr(Ot.defaultData,Hr.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 Hr.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&&Hr.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(Ae.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),iu(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};Rx(e,[this.uuid],r.overrides,this,o,o,0,i,a);for(let s of this.children)if(Ae.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(d=>{if(d instanceof st&&d.isSkinnedMesh){let c=d.dataPatched;if(c.bones&&c.boneInverses){let u=c.bones.map(h=>e.scene.find(a[h])),p=c.boneInverses.map(h=>new JM().fromArray(h)),f=new eI(u,p);d.bind(f,d.bindMatrix)}}else d.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function iu(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)Ae.is(e)&&iu(e)}}function Bx(n,t,e,r){return n.component===t&&Su(n.identity,r)?n.overrideData===e?2:1:0}function Rx(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 Io&&o.isInstanceRoot&&o.expandInstanceChildren(n);let d=0;for(let c of o.children)if(Ae.is(c)){let u=[...t,...typeof c.identity=="string"?[c.identity]:c.identity],p=Ni.resolve(e,u,1);if(p!=null&&!(p instanceof ke)){if(!1)debugger;Object.setPrototypeOf(p,ke.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[d];if(f=Ae.is(m)?m:null,f!==null){let y=Bx(f,c,p,u);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(u)??null,f!==null)){let y=Bx(f,c,p,u);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(d,0,f),f.parent===r?(g<=d&&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?Gr.apply(c.data,p):c.data;vr.is(m.type)&&(m={...m,type:"Empty"}),f=wr.createEntity(u,m,n),f.overrideData=p,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(d,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}d+=1,Rx(n,t,e,f,c,i,a+1,s,l)}if(!s){let c=d;for(;;){let u=r.children[d];if(Ae.is(u))n.pendingDeletes.add(u);else break;d+=1}r.children.splice(c,d-c)}return!0}import{Bone as tI}from"three";var au=class extends ao(tI,so){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};function rI(n,t,e){let r;return t.geometry.type==="TextGeometry"?new Na(n,t,e):(t.geometry.type==="SubdivGeometry"?r=new Un(n,t,e):t.geometry.type==="PathGeometry"?r=new ja(n,t,e):t.geometry.type==="VectorGeometry"?r=new nu(n,t,e):t.geometry.type==="BooleanGeometry"?r=new yr(n,t,e):r=new st(n,t,e),r)}function su(n,t,e){return t.type==="Mesh"?rI(n,t,e):t.type==="Empty"?new un(n,t):t.type==="Splat"?new un(n,t):t.type==="Bone"?new au(n,t):t.type==="Page"?new dn(n,t):t.type==="PointLight"?new ou(n,t,e):t.type==="SpotLight"?new Fa(n,t,e):t.type==="DirectionalLight"?new ka(n,t,e):t.type==="Component"||t.type==="Instance"?new Io(n,t,e):vr.is(t.type)?new Mo(n,t):(console.error(t),new un(n,t))}wr.createEntity=su;function oI(n,t,e){let r=su(n.identity,t,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,d=n.overrideData,c=n.uuid,u=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=d,n.updateState(n.data,e),u&&n.changeSelectedState(u,e),n.resetBBoxNeedsUpdate()}wr.changeEntityProptotype=oI;wr.Cloner=La;function Vx(n,t,e,r){n.updateByOp(t,e,r,!1)}import{Matrix4 as aI,Ray as sI,Raycaster as lI}from"three";function Gx(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,Ma(n),Oa(n)),r.length===0&&o.length===0&&n.layers.set(0),n instanceof Jt&&n.needsAO&&n.layers.enable(5),e}function zx(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 kx(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Jt)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Gx(e,e.material[r])&&(t=!0);else Gx(e,e.material)&&(t=!0)}),t}function Fx(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Jt)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)zx(e,e.material[r])&&(t=!0);else zx(e,e.material)&&(t=!0)}),t}var cI=new lI,uI=new aI,dI=new sI;function Us(n,t,e,r=!1){let o=n.cloner;if(o)for(let i of o.children){let a=uI.copy(i.matrixWorld).invert(),s=dI.copy(t.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let d=cI;d.set(s.origin,s.direction),d.near=t.near,d.far=t.far;let c=d.intersectObject(n,!1);c.length>0&&e.push({...c[0],object:r?i:n})}}var lu=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 Dr=Rt(Ua()),lo=Rt(Ha());var tt=Rt(Ua()),ce=Rt(Ha()),pn=class{constructor(t,e,r){this._dataNormalized=t,this._minD=e,this._maxD=r}static createFromUnnormalized(t){let e=ce.sup(t),r=ce.inf(t),o=(0,tt.default)(new Float32Array(t.size),t.shape),i=e-r;return i<1e-4?ce.assigns(o,0):(ce.subs(o,t,r),ce.divs(o,o,i)),new pn(o,r,e)}get data(){return this._dataNormalized}get minD(){return this._minD}get maxD(){return this._maxD}denormalize(){let t=(0,tt.default)(new Float32Array(this._dataNormalized.size),this._dataNormalized.shape);return ce.muls(t,this._dataNormalized,this._maxD-this._minD),ce.adds(t,t,this._minD),t}},Fe=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=Fe.maxIntBits(8),a=(0,tt.default)(new Float32Array(r.size),r.shape);ce.muls(a,r,i),ce.roundeq(a),o=(0,tt.default)(new Uint8Array(a.data),r.shape)}else if(e==="norm565"){let i=(0,tt.default)(new Float32Array(r.size),r.shape);ce.assign(i,r),ce.mulseq(i.pick(null,0),Fe.maxIntBits(5)),ce.mulseq(i.pick(null,1),Fe.maxIntBits(6)),ce.mulseq(i.pick(null,2),Fe.maxIntBits(5)),ce.roundeq(i);let a=(0,tt.default)(new Uint16Array(i.data),r.shape),s=(0,tt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]),l=(0,tt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]);ce.lshifts(s,a.pick(null,0),11),ce.lshifts(l,a.pick(null,1),5),ce.boreq(s,l),ce.boreq(s,a.pick(null,2)),o=s}else{let i=(0,tt.default)(new Float32Array(r.size),r.shape);ce.assign(i,r),ce.mulseq(i.pick(null,0),Fe.maxIntBits(11)),ce.mulseq(i.pick(null,1),Fe.maxIntBits(10)),ce.mulseq(i.pick(null,2),Fe.maxIntBits(11)),ce.roundeq(i);let a=(0,tt.default)(new Uint32Array(i.data),r.shape),s=(0,tt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]),l=(0,tt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]);ce.lshifts(s,a.pick(null,0),21),ce.lshifts(l,a.pick(null,1),11),ce.boreq(s,l),ce.boreq(s,a.pick(null,2)),o=s}return new Fe(o,e)}dequantize(t,e){let r=this._method,o,i=this._quantized;if(r==="norm8x"){let a=Fe.maxIntBits(8);o=(0,tt.default)(new Float32Array(i.size),i.shape),ce.muls(o,i,1/a)}else if(r==="norm565"){let a=(0,tt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),s=(0,tt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),l=(0,tt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]);ce.rrshifts(a,i,11),ce.rrshifts(s,i,5),ce.bandseq(s,Fe.maxIntBits(6)),ce.bands(l,i,Fe.maxIntBits(5)),o=(0,tt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ce.muls(o.pick(null,0),a,1/Fe.maxIntBits(5)),ce.muls(o.pick(null,1),s,1/Fe.maxIntBits(6)),ce.muls(o.pick(null,2),l,1/Fe.maxIntBits(5))}else{let a=(0,tt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),s=(0,tt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),l=(0,tt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]);ce.rrshifts(a,i,21),ce.rrshifts(s,i,11),ce.bandseq(s,Fe.maxIntBits(10)),ce.bands(l,i,Fe.maxIntBits(11)),o=(0,tt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ce.muls(o.pick(null,0),a,1/Fe.maxIntBits(11)),ce.muls(o.pick(null,1),s,1/Fe.maxIntBits(10)),ce.muls(o.pick(null,2),l,1/Fe.maxIntBits(11))}return new pn(o,t,e)}};var je=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,Dr.default)(new Float32Array(r*2),[r,2]),i=0,a=r,s=0,l=this.minmaxMatrix.shape[0];for(let d=0;d<t.length;d++)l=t[d],a=l-s+i,a>i&&lo.assign(o.hi(a,2).lo(i,0),this.minmaxMatrix.hi(l,2).lo(s,0)),i=a,s=l+1;return i<r&&lo.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 u=a?r*a:r;i=(0,Dr.default)(new Uint8Array(u),a?[r,a]:[r,1])}else o==="norm565"?i=(0,Dr.default)(new Uint16Array(r),[r]):i=(0,Dr.default)(new Uint32Array(r),[r]);let s=0,l=r,d=0,c=i.shape[0];for(let u=0;u<t.length;u++)c=t[u],l=c-d+s,l>s&&(a?lo.assign(i.hi(l,a).lo(s,0),this._quantized.hi(c,a).lo(d,0)):lo.assign(i.hi(l).lo(s),this._quantized.hi(c).lo(d))),s=l,d=c+1;return s<r&&(a?lo.assign(i.lo(s,0),this._quantized.lo(d,0)):lo.assign(i.lo(s),this._quantized.lo(d))),i}pruneFeature(t,e,r){let o=this._createPrunedQuantized(t),i=this._createPrunedMinMax(e);return new je(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,Dr.default)(new Float32Array(i*2),[i,2],[2,1]),s;e==="norm8x"?s=(0,Dr.default)(new Uint8Array(t.size),t.shape):e==="norm565"?s=(0,Dr.default)(new Uint16Array(t.shape[0]),[t.shape[0]]):s=(0,Dr.default)(new Uint32Array(t.shape[0]),[t.shape[0]]);for(let l=0;l<i;l++){let d=l*r,c=l+1<i?(l+1)*r:o,u;t.shape.length>1?u=pn.createFromUnnormalized(t.hi(c,t.shape[1]).lo(d,0)):u=pn.createFromUnnormalized(t.hi(c).lo(d)),a.set(l,0,u.minD),a.set(l,1,u.maxD),s.shape.length>1?lo.assign(s.hi(c,s.shape[1]).lo(d,0),Fe.fromNormalized(u,e).quantized):lo.assign(s.hi(c).lo(d),Fe.fromNormalized(u,e).quantized)}return new je(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,Dr.default)(new Float32Array(e.size),e.shape):s=(0,Dr.default)(new Float32Array(r*3),[r,3]);let l=0,d=i;for(let c=0;c<t;c++){let[u,p]=[this._minMaxMatrix.get(c,0),this._minMaxMatrix.get(c,1)];this._isDynamicChunks&&(d=a[c]);let f=c+1<t?l+d:r,h;e.shape.length>1?h=new Fe(e.hi(f,e.shape[1]).lo(l,0),o):h=new Fe(e.hi(f).lo(l),o),lo.assign(s.hi(f,s.shape[1]).lo(l,0),h.dequantize(u,p).denormalize()),l=f}return s}static async fetchArrayBuffer(t){return await(await fetch(t,{mode:"cors"})).arrayBuffer()}};var No=Rt(Ua()),Ce=Rt(Ha());var cv="http://127.0.0.1:8000";var Yn=Rt(Ua()),ze=Rt(Ha());var uv=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9];function dv(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 pv(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=dv(n),i=dv(t),a=0;return o<i?(n*=uv[i-o-1],t/=10,a=-1):o>i&&(t*=uv[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 RI(n){let t=0;for(;n>=32;)t|=n&1,n>>=1;return n+t}function fv(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++;VI(n,t,o)}else for(;o<e&&r(n[o],n[o-1])>=0;)o++;return o-t}function VI(n,t,e){for(e--;t<e;){let r=n[t];n[t++]=n[e],n[e--]=r}}function hv(n,t,e,r,o){for(r===t&&r++;r<e;r++){let i=n[r],a=t,s=r;for(;a<s;){let d=a+s>>>1;o(i,n[d])<0?s=d:a=d+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 qp(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 d=a;a=o-l,l=o-d}for(a++;a<l;){let d=a+(l-a>>>1);i(n,t[e+d])>0?a=d+1:l=d}return l}function Wp(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 d=a;a=o-l,l=o-d}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 d=a+(l-a>>>1);i(n,t[e+d])<0?l=d:a=d+1}return l}var $p=class{constructor(t,e){yt(this,"array",null);yt(this,"compare",null);yt(this,"minGallop",7);yt(this,"length",0);yt(this,"tmpStorageLength",256);yt(this,"stackLength",0);yt(this,"runStart",null);yt(this,"runLength",null);yt(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=Wp(r[a],r,o,i,0,e);o+=l,i-=l,i!==0&&(s=qp(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 d=0,c=r,u=t;if(a[u++]=a[c++],--o===0){for(l=0;l<e;l++)a[u+l]=s[d+l];return}if(e===1){for(l=0;l<o;l++)a[u+l]=a[c+l];a[u+o]=s[d];return}let p=this.minGallop;for(;;){let f=0,h=0,m=!1;do if(i(a[c],s[d])<0){if(a[u++]=a[c++],h++,f=0,--o===0){m=!0;break}}else if(a[u++]=s[d++],f++,h=0,--e===1){m=!0;break}while((f|h)<p);if(m)break;do{if(f=Wp(a[c],s,d,e,0,i),f!==0){for(l=0;l<f;l++)a[u+l]=s[d+l];if(u+=f,d+=f,e-=f,e<=1){m=!0;break}}if(a[u++]=a[c++],--o===0){m=!0;break}if(h=qp(s[d],a,c,o,0,i),h!==0){for(l=0;l<h;l++)a[u+l]=a[c+l];if(u+=h,c+=h,o-=h,o===0){m=!0;break}}if(a[u++]=s[d++],--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[u+l]=a[c+l];a[u+o]=s[d]}else{if(e===0)throw new Error("mergeLow preconditions were not respected");for(l=0;l<e;l++)a[u+l]=s[d+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 d=t+e-1,c=o-1,u=r+o-1,p=0,f=0;if(a[u--]=a[d--],--e===0){for(p=u-(o-1),l=0;l<o;l++)a[p+l]=s[l];return}if(o===1){for(u-=e,d-=e,f=u+1,p=d+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[u]=s[c];return}let h=this.minGallop;for(;;){let m=0,y=0,g=!1;do if(i(s[c],a[d])<0){if(a[u--]=a[d--],m++,y=0,--e===0){g=!0;break}}else if(a[u--]=s[c--],y++,m=0,--o===1){g=!0;break}while((m|y)<h);if(g)break;do{if(m=e-Wp(s[c],a,t,e,e-1,i),m!==0){for(u-=m,d-=m,e-=m,f=u+1,p=d+1,l=m-1;l>=0;l--)a[f+l]=a[p+l];if(e===0){g=!0;break}}if(a[u--]=s[c--],--o===1){g=!0;break}if(y=o-qp(a[d],s,0,o,o-1,i),y!==0){for(u-=y,c-=y,o-=y,f=u+1,p=c+1,l=0;l<y;l++)a[f+l]=s[p+l];if(o<=1){g=!0;break}}if(a[u--]=a[d--],--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(u-=e,d-=e,f=u+1,p=d+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[u]=s[c]}else{if(o===0)throw new Error("mergeHigh preconditions were not respected");for(p=u-(o-1),l=0;l<o;l++)a[p+l]=s[l]}}};function mv(n,t,e,r){if(!Array.isArray(n))throw new TypeError("Can only sort arrays");t?typeof t!="function"&&(r=e,e=t,t=pv):t=pv,e||(e=0),r||(r=n.length);let o=r-e;if(o<2)return;let i=0;if(o<32){i=fv(n,e,r,t),hv(n,e,r,e+i,t);return}let a=new $p(n,t),s=RI(o);do{if(i=fv(n,e,r,t),i<s){let l=o;l>s&&(l=s),hv(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 Yp(n){let t=(0,Yn.default)(new Int32Array(n.shape[0]),[n.shape[0]]),e=(0,Yn.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 GI(n){let t=Yp(n.pick(null,0)),e=Yp(n.pick(null,1));ze.lshiftseq(e,1);let r=Yp(n.pick(null,2));return ze.lshiftseq(r,2),ze.boreq(t,e),ze.boreq(t,r),t}function fn(n,t){if(n.shape[0]!==t.shape[0])throw new Error("wrong length");let e=(0,Yn.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 Xp(n){let t=ze.sup(n),e=ze.inf(n),r=1e3/Math.min(1e3,t-e),o=(0,Yn.default)(new Float32Array(n.data),n.shape);ze.mulseq(o,r);let i=(0,Yn.default)(new Int32Array(o.data),n.shape),a=GI(i),l=Array.from(a.data).map((u,p)=>[u,p]);mv(l,(u,p)=>u[0]-p[0]);let d=l.map(([u,p])=>p);return(0,Yn.default)(Uint32Array.from(d))}var gr=class{constructor(t,e,r,o,i,a,s,l,d,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=d,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,No.default)(new Float32Array(this.nsplats*r),[this.nsplats,r]);if(Ce.assign(o.pick(null,this.propertyDescs.x.index),this.xyz.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.y.index),this.xyz.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.z.index),this.xyz.pick(null,2)),Ce.assign(o.pick(null,this.propertyDescs.f_dc_0.index),this.colors.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.f_dc_1.index),this.colors.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.f_dc_2.index),this.colors.pick(null,2)),Ce.assign(o.pick(null,this.propertyDescs.opacity.index),this.opacity.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.scale_0.index),this.scaling.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.scale_1.index),this.scaling.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.scale_2.index),this.scaling.pick(null,2)),Ce.assign(o.pick(null,this.propertyDescs.rot_0.index),this.rotation.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.rot_1.index),this.rotation.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.rot_2.index),this.rotation.pick(null,2)),Ce.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;Ce.assign(o.pick(null,this.propertyDescs[`f_rest_${l}`].index),this.harmonics[s].pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs[`f_rest_${l+1}`].index),this.harmonics[s].pick(null,1)),Ce.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(`${cv}/push_file`,{method:"POST",body:a})}static async loadFile(t){return await(await fetch(t)).arrayBuffer()}mortonPositionSplatsSort(){let t=Xp(this.xyz),e=fn(this.xyz,t),r=fn(this.colors,t),o=fn(this.opacity,t),i=fn(this.scaling,t),a=fn(this.rotation,t),s=[];for(let l=0;l<this.harmonics.length;l++)s.push(fn(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
|
|
2607
|
+
`,LM=ks.lights_fragment_begin,BM=ks.shadowmask_pars_fragment,Cx=null,RM=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Px=(n="medium")=>{if(Cx===n)return!1;Cx=n;let t=RM(n);ks.shadowmap_pars_fragment=DM(t);let e=LM.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 ]"),ks.lights_fragment_begin=e;let r=BM.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),ks.shadowmask_pars_fragment=r,!0};import{DirectionalLight as FM,CameraHelper as Ox}from"three";import{DirectionalLightHelper as VM}from"three";var Va=class extends no(VM){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){io(this.object,Va.geometryHelper,e,r)}};import{PointLightHelper as GM}from"three";var Ga=class extends no(GM){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){io(this.object,Ga.geometryHelper,e,r)}};import{SpotLightHelper as zM,Vector3 as kM}from"three";var tu=class extends no(zM){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){io(this.object,tu.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=tu._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)}}},Fs=tu;Fs._vector=new kM;function jM(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 za=class extends Ra(FM,Va){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 Ox(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 Ox&&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&&jM(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 XM}from"three";import{SpotLight as UM,CameraHelper as Mx,MathUtils as HM,Vector3 as Dx,Quaternion as qM}from"three";var Ix=new Dx,Nx=new Dx,Ex=new qM,ka=class extends Ra(UM,Fs){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=HM.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Mx(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 Mx&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),Nx.setFromMatrixPosition(this.matrixWorld),Ex.setFromRotationMatrix(this.matrixWorld),Ix.copy(this.up).applyQuaternion(Ex).negate().multiplyScalar(this.distance),this.target.position.copy(Nx).add(Ix),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 dn=class extends ji(XM){constructor(e,r){super();this.data=r;this.bgColor=new ht(1,1,1,1);this.fog=null;this.backupFog=new $M(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new WM;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new Mo(Uo,{...Tn.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new YM(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=Dt(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 er&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Jt)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&&Px(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=Dt(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=Dt(e.aoColor,r))}updateByOp(e,r,o,i){super.updateByOp(e,r,o,i);let a=r;Lt(e.path,["fog"])?this.updateFog(a.fog,o.shared):Lt(e.path,["ao"])?this.updateAo(a.ao,o.shared):Lt(e.path,["ambient"])?this.updateAmbientLight(a.ambient,o.shared):Lt(e.path,["shadow"])&&this.updateShadow(a.shadow)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(Dt(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)}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 za&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof ka&&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;Ae.is(a)&&(a.visible||s?.object.data.visible)&&((cn(a)||zs(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Us(a,e,r,!0)),o(a))}};return o(this),r}};import{PointLight as KM,Vector3 as ru,Box3 as QM,Box3Helper as Lx,Color as ZM}from"three";var ou=class extends Ra(KM,Ga){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 ru(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new ru(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new QM(a,s),d=new Lx(l,new ZM(16755200));d.visible=!1,this.gizmos.shadowmap=d,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 Lx){let r=this.shadow.camera,o=new ru(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),i=new ru(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 nu=class extends st{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?ws(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var Fa=class extends st{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=Ac;break;case"Ellipse":i=Ki;break;case"Polygon":i=_c;break;case"Star":i=Tc;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?ws(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 JM,Matrix4 as eI,Skeleton as tI}from"three";var Io=class extends ao(JM,so){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=Li.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let i,a;for(let s of Hr.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]=Gr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Ot.defaultData,...e,...xr(Ot.defaultData,Hr.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 Hr.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&&Hr.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(Ae.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),iu(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};Rx(e,[this.uuid],r.overrides,this,o,o,0,i,a);for(let s of this.children)if(Ae.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(d=>{if(d instanceof st&&d.isSkinnedMesh){let c=d.dataPatched;if(c.bones&&c.boneInverses){let u=c.bones.map(h=>e.scene.find(a[h])),p=c.boneInverses.map(h=>new eI().fromArray(h)),f=new tI(u,p);d.bind(f,d.bindMatrix)}}else d.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function iu(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)Ae.is(e)&&iu(e)}}function Bx(n,t,e,r){return n.component===t&&Su(n.identity,r)?n.overrideData===e?2:1:0}function Rx(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 Io&&o.isInstanceRoot&&o.expandInstanceChildren(n);let d=0;for(let c of o.children)if(Ae.is(c)){let u=[...t,...typeof c.identity=="string"?[c.identity]:c.identity],p=Ni.resolve(e,u,1);if(p!=null&&!(p instanceof ke)){if(!1)debugger;Object.setPrototypeOf(p,ke.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[d];if(f=Ae.is(m)?m:null,f!==null){let y=Bx(f,c,p,u);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(u)??null,f!==null)){let y=Bx(f,c,p,u);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(d,0,f),f.parent===r?(g<=d&&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?Gr.apply(c.data,p):c.data;vr.is(m.type)&&(m={...m,type:"Empty"}),f=wr.createEntity(u,m,n),f.overrideData=p,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(d,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}d+=1,Rx(n,t,e,f,c,i,a+1,s,l)}if(!s){let c=d;for(;;){let u=r.children[d];if(Ae.is(u))n.pendingDeletes.add(u);else break;d+=1}r.children.splice(c,d-c)}return!0}import{Bone as rI}from"three";var au=class extends ao(rI,so){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};function oI(n,t,e){let r;return t.geometry.type==="TextGeometry"?new Na(n,t,e):(t.geometry.type==="SubdivGeometry"?r=new Un(n,t,e):t.geometry.type==="PathGeometry"?r=new Fa(n,t,e):t.geometry.type==="VectorGeometry"?r=new nu(n,t,e):t.geometry.type==="BooleanGeometry"?r=new er(n,t,e):r=new st(n,t,e),r)}function su(n,t,e){return t.type==="Mesh"?oI(n,t,e):t.type==="Empty"?new un(n,t):t.type==="Splat"?new un(n,t):t.type==="Bone"?new au(n,t):t.type==="Page"?new dn(n,t):t.type==="PointLight"?new ou(n,t,e):t.type==="SpotLight"?new ka(n,t,e):t.type==="DirectionalLight"?new za(n,t,e):t.type==="Component"||t.type==="Instance"?new Io(n,t,e):vr.is(t.type)?new Mo(n,t):(console.error(t),new un(n,t))}wr.createEntity=su;function nI(n,t,e){let r=su(n.identity,t,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,d=n.overrideData,c=n.uuid,u=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=d,n.updateState(n.data,e),u&&n.changeSelectedState(u,e),n.resetBBoxNeedsUpdate()}wr.changeEntityProptotype=nI;wr.Cloner=Da;function Vx(n,t,e,r){n.updateByOp(t,e,r,!1)}import{Matrix4 as sI,Ray as lI,Raycaster as cI}from"three";function Gx(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,Ma(n),Oa(n)),r.length===0&&o.length===0&&n.layers.set(0),n instanceof Jt&&n.needsAO&&n.layers.enable(5),e}function zx(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 kx(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Jt)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Gx(e,e.material[r])&&(t=!0);else Gx(e,e.material)&&(t=!0)}),t}function Fx(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Jt)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)zx(e,e.material[r])&&(t=!0);else zx(e,e.material)&&(t=!0)}),t}var uI=new cI,dI=new sI,pI=new lI;function Us(n,t,e,r=!1){let o=n.cloner;if(o)for(let i of o.children){let a=dI.copy(i.matrixWorld).invert(),s=pI.copy(t.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let d=uI;d.set(s.origin,s.direction),d.near=t.near,d.far=t.far;let c=d.intersectObject(n,!1);c.length>0&&e.push({...c[0],object:r?i:n})}}var lu=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 Lr=Rt(ja()),lo=Rt(Ua());var tt=Rt(ja()),ce=Rt(Ua()),pn=class{constructor(t,e,r){this._dataNormalized=t,this._minD=e,this._maxD=r}static createFromUnnormalized(t){let e=ce.sup(t),r=ce.inf(t),o=(0,tt.default)(new Float32Array(t.size),t.shape),i=e-r;return i<1e-4?ce.assigns(o,0):(ce.subs(o,t,r),ce.divs(o,o,i)),new pn(o,r,e)}get data(){return this._dataNormalized}get minD(){return this._minD}get maxD(){return this._maxD}denormalize(){let t=(0,tt.default)(new Float32Array(this._dataNormalized.size),this._dataNormalized.shape);return ce.muls(t,this._dataNormalized,this._maxD-this._minD),ce.adds(t,t,this._minD),t}},Fe=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=Fe.maxIntBits(8),a=(0,tt.default)(new Float32Array(r.size),r.shape);ce.muls(a,r,i),ce.roundeq(a),o=(0,tt.default)(new Uint8Array(a.data),r.shape)}else if(e==="norm565"){let i=(0,tt.default)(new Float32Array(r.size),r.shape);ce.assign(i,r),ce.mulseq(i.pick(null,0),Fe.maxIntBits(5)),ce.mulseq(i.pick(null,1),Fe.maxIntBits(6)),ce.mulseq(i.pick(null,2),Fe.maxIntBits(5)),ce.roundeq(i);let a=(0,tt.default)(new Uint16Array(i.data),r.shape),s=(0,tt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]),l=(0,tt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]);ce.lshifts(s,a.pick(null,0),11),ce.lshifts(l,a.pick(null,1),5),ce.boreq(s,l),ce.boreq(s,a.pick(null,2)),o=s}else{let i=(0,tt.default)(new Float32Array(r.size),r.shape);ce.assign(i,r),ce.mulseq(i.pick(null,0),Fe.maxIntBits(11)),ce.mulseq(i.pick(null,1),Fe.maxIntBits(10)),ce.mulseq(i.pick(null,2),Fe.maxIntBits(11)),ce.roundeq(i);let a=(0,tt.default)(new Uint32Array(i.data),r.shape),s=(0,tt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]),l=(0,tt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]);ce.lshifts(s,a.pick(null,0),21),ce.lshifts(l,a.pick(null,1),11),ce.boreq(s,l),ce.boreq(s,a.pick(null,2)),o=s}return new Fe(o,e)}dequantize(t,e){let r=this._method,o,i=this._quantized;if(r==="norm8x"){let a=Fe.maxIntBits(8);o=(0,tt.default)(new Float32Array(i.size),i.shape),ce.muls(o,i,1/a)}else if(r==="norm565"){let a=(0,tt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),s=(0,tt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),l=(0,tt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]);ce.rrshifts(a,i,11),ce.rrshifts(s,i,5),ce.bandseq(s,Fe.maxIntBits(6)),ce.bands(l,i,Fe.maxIntBits(5)),o=(0,tt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ce.muls(o.pick(null,0),a,1/Fe.maxIntBits(5)),ce.muls(o.pick(null,1),s,1/Fe.maxIntBits(6)),ce.muls(o.pick(null,2),l,1/Fe.maxIntBits(5))}else{let a=(0,tt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),s=(0,tt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),l=(0,tt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]);ce.rrshifts(a,i,21),ce.rrshifts(s,i,11),ce.bandseq(s,Fe.maxIntBits(10)),ce.bands(l,i,Fe.maxIntBits(11)),o=(0,tt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ce.muls(o.pick(null,0),a,1/Fe.maxIntBits(11)),ce.muls(o.pick(null,1),s,1/Fe.maxIntBits(10)),ce.muls(o.pick(null,2),l,1/Fe.maxIntBits(11))}return new pn(o,t,e)}};var je=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,Lr.default)(new Float32Array(r*2),[r,2]),i=0,a=r,s=0,l=this.minmaxMatrix.shape[0];for(let d=0;d<t.length;d++)l=t[d],a=l-s+i,a>i&&lo.assign(o.hi(a,2).lo(i,0),this.minmaxMatrix.hi(l,2).lo(s,0)),i=a,s=l+1;return i<r&&lo.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 u=a?r*a:r;i=(0,Lr.default)(new Uint8Array(u),a?[r,a]:[r,1])}else o==="norm565"?i=(0,Lr.default)(new Uint16Array(r),[r]):i=(0,Lr.default)(new Uint32Array(r),[r]);let s=0,l=r,d=0,c=i.shape[0];for(let u=0;u<t.length;u++)c=t[u],l=c-d+s,l>s&&(a?lo.assign(i.hi(l,a).lo(s,0),this._quantized.hi(c,a).lo(d,0)):lo.assign(i.hi(l).lo(s),this._quantized.hi(c).lo(d))),s=l,d=c+1;return s<r&&(a?lo.assign(i.lo(s,0),this._quantized.lo(d,0)):lo.assign(i.lo(s),this._quantized.lo(d))),i}pruneFeature(t,e,r){let o=this._createPrunedQuantized(t),i=this._createPrunedMinMax(e);return new je(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,Lr.default)(new Float32Array(i*2),[i,2],[2,1]),s;e==="norm8x"?s=(0,Lr.default)(new Uint8Array(t.size),t.shape):e==="norm565"?s=(0,Lr.default)(new Uint16Array(t.shape[0]),[t.shape[0]]):s=(0,Lr.default)(new Uint32Array(t.shape[0]),[t.shape[0]]);for(let l=0;l<i;l++){let d=l*r,c=l+1<i?(l+1)*r:o,u;t.shape.length>1?u=pn.createFromUnnormalized(t.hi(c,t.shape[1]).lo(d,0)):u=pn.createFromUnnormalized(t.hi(c).lo(d)),a.set(l,0,u.minD),a.set(l,1,u.maxD),s.shape.length>1?lo.assign(s.hi(c,s.shape[1]).lo(d,0),Fe.fromNormalized(u,e).quantized):lo.assign(s.hi(c).lo(d),Fe.fromNormalized(u,e).quantized)}return new je(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,Lr.default)(new Float32Array(e.size),e.shape):s=(0,Lr.default)(new Float32Array(r*3),[r,3]);let l=0,d=i;for(let c=0;c<t;c++){let[u,p]=[this._minMaxMatrix.get(c,0),this._minMaxMatrix.get(c,1)];this._isDynamicChunks&&(d=a[c]);let f=c+1<t?l+d:r,h;e.shape.length>1?h=new Fe(e.hi(f,e.shape[1]).lo(l,0),o):h=new Fe(e.hi(f).lo(l),o),lo.assign(s.hi(f,s.shape[1]).lo(l,0),h.dequantize(u,p).denormalize()),l=f}return s}static async fetchArrayBuffer(t){return await(await fetch(t,{mode:"cors"})).arrayBuffer()}};var No=Rt(ja()),Ce=Rt(Ua());var cv="http://127.0.0.1:8000";var Yn=Rt(ja()),ze=Rt(Ua());var uv=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9];function dv(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 pv(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=dv(n),i=dv(t),a=0;return o<i?(n*=uv[i-o-1],t/=10,a=-1):o>i&&(t*=uv[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 VI(n){let t=0;for(;n>=32;)t|=n&1,n>>=1;return n+t}function fv(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++;GI(n,t,o)}else for(;o<e&&r(n[o],n[o-1])>=0;)o++;return o-t}function GI(n,t,e){for(e--;t<e;){let r=n[t];n[t++]=n[e],n[e--]=r}}function hv(n,t,e,r,o){for(r===t&&r++;r<e;r++){let i=n[r],a=t,s=r;for(;a<s;){let d=a+s>>>1;o(i,n[d])<0?s=d:a=d+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 qp(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 d=a;a=o-l,l=o-d}for(a++;a<l;){let d=a+(l-a>>>1);i(n,t[e+d])>0?a=d+1:l=d}return l}function Wp(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 d=a;a=o-l,l=o-d}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 d=a+(l-a>>>1);i(n,t[e+d])<0?l=d:a=d+1}return l}var $p=class{constructor(t,e){yt(this,"array",null);yt(this,"compare",null);yt(this,"minGallop",7);yt(this,"length",0);yt(this,"tmpStorageLength",256);yt(this,"stackLength",0);yt(this,"runStart",null);yt(this,"runLength",null);yt(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=Wp(r[a],r,o,i,0,e);o+=l,i-=l,i!==0&&(s=qp(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 d=0,c=r,u=t;if(a[u++]=a[c++],--o===0){for(l=0;l<e;l++)a[u+l]=s[d+l];return}if(e===1){for(l=0;l<o;l++)a[u+l]=a[c+l];a[u+o]=s[d];return}let p=this.minGallop;for(;;){let f=0,h=0,m=!1;do if(i(a[c],s[d])<0){if(a[u++]=a[c++],h++,f=0,--o===0){m=!0;break}}else if(a[u++]=s[d++],f++,h=0,--e===1){m=!0;break}while((f|h)<p);if(m)break;do{if(f=Wp(a[c],s,d,e,0,i),f!==0){for(l=0;l<f;l++)a[u+l]=s[d+l];if(u+=f,d+=f,e-=f,e<=1){m=!0;break}}if(a[u++]=a[c++],--o===0){m=!0;break}if(h=qp(s[d],a,c,o,0,i),h!==0){for(l=0;l<h;l++)a[u+l]=a[c+l];if(u+=h,c+=h,o-=h,o===0){m=!0;break}}if(a[u++]=s[d++],--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[u+l]=a[c+l];a[u+o]=s[d]}else{if(e===0)throw new Error("mergeLow preconditions were not respected");for(l=0;l<e;l++)a[u+l]=s[d+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 d=t+e-1,c=o-1,u=r+o-1,p=0,f=0;if(a[u--]=a[d--],--e===0){for(p=u-(o-1),l=0;l<o;l++)a[p+l]=s[l];return}if(o===1){for(u-=e,d-=e,f=u+1,p=d+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[u]=s[c];return}let h=this.minGallop;for(;;){let m=0,y=0,g=!1;do if(i(s[c],a[d])<0){if(a[u--]=a[d--],m++,y=0,--e===0){g=!0;break}}else if(a[u--]=s[c--],y++,m=0,--o===1){g=!0;break}while((m|y)<h);if(g)break;do{if(m=e-Wp(s[c],a,t,e,e-1,i),m!==0){for(u-=m,d-=m,e-=m,f=u+1,p=d+1,l=m-1;l>=0;l--)a[f+l]=a[p+l];if(e===0){g=!0;break}}if(a[u--]=s[c--],--o===1){g=!0;break}if(y=o-qp(a[d],s,0,o,o-1,i),y!==0){for(u-=y,c-=y,o-=y,f=u+1,p=c+1,l=0;l<y;l++)a[f+l]=s[p+l];if(o<=1){g=!0;break}}if(a[u--]=a[d--],--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(u-=e,d-=e,f=u+1,p=d+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[u]=s[c]}else{if(o===0)throw new Error("mergeHigh preconditions were not respected");for(p=u-(o-1),l=0;l<o;l++)a[p+l]=s[l]}}};function mv(n,t,e,r){if(!Array.isArray(n))throw new TypeError("Can only sort arrays");t?typeof t!="function"&&(r=e,e=t,t=pv):t=pv,e||(e=0),r||(r=n.length);let o=r-e;if(o<2)return;let i=0;if(o<32){i=fv(n,e,r,t),hv(n,e,r,e+i,t);return}let a=new $p(n,t),s=VI(o);do{if(i=fv(n,e,r,t),i<s){let l=o;l>s&&(l=s),hv(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 Yp(n){let t=(0,Yn.default)(new Int32Array(n.shape[0]),[n.shape[0]]),e=(0,Yn.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 zI(n){let t=Yp(n.pick(null,0)),e=Yp(n.pick(null,1));ze.lshiftseq(e,1);let r=Yp(n.pick(null,2));return ze.lshiftseq(r,2),ze.boreq(t,e),ze.boreq(t,r),t}function fn(n,t){if(n.shape[0]!==t.shape[0])throw new Error("wrong length");let e=(0,Yn.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 Xp(n){let t=ze.sup(n),e=ze.inf(n),r=1e3/Math.min(1e3,t-e),o=(0,Yn.default)(new Float32Array(n.data),n.shape);ze.mulseq(o,r);let i=(0,Yn.default)(new Int32Array(o.data),n.shape),a=zI(i),l=Array.from(a.data).map((u,p)=>[u,p]);mv(l,(u,p)=>u[0]-p[0]);let d=l.map(([u,p])=>p);return(0,Yn.default)(Uint32Array.from(d))}var gr=class{constructor(t,e,r,o,i,a,s,l,d,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=d,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,No.default)(new Float32Array(this.nsplats*r),[this.nsplats,r]);if(Ce.assign(o.pick(null,this.propertyDescs.x.index),this.xyz.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.y.index),this.xyz.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.z.index),this.xyz.pick(null,2)),Ce.assign(o.pick(null,this.propertyDescs.f_dc_0.index),this.colors.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.f_dc_1.index),this.colors.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.f_dc_2.index),this.colors.pick(null,2)),Ce.assign(o.pick(null,this.propertyDescs.opacity.index),this.opacity.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.scale_0.index),this.scaling.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.scale_1.index),this.scaling.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.scale_2.index),this.scaling.pick(null,2)),Ce.assign(o.pick(null,this.propertyDescs.rot_0.index),this.rotation.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.rot_1.index),this.rotation.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.rot_2.index),this.rotation.pick(null,2)),Ce.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;Ce.assign(o.pick(null,this.propertyDescs[`f_rest_${l}`].index),this.harmonics[s].pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs[`f_rest_${l+1}`].index),this.harmonics[s].pick(null,1)),Ce.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(`${cv}/push_file`,{method:"POST",body:a})}static async loadFile(t){return await(await fetch(t)).arrayBuffer()}mortonPositionSplatsSort(){let t=Xp(this.xyz),e=fn(this.xyz,t),r=fn(this.colors,t),o=fn(this.opacity,t),i=fn(this.scaling,t),a=fn(this.rotation,t),s=[];for(let l=0;l<this.harmonics.length;l++)s.push(fn(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
|
|
2608
2608
|
format ${e.format} ${e.version}
|
|
2609
2609
|
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}
|
|
2610
2610
|
property ${a[s].dtype} ${a[s].name}`;return`${o}
|
|
2611
2611
|
end_header
|
|
2612
2612
|
`}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,d=(0,No.default)(new Float32Array(s),[r,l]),c=0,u={},p={double:8,int:4,uint:4,float:4,short:2,ushort:2,uchar:1};for(let b in i)if(i.hasOwnProperty(b)){let _=i[b].dtype;u[b]=c,c+=p[_]}let f=(0,No.default)(new Float32Array(r*3),[r,3]);Ce.assign(f.pick(null,0),d.pick(null,u.x/4)),Ce.assign(f.pick(null,1),d.pick(null,u.y/4)),Ce.assign(f.pick(null,2),d.pick(null,u.z/4));let h=(0,No.default)(new Float32Array(r*3),[r,3]);Ce.assign(h.pick(null,0),d.pick(null,u.scale_0/4)),Ce.assign(h.pick(null,1),d.pick(null,u.scale_1/4)),Ce.assign(h.pick(null,2),d.pick(null,u.scale_2/4));let m=(0,No.default)(new Float32Array(r*3),[r,3]);Ce.assign(m.pick(null,0),d.pick(null,u.f_dc_0/4)),Ce.assign(m.pick(null,1),d.pick(null,u.f_dc_1/4)),Ce.assign(m.pick(null,2),d.pick(null,u.f_dc_2/4));let y=(0,No.default)(new Float32Array(r*4),[r,4]);Ce.assign(y.pick(null,0),d.pick(null,u.rot_1/4)),Ce.assign(y.pick(null,1),d.pick(null,u.rot_2/4)),Ce.assign(y.pick(null,2),d.pick(null,u.rot_3/4)),Ce.assign(y.pick(null,3),d.pick(null,u.rot_0/4));for(let b=0;b<r;b++){let _=y.pick(b,null),A=Math.sqrt(_.get(0)**2+_.get(1)**2+_.get(2)**2+_.get(3)**2);Ce.divseq(_,A)}let g=(0,No.default)(new Float32Array(r*1),[r,1]);Ce.assign(g.pick(null,0),d.pick(null,u.opacity/4));let S=(Math.min(Math.max(e,0),3)+1)**2-1,w=[];for(let b=0;b<S;b++){let _=(0,No.default)(new Float32Array(r*3),[r,3]),A=b*3;Ce.assign(_.pick(null,0),d.pick(null,u[`f_rest_${A}`]/4)),Ce.assign(_.pick(null,1),d.pick(null,u[`f_rest_${A+1}`]/4)),Ce.assign(_.pick(null,2),d.pick(null,u[`f_rest_${A+2}`]/4)),w.push(_)}return new gr(i,a,r,f,m,w,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(`
|
|
2613
|
-
`),s=0,l={},d={},c=0,u;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],x=y[3];l[x]=c,d[x]={dtype:g,index:c},c++}}else if(m.startsWith("format")){let y=m.match(/(\w+)\s+(\w+)\s+(\d+\.?\d*)/);y&&(u={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:d,format:u}}};var Xn=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=je.fromArray(t.xyz,e.xyz,e.chunkSize),o=je.fromArray(t.scaling,e.scaling,e.chunkSize),i=je.fromArray(t.colors,e.color,e.chunkSize),a=je.fromArray(t.opacity,e.opacity,e.chunkSize),s=je.fromArray(t.rotation,e.quaternion,e.chunkSize),l=t.harmonics,d=[];if(e.harmonics)for(let c=0;c<l.length;c++){let u=je.fromArray(l[c],e.harmonics,e.chunkSize);d.push(u)}return new Xn(e,r,o,i,a,s,d)}_countIndexesInChunks(t){let e=[],r=this.nchunks,o=this.chunkSize,i=this.nsplats,a=je.getRequiredNChunks(i,o);if(r===a)for(let s=0;s<t.length;s++){let l=t[s],d=Math.floor(l/this.chunkSize);d in e?e[d].push(l):e[d]=[l]}else{let s=this.variableChunkSize,l={},d=0;for(let c=0;c<r;c++)l[c]=d,d+=s[c];for(let c=0;c<t.length;c++){let u=t[c],p=Math.min(Math.floor(u/o),r-1);for(;u>=l[p]+s[p];)p++;p in e?e[p].push(u):e[p]=[u]}}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 Xn(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 Kn=Rt(
|
|
2613
|
+
`),s=0,l={},d={},c=0,u;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],x=y[3];l[x]=c,d[x]={dtype:g,index:c},c++}}else if(m.startsWith("format")){let y=m.match(/(\w+)\s+(\w+)\s+(\d+\.?\d*)/);y&&(u={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:d,format:u}}};var Xn=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=je.fromArray(t.xyz,e.xyz,e.chunkSize),o=je.fromArray(t.scaling,e.scaling,e.chunkSize),i=je.fromArray(t.colors,e.color,e.chunkSize),a=je.fromArray(t.opacity,e.opacity,e.chunkSize),s=je.fromArray(t.rotation,e.quaternion,e.chunkSize),l=t.harmonics,d=[];if(e.harmonics)for(let c=0;c<l.length;c++){let u=je.fromArray(l[c],e.harmonics,e.chunkSize);d.push(u)}return new Xn(e,r,o,i,a,s,d)}_countIndexesInChunks(t){let e=[],r=this.nchunks,o=this.chunkSize,i=this.nsplats,a=je.getRequiredNChunks(i,o);if(r===a)for(let s=0;s<t.length;s++){let l=t[s],d=Math.floor(l/this.chunkSize);d in e?e[d].push(l):e[d]=[l]}else{let s=this.variableChunkSize,l={},d=0;for(let c=0;c<r;c++)l[c]=d,d+=s[c];for(let c=0;c<t.length;c++){let u=t[c],p=Math.min(Math.floor(u/o),r-1);for(;u>=l[p]+s[p];)p++;p in e?e[p].push(u):e[p]=[u]}}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 Xn(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 Kn=Rt(ja()),ct=Rt(Ua());import{Matrix3 as Kp,Matrix4 as kI,Quaternion as FI}from"three";var yv={xyz:3,color:3,opacity:1,scaling:3,quaternion:4,harmonics:3},hn=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,Kn.default)(new Float32Array(e.shape[0]*4),[e.shape[0],4]);return ct.mulseq(e,t),ct.addseq(e,.5),ct.mulseq(e,255),ct.maxseq(e,0),ct.minseq(e,255),ct.negeq(r),ct.expeq(r),ct.addseq(r,1),ct.recipeq(r),ct.mulseq(r,255),ct.assign(o.hi(e.shape[0],3).lo(0,0),e),ct.assign(o.hi(e.shape[0],4).lo(0,3),r),(0,Kn.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,d=Array(Object.keys(a).length);for(let g in a)d[a[g].index]={name:g,method:a[g].compressionMethod};let c=e*2*4,u=l,p=o==="dynamic"?e*2:0,f,h=!1;if(p>0){let g=new Uint16Array(i.buffer.slice(u,u+p));u+=p,f=Array.from(g),h=!0}let m={};for(let g of d){let x=0,S=!0;if(g.method==="norm8x")x=t*1*yv[g.name];else if(g.method==="norm11")x=t*4;else if(g.method==="norm565")x=t*2;else throw S=!1,new Error(`Not Implemented format: ${g.method}`);let w;if(S){let A=i.buffer.slice(u,u+c);w=(0,Kn.default)(new Float32Array(A),[e,2]),u+=c}else throw new Error("loading chunk byt hasnot minmax!");let b=i.buffer.slice(u,u+x);u+=x;let _;if(g.method==="norm8x")_=(0,Kn.default)(new Uint8Array(b),[t,yv[g.name]]);else if(g.method==="norm11")_=(0,Kn.default)(new Uint32Array(b));else if(g.method==="norm565")_=(0,Kn.default)(new Uint16Array(b));else throw new Error(`Not Implemented format: ${g.method}`);m[g.name]=new je(_,w,r,g.method,f,h)}let y=[];for(let g=0;g<15;g++){let x=m[`harmonics_${g}`];x&&(y.push(x),delete m[`harmonics_${g}`])}return y.length>0&&(m.harmonics=y),new Xn(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(),d=new FI,c=new Kp,u=new Kp,p=new Kp,f=new kI;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))),u.setFromMatrix4(f),d.set(l.get(h,0),l.get(h,1),l.get(h,2),l.get(h,3)),f.makeRotationFromQuaternion(d),c.setFromMatrix4(f),p.copy(c).multiply(u);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(`
|
|
2614
2614
|
`),s=0,l=0,d=0,c=0,u="",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 x=g[2],S=g[3];p[x]={compressionMethod:S,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&&(d=parseInt(g[0]))}else if(y.startsWith("element typeChunks")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);g&&(u=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:d,typeChunks:u,vertexData:h,propertiesDesc:p}}pruneSplats(t){let r=this.decodeBuffer().pruneSplats(t);return hn.fromCompressedGaussianSplats(r)}static fromCompressedGaussianSplats(t){let e=t.xyz.length,r=t.xyz.nchunks,o=`gspline
|
|
2615
2615
|
element vertex ${e}
|
|
2616
2616
|
element chunks ${r}
|
|
@@ -2623,7 +2623,7 @@ property scaling ${t.scaling.method}
|
|
|
2623
2623
|
property quaternion ${t.quaternion.method}`;if(t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++)o=`${o}
|
|
2624
2624
|
property harmonics_${M} ${t.harmonics[M].method}`;o=`${o}
|
|
2625
2625
|
end_header
|
|
2626
|
-
`;let a=new TextEncoder().encode(o),s=r*2*4,l=t.xyz.quantized.data.buffer.byteLength,d=t.xyz instanceof je?s:0,c=t.color.quantized.data.buffer.byteLength,u=t.color instanceof je?s:0,p=t.opacity.quantized.data.buffer.byteLength,f=t.opacity instanceof je?s:0,h=t.scaling.quantized.data.buffer.byteLength,m=t.scaling instanceof je?s:0,y=t.quaternion.quantized.data.buffer.byteLength,g=t.quaternion instanceof je?s:0,x=t.variableChunkSize?Uint16Array.from(t.variableChunkSize):void 0,S=x?x.byteLength:0,w=a.byteLength+S+l+d+c+u+p+f+h+m+y+g,b=0,_=0;if(t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++)b+=t.harmonics[M].quantized.data.buffer.byteLength,_+=t.harmonics[M]instanceof je?s:0;b=0,_=0,w+=b+_;let A=new Uint8Array(w),v=0;if(A.set(a,v),v+=a.byteLength,S>0&&(A.set(new Uint8Array(x.buffer),v),v+=S),t.xyz instanceof je&&(A.set(new Uint8Array(t.xyz.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.xyz.quantized.data.buffer),v),v+=l,t.color instanceof je&&(A.set(new Uint8Array(t.color.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.color.quantized.data.buffer),v),v+=c,t.opacity instanceof je&&(A.set(new Uint8Array(t.opacity.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.opacity.quantized.data.buffer),v),v+=p,t.scaling instanceof je&&(A.set(new Uint8Array(t.scaling.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.scaling.quantized.data.buffer),v),v+=h,t.quaternion instanceof je&&(A.set(new Uint8Array(t.quaternion.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.quaternion.quantized.data.buffer),v),v+=y,b>0&&t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++){let O=t.harmonics[M];O instanceof je&&(A.set(new Uint8Array(O.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(O.quantized.data.buffer),v),v+=O.quantized.data.byteLength}return new hn(A.buffer)}};var gv="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var co=class{};yt(co,"DepthMapRange",1<<16),yt(co,"MemoryPageSize",65536),yt(co,"BytesPerFloat",4),yt(co,"BytesPerInt",4);function
|
|
2626
|
+
`;let a=new TextEncoder().encode(o),s=r*2*4,l=t.xyz.quantized.data.buffer.byteLength,d=t.xyz instanceof je?s:0,c=t.color.quantized.data.buffer.byteLength,u=t.color instanceof je?s:0,p=t.opacity.quantized.data.buffer.byteLength,f=t.opacity instanceof je?s:0,h=t.scaling.quantized.data.buffer.byteLength,m=t.scaling instanceof je?s:0,y=t.quaternion.quantized.data.buffer.byteLength,g=t.quaternion instanceof je?s:0,x=t.variableChunkSize?Uint16Array.from(t.variableChunkSize):void 0,S=x?x.byteLength:0,w=a.byteLength+S+l+d+c+u+p+f+h+m+y+g,b=0,_=0;if(t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++)b+=t.harmonics[M].quantized.data.buffer.byteLength,_+=t.harmonics[M]instanceof je?s:0;b=0,_=0,w+=b+_;let A=new Uint8Array(w),v=0;if(A.set(a,v),v+=a.byteLength,S>0&&(A.set(new Uint8Array(x.buffer),v),v+=S),t.xyz instanceof je&&(A.set(new Uint8Array(t.xyz.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.xyz.quantized.data.buffer),v),v+=l,t.color instanceof je&&(A.set(new Uint8Array(t.color.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.color.quantized.data.buffer),v),v+=c,t.opacity instanceof je&&(A.set(new Uint8Array(t.opacity.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.opacity.quantized.data.buffer),v),v+=p,t.scaling instanceof je&&(A.set(new Uint8Array(t.scaling.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.scaling.quantized.data.buffer),v),v+=h,t.quaternion instanceof je&&(A.set(new Uint8Array(t.quaternion.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.quaternion.quantized.data.buffer),v),v+=y,b>0&&t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++){let O=t.harmonics[M];O instanceof je&&(A.set(new Uint8Array(O.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(O.quantized.data.buffer),v),v+=O.quantized.data.byteLength}return new hn(A.buffer)}};var gv="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var co=class{};yt(co,"DepthMapRange",1<<16),yt(co,"MemoryPageSize",65536),yt(co,"BytesPerFloat",4),yt(co,"BytesPerInt",4);function jI(n){let t,e,r,o,i,a,s,l,d,c,u,p,f,h,m,y;function g(T){let C=new Float64Array(c,a,16);for(let I=0;I<16;I++)C[I]=T[I];let P;if(r>1){t.exports.sortIndexes(o,i,d,a,s,l,p.DepthMapRange,r);let I=new Uint32Array(r);P=I.buffer,I.set(new Uint32Array(c,l,r))}else if(r===1){let I=new Uint32Array(r);I[0]=new Uint32Array(c,o,e)[0],P=I.buffer}else P=new ArrayBuffer(0);n.postMessage({sortDone:!0,indexesBuffer:P},[P])}function x(T,C,P){let I=new Float32Array(c,i,e*3);r=0;let D=new Uint32Array(c,o,e);for(let G=0;G<P.length-1;G++){let N=C[G],F=T[G].elements,B=N.filter(V=>V.enabled&&V.mode==="Include").map(V=>V.type==="Box"?_(V):M(V)),R=N.filter(V=>V.enabled&&V.mode==="Exclude").map(V=>V.type==="Box"?_(V):M(V));for(let V=P[G];V<P[G+1];V++){let q=f[V*3],Y=f[V*3+1],$=f[V*3+2];if((B.length===0||w(q,Y,$,B))&&(R.length===0||!w(q,Y,$,R))){let H=1/(F[3]*q+F[7]*Y+F[11]*$+F[15]);I[r*3]=(F[0]*q+F[4]*Y+F[8]*$+F[12])*H,I[r*3+1]=(F[1]*q+F[5]*Y+F[9]*$+F[13])*H,I[r*3+2]=(F[2]*q+F[6]*Y+F[10]*$+F[14])*H,D[r]=V,r++}}}}function S(T,C){let P=[],I=C.filter(N=>N.enabled&&N.mode==="Include").map(N=>N.type==="Box"?_(N):M(N)),D=C.filter(N=>N.enabled&&N.mode==="Exclude").map(N=>N.type==="Box"?_(N):M(N)),G=T.length;for(let N=0;N<G;N+=3){let F=T[N],B=T[N+1],R=T[N+2];(I.length===0||w(F,B,R,I))&&(D.length===0||!w(F,B,R,D))||P.push(N/3)}return console.log(P),P}function w(T,C,P,I,D){return I[D==="Intersect"?"every":"some"](G=>{let N=b(T,C,P,G.invRotationMatrix,G.cropCenter);return Array.isArray(G)?v(N.x,N.y,N.z,G):O(N.x,N.y,N.z,G)})}function b(T,C,P,I,D){let G=T-D[0],N=C-D[1],F=P-D[2],B=1/(I[3]*G+I[7]*N+I[11]*F+I[15]);return{x:(I[0]*G+I[4]*N+I[8]*F+I[12])*B+D[0],y:(I[1]*G+I[5]*N+I[9]*F+I[13])*B+D[1],z:(I[2]*G+I[6]*N+I[10]*F+I[14])*B+D[2]}}function _(T){let C=T.cropSize[0]/2,P=T.cropSize[1]/2,I=T.cropSize[2]/2,D=[T.cropCenter[0]-C,T.cropCenter[1]-P,T.cropCenter[2]-I,T.cropCenter[0]+C,T.cropCenter[1]+P,T.cropCenter[2]+I],G=A(T.cropRotation);return Object.assign(D,{invRotationMatrix:G,cropCenter:T.cropCenter})}function A(T){let C=[],P=T[0]*Math.PI/180,I=T[1]*Math.PI/180,D=T[2]*Math.PI/180,G=Math.cos(P),N=Math.sin(P),F=Math.cos(I),B=Math.sin(I),R=Math.cos(D),V=Math.sin(D),q=G*R,Y=G*V,$=N*R,H=N*V;return C[0]=F*R,C[1]=-F*V,C[2]=B,C[4]=Y+$*B,C[5]=q-H*B,C[6]=-N*F,C[8]=H-q*B,C[9]=$+Y*B,C[10]=G*F,C[12]=0,C[13]=0,C[14]=0,C[3]=0,C[7]=0,C[11]=0,C[15]=1,C}function v(T,C,P,I){return T>=I[0]&&T<=I[3]&&C>=I[1]&&C<=I[4]&&P>=I[2]&&P<=I[5]}function M(T){let C=2/T.cropSize[0],P=2/T.cropSize[1],I=2/T.cropSize[2],D=A(T.cropRotation);return{invRadiusX:C,invRadiusY:P,invRadiusZ:I,cropCenter:T.cropCenter,invRotationMatrix:D}}function O(T,C,P,I){let D=(T-I.cropCenter[0])*I.invRadiusX,G=(C-I.cropCenter[1])*I.invRadiusY,N=(P-I.cropCenter[2])*I.invRadiusZ;return D*D+G*G+N*N<=1}n.onmessage=T=>{if(T.data.getCroppedIndexes){let C=new Uint32Array(S(new Float32Array(T.data.positions),T.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:C},[C])}else if(T.data.positions)u=T.data.positions,f=new Float32Array(u),m=T.data.meshMatrixWorlds,y=T.data.cropsArray,h=T.data.meshIndexIntervals,x(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,x(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 C=p.BytesPerInt,P=p.BytesPerFloat*3,I=new Uint8Array(T.data.init.sorterWasmBytes),D=C+P,G=e*D,N=e*p.BytesPerInt*2+p.DepthMapRange*p.BytesPerInt*2,F=p.MemoryPageSize*32,B=G+N+F,R=Math.floor(B/p.MemoryPageSize)+1,V={module:{},env:{memory:new WebAssembly.Memory({initial:R*2,maximum:R*3,shared:!0})}};WebAssembly.compile(I).then(q=>WebAssembly.instantiate(q,V)).then(q=>{t=q,o=0,i=e*C,a=i+e*P,d=a+16*p.BytesPerFloat*2,s=d+e*p.BytesPerInt,l=s+p.DepthMapRange*p.BytesPerInt,c=V.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function xv(n){let t=new Worker(URL.createObjectURL(new Blob(["(",jI.toString(),")(self)"],{type:"application/javascript"}))),e=atob(gv),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:co.BytesPerFloat,BytesPerInt:co.BytesPerInt,DepthMapRange:co.DepthMapRange,MemoryPageSize:co.MemoryPageSize}}}),t}import{Matrix4 as nN,Quaternion as wv,Vector2 as iN,Vector3 as Ha}from"three";import{BufferAttribute as UI,BufferGeometry as HI,Color as qI,DataTexture as pu,DataUtils as WI,DoubleSide as $I,DynamicDrawUsage as YI,FloatType as bv,HalfFloatType as XI,InstancedBufferAttribute as KI,InstancedBufferGeometry as QI,Mesh as ZI,NormalBlending as JI,RGBAFormat as eN,RGBAIntegerFormat as tN,RGFormat as Sv,ShaderMaterial as rN,UnsignedIntType as oN,Vector2 as mn}from"three";var du=function(){let n=new Float32Array(1),t=new Int32Array(n.buffer);return function(e){return n[0]=e,t[0]}}(),vv=function(n,t,e,r){return n+(t<<8)+(e<<16)+(r<<24)};var fu=new mn,yn=class extends ZI{constructor(e,r,o,i,a=!1,s=1,l,d){super(o,i);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=d,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=yn.buildGeomtery(r),d=yn.buildMaterial(a);return new yn(e,r,l,d,o,i,a,s)}static buildMaterial(e){let r=`
|
|
2627
2627
|
precision highp float;
|
|
2628
2628
|
#include <common>
|
|
2629
2629
|
|
|
@@ -2777,4 +2777,4 @@ end_header
|
|
|
2777
2777
|
A = exp(A) * vColor.a;
|
|
2778
2778
|
gl_FragColor = vec4(color.rgb, A);
|
|
2779
2779
|
gVelocity = vec4(0.0); // so it is ignored by TAA
|
|
2780
|
-
}`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new mn},viewport:{type:"v2",value:new mn},basisViewport:{type:"v2",value:new mn},debugColor:{type:"v3",value:new HI},covariancesTextureSize:{type:"v2",value:new mn(1024,1024)},centersColorsTextureSize:{type:"v2",value:new mn(1024,1024)},orthoZoom:{type:"f",value:-1}};return new tN({uniforms:i,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:ZI,depthTest:!0,depthWrite:!1,side:WI})}static buildGeomtery(e){let r=new UI;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new jI(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 KI().copy(r),s=new Uint32Array(e),l=new XI(s,1,!1);return l.setUsage($I),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,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 mn(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new mn(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=qI.toHalfFloat(this.covariances[h]);s=new pu(l,i.x,i.y,Sv,YI)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new pu(l,i.x,i.y,Sv,bv);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let d=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,g=h*4;d[g]=vv(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),d[g+1]=du(this.centers[y]),d[g+2]=du(this.centers[y+1]),d[g+3]=du(this.centers[y+2])}let c=new pu(d,a.x,a.y,eN,rN);c.internalFormat="RGBA32UI",c.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=c,this.material.uniforms.centersColorsTextureSize.value.copy(a);let u=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 pu(p,u,1,JI,bv);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:d,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&&(fu.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(fu),this.material.uniforms.basisViewport.value.set(2/fu.x,2/fu.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 Hs=class{constructor(t={}){yt(this,"updateSplatMeshUniforms",function(){let t=new nN;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))}}());yt(this,"updateView",function(){let t=new oN,e=[],r=new qa(0,0,-1),o=new qa(0,0,-1),i=new qa,a=new qa;return function(s=!1){let l=this.updateMatrixWorldsInWorkerIfNeeded(),d=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(this.camera.quaternion);let u=!1,p=!1;if(o.dot(r)<=.95&&(u=!0),a.copy(this.camera.position).sub(i).length()>=1&&(p=!0),!u&&!p&&!l&&!d)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}:{},...d?{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 qa().fromArray(t.position)),t.orientation&&(t.orientation=new wv().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 hn(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,d)=>l!==this.cropsArray[r][i][a][d])?(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 qa,o=new wv,i=!1,a=1,s,l){this.splatMesh=yn.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=xv(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 dN=new cN;dN.wireframe=!0;var _v=new aN,hu=class extends iN{constructor(e,r){super();this.data=e;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 lu;this.errorPage=new dn("fdasfa",{...xo.defaultData,name:""});this.invisibleObjects=new un("jflkdsafjasdifjaslk",{...$l.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Fx(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=kx(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 dn&&(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)=>tf(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===Uo)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}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(),i.resetBBoxNeedsUpdate(),cn(i)&&Va(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),Va(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),cn(o)&&(o.freeBooleanPointer(),i instanceof yr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof ja&&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(),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),cn(o)&&(o.invalidateUpstreamBooleanData(),Va(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof yr&&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 dn&&(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{Vx(a,r,o,{scene:this,shared:i}),a instanceof st&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}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=>{Va(i)&&i.recomputeBoolean(),i instanceof Mo&&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){Ae.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{Ae.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,i,a,s,l){if(e){let d=i.find(e);d&&d!==i&&a.forInstancesRec(c=>{c.data=Vo(c.data,u=>{let p=u.events.data(l.id),f=c.goUp(s);if(f){let h=[...$s(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,g=ot.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 Io&&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=Vo(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Ql.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 Io&&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),iu(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Io&&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)Ae.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(Ae.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let d=[];if(e.intersectObject(s,!0,d),d.length){let c=d[0];c.object=s,c.point.applyMatrix4(c.object.matrixWorld);let u=s.matrixWorld.clone().invert();c.point.applyMatrix4(u),o.push(c)}}else(cn(s)||zs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Us(s,e,o)),i(s)}};return i(this),o}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Ae.is(a)&&(a.visible||s?.object.data.visible)&&((cn(a)||zs(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Us(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)Ae.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)Ae.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)Ae.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof st&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,r).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Va(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)Gi.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)Ae.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},d=su(e,r,l);return d&&(this.entityByUuid[e]=d,i.add(d),i.children.splice(a,0,i.children.pop()),o.length>0&&(d.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,d,s)),d.updateState(r,l),d instanceof st&&d.updateGeometryGroupsIfNeeded(),d.updateVisible(),d.cloner&&this.toExpandCloner.add(d),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&d.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof st&&u.bones&&u.boneInverses){let p=u.bones.map(m=>this.find(m)),f=u.boneInverses.map(m=>new sN().fromArray(m)),h=new uN(p,f);c.bind(h,c.bindMatrix)}else c.matrixAutoUpdate=!0}),d}getCenter(e){let r=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],d=this.find(s),c=l?d.recursiveBBox:d.singleBBox;r.push(...c.vertices)}let o=new lN;return o.setFromPoints(r),o.getCenter(_v),_v}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 It)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof Zt&&e(r.material[o]);else r.material instanceof Zt&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(i=>{i instanceof Mo&&i.setViewplaneSize(e,r,o)})}initializeSplatViewer(e){this.splatViewer=new Hs({scene:this,renderer:e}),this.reloadSplats()}reloadSplats(){this.splatViewer?.reloadSplats()}};import{DRACOLoader as pN}from"three/examples/jsm/loaders/DRACOLoader.js";var gn;function fN(){return gn||(gn=new pN,gn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),gn.decoderPending}async function hN(n){if(gn){let t={attributeIDs:gn.defaultAttributeIDs,attributeTypes:gn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await gn.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 Av(n,t){let[e,r]=Pu(Bl.deserialize(new Uint8Array(n)));ec(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 fN();for(let i of o){let a=await hN(Ye(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:d,itemSize:c})=>{s[l]={array:d,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 zne}from"three";import{mergeBufferGeometries as jne}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Tv(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 Cv,ShaderLib as mN}from"three";function Pv(n){let t=new Set;return n.traverse(e=>{if(e instanceof Jt)if(Ze(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(yN(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Cv,specularColor:new Cv});let o=0;e.onBeforeCompile=(i,a)=>{r&&r(i,a),i.uniforms=Object.assign({},mN.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=O0(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else gN(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function yN(n){return n.getLayersOfType("transmission").length>0}function gN(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 Ov(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Mv(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 xN}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Iv(n){let t=[];return n.traverse(e=>{e instanceof La&&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(d){console.error(d)}return l!==void 0&&s.matrix.determinant()<0&&Tv(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof It&&a.unshift(r.geometry),a.length){let s=xN(a);r instanceof It&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:n,shared:q0})}),n}function Nv(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function Ev(n){Object.values(n.shared.materials).forEach(t=>{Qp(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?Qp(e.material):"materials"in e&&e.materials.forEach(r=>{Qp(r)})})}function Qp(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 Vv=Rt(Dv(),1);function Bv(n){return n.traverseMaterial(t=>{t.needsJitter=!1}),n}var Rv="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Zp=class extends bN{load(t,e,r,o=console.error){let i=new vN(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Rv+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Rv),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 Av(t,Ev);e.version&&(0,Vv.default)(e.version,"0.9.521")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([J0(e)&&i0(),ux(e)&&j0()].filter(Boolean));let r=new jn(e.shared);Object.values(r.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new hu(e.scene,r),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=Iv(o),o=Pv(o),o=Ov(o),o=Mv(o),o=Nv(o),o=Bv(o),o}};export{Zp as default};
|
|
2780
|
+
}`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new mn},viewport:{type:"v2",value:new mn},basisViewport:{type:"v2",value:new mn},debugColor:{type:"v3",value:new qI},covariancesTextureSize:{type:"v2",value:new mn(1024,1024)},centersColorsTextureSize:{type:"v2",value:new mn(1024,1024)},orthoZoom:{type:"f",value:-1}};return new rN({uniforms:i,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:JI,depthTest:!0,depthWrite:!1,side:$I})}static buildGeomtery(e){let r=new HI;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new UI(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 QI().copy(r),s=new Uint32Array(e),l=new KI(s,1,!1);return l.setUsage(YI),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 mn(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new mn(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=WI.toHalfFloat(this.covariances[h]);s=new pu(l,i.x,i.y,Sv,XI)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new pu(l,i.x,i.y,Sv,bv);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let d=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,g=h*4;d[g]=vv(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),d[g+1]=du(this.centers[y]),d[g+2]=du(this.centers[y+1]),d[g+3]=du(this.centers[y+2])}let c=new pu(d,a.x,a.y,tN,oN);c.internalFormat="RGBA32UI",c.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=c,this.material.uniforms.centersColorsTextureSize.value.copy(a);let u=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 pu(p,u,1,eN,bv);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:d,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&&(fu.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(fu),this.material.uniforms.basisViewport.value.set(2/fu.x,2/fu.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 Hs=class{constructor(t={}){yt(this,"updateSplatMeshUniforms",function(){let t=new iN;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))}}());yt(this,"updateView",function(){let t=new nN,e=[],r=new Ha(0,0,-1),o=new Ha(0,0,-1),i=new Ha,a=new Ha;return function(s=!1){let l=this.updateMatrixWorldsInWorkerIfNeeded(),d=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(this.camera.quaternion);let u=!1,p=!1;if(o.dot(r)<=.95&&(u=!0),a.copy(this.camera.position).sub(i).length()>=1&&(p=!0),!u&&!p&&!l&&!d)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}:{},...d?{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 Ha().fromArray(t.position)),t.orientation&&(t.orientation=new wv().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 hn(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,d)=>l!==this.cropsArray[r][i][a][d])?(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 Ha,o=new wv,i=!1,a=1,s,l){this.splatMesh=yn.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=xv(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 pN=new uN;pN.wireframe=!0;var _v=new sN,hu=class extends aN{constructor(e,r){super();this.data=e;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 lu;this.errorPage=new dn("fdasfa",{...xo.defaultData,name:""});this.invisibleObjects=new un("jflkdsafjasdifjaslk",{...$l.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Fx(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=kx(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 dn&&(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)=>tf(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===Uo)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}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(),i.resetBBoxNeedsUpdate(),cn(i)&&Gs(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),Gs(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),cn(o)&&(o.freeBooleanPointer(),i instanceof er&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Fa&&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(),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),cn(o)&&(o.invalidateUpstreamBooleanData(),Gs(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof er&&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 dn&&(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{Vx(a,r,o,{scene:this,shared:i}),a instanceof st&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}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 Mo&&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){Ae.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{Ae.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,i,a,s,l){if(e){let d=i.find(e);d&&d!==i&&a.forInstancesRec(c=>{c.data=Vo(c.data,u=>{let p=u.events.data(l.id),f=c.goUp(s);if(f){let h=[...$s(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,g=ot.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 Io&&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=Vo(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Ql.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 Io&&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),iu(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Io&&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)Ae.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(Ae.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let d=[];if(e.intersectObject(s,!0,d),d.length){let c=d[0];c.object=s,c.point.applyMatrix4(c.object.matrixWorld);let u=s.matrixWorld.clone().invert();c.point.applyMatrix4(u),o.push(c)}}else(cn(s)||zs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Us(s,e,o)),i(s)}};return i(this),o}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Ae.is(a)&&(a.visible||s?.object.data.visible)&&((cn(a)||zs(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Us(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)Ae.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)Ae.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)Ae.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof st&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,r).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Gs(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)Gi.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)Ae.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},d=su(e,r,l);return d&&(this.entityByUuid[e]=d,i.add(d),i.children.splice(a,0,i.children.pop()),o.length>0&&(d.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,d,s)),d.updateState(r,l),d instanceof st&&d.updateGeometryGroupsIfNeeded(),d.updateVisible(),d.cloner&&this.toExpandCloner.add(d),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&d.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof st&&u.bones&&u.boneInverses){let p=u.bones.map(m=>this.find(m)),f=u.boneInverses.map(m=>new lN().fromArray(m)),h=new dN(p,f);c.bind(h,c.bindMatrix)}else c.matrixAutoUpdate=!0}),d}getCenter(e){let r=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],d=this.find(s),c=l?d.recursiveBBox:d.singleBBox;r.push(...c.vertices)}let o=new cN;return o.setFromPoints(r),o.getCenter(_v),_v}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 It)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof Zt&&e(r.material[o]);else r.material instanceof Zt&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(i=>{i instanceof Mo&&i.setViewplaneSize(e,r,o)})}initializeSplatViewer(e){this.splatViewer=new Hs({scene:this,renderer:e}),this.reloadSplats()}reloadSplats(){this.splatViewer?.reloadSplats()}};import{DRACOLoader as fN}from"three/examples/jsm/loaders/DRACOLoader.js";var gn;function hN(){return gn||(gn=new fN,gn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),gn.decoderPending}async function mN(n){if(gn){let t={attributeIDs:gn.defaultAttributeIDs,attributeTypes:gn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await gn.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 Av(n,t){let[e,r]=Pu(Bl.deserialize(new Uint8Array(n)));ec(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 hN();for(let i of o){let a=await mN(Ye(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:d,itemSize:c})=>{s[l]={array:d,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 Gne}from"three";import{mergeBufferGeometries as Fne}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Tv(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 Cv,ShaderLib as yN}from"three";function Pv(n){let t=new Set;return n.traverse(e=>{if(e instanceof Jt)if(Ze(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(gN(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Cv,specularColor:new Cv});let o=0;e.onBeforeCompile=(i,a)=>{r&&r(i,a),i.uniforms=Object.assign({},yN.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=O0(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else xN(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function gN(n){return n.getLayersOfType("transmission").length>0}function xN(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 Ov(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Mv(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 vN}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Iv(n){let t=[];return n.traverse(e=>{e instanceof Da&&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(d){console.error(d)}return l!==void 0&&s.matrix.determinant()<0&&Tv(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof It&&a.unshift(r.geometry),a.length){let s=vN(a);r instanceof It&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:n,shared:q0})}),n}function Nv(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function Ev(n){Object.values(n.shared.materials).forEach(t=>{Qp(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?Qp(e.material):"materials"in e&&e.materials.forEach(r=>{Qp(r)})})}function Qp(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 Vv=Rt(Lv(),1);function Bv(n){return n.traverseMaterial(t=>{t.needsJitter=!1}),n}var Rv="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Zp=class extends SN{load(t,e,r,o=console.error){let i=new bN(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Rv+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Rv),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 Av(t,Ev);e.version&&(0,Vv.default)(e.version,"0.9.522")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([J0(e)&&i0(),ux(e)&&j0()].filter(Boolean));let r=new jn(e.shared);Object.values(r.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new hu(e.scene,r),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=Iv(o),o=Pv(o),o=Ov(o),o=Mv(o),o=Nv(o),o=Bv(o),o}};export{Zp as default};
|