@splinetool/loader 0.9.81 → 0.9.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- var ph=Object.create;var Ta=Object.defineProperty;var dh=Object.getOwnPropertyDescriptor;var mh=Object.getOwnPropertyNames;var fh=Object.getPrototypeOf,hh=Object.prototype.hasOwnProperty;var bc=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),gh=(n,t)=>{for(var e in t)Ta(n,e,{get:t[e],enumerable:!0})},yh=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of mh(t))!hh.call(n,o)&&o!==e&&Ta(n,o,{get:()=>t[o],enumerable:!(r=dh(t,o))||r.enumerable});return n};var _c=(n,t,e)=>(e=n!=null?ph(fh(n)):{},yh(t||!n||!n.__esModule?Ta(e,"default",{value:n,enumerable:!0}):e,n));var Sf=bc(_a=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||t;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var u=this||t;if(l=parseFloat(l),u.ctx||p(),typeof l<"u"&&l>=0&&l<=1){if(u._volume=l,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);h&&h._node&&(h._node.volume=h._volume*l)}return u}return u._volume},mute:function(l){var u=this||t;u.ctx||p(),u._muted=l,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return u},stop:function(){for(var l=this||t,u=0;u<l._howls.length;u++)l._howls[u].stop();return l},unload:function(){for(var l=this||t,u=l._howls.length-1;u>=0;u--)l._howls[u].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,p()),l},codecs:function(l){return(this||t)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||t;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var u=new Audio;u.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return l}if(!u||typeof u.canPlayType!="function")return l;var d=u.canPlayType("audio/mpeg;").replace(/^no$/,""),m=l._navigator?l._navigator.userAgent:"",f=m.match(/OPR\/([0-6].)/g),h=f&&parseInt(f[0].split("/")[1],10)<33,g=m.indexOf("Safari")!==-1&&m.indexOf("Chrome")===-1,x=m.match(/Version\/(.*?) /),v=g&&x&&parseInt(x[1],10)<15;return l._codecs={mp3:!!(!h&&(d||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,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:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&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$/,"")},l},_unlockAudio:function(){var l=this||t;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var u=function(d){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var m=new Audio;m._unlocked=!0,l._releaseHtml5Audio(m)}catch{l.noAudio=!0;break}for(var f=0;f<l._howls.length;f++)if(!l._howls[f]._webAudio)for(var h=l._howls[f]._getSoundIds(),g=0;g<h.length;g++){var x=l._howls[f]._soundById(h[g]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._node.load())}l._autoResume();var v=l.ctx.createBufferSource();v.buffer=l._scratchBuffer,v.connect(l.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),v.onended=function(){v.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var A=0;A<l._howls.length;A++)l._howls[A]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),l}},_obtainHtml5Audio:function(){var l=this||t;if(l._html5AudioPool.length)return l._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(l){var u=this||t;return l._unlocked&&u._html5AudioPool.push(l),u},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<l._howls.length;u++)if(l._howls[u]._webAudio){for(var d=0;d<l._howls[u]._sounds.length;d++)if(!l._howls[u]._sounds[d]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var m=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(m,m)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!t.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var u=0;u<l._howls.length;u++)l._howls[u]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var t=new n,e=function(l){var u=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(l)};e.prototype={init:function(l){var u=this;return t.ctx||p(),u._autoplay=l.autoplay||!1,u._format=typeof l.format!="string"?l.format:[l.format],u._html5=l.html5||!1,u._muted=l.mute||!1,u._loop=l.loop||!1,u._pool=l.pool||5,u._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,u._rate=l.rate||1,u._sprite=l.sprite||{},u._src=typeof l.src!="string"?l.src:[l.src],u._volume=l.volume!==void 0?l.volume:1,u._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=l.onend?[{fn:l.onend}]:[],u._onfade=l.onfade?[{fn:l.onfade}]:[],u._onload=l.onload?[{fn:l.onload}]:[],u._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],u._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],u._onpause=l.onpause?[{fn:l.onpause}]:[],u._onplay=l.onplay?[{fn:l.onplay}]:[],u._onstop=l.onstop?[{fn:l.onstop}]:[],u._onmute=l.onmute?[{fn:l.onmute}]:[],u._onvolume=l.onvolume?[{fn:l.onvolume}]:[],u._onrate=l.onrate?[{fn:l.onrate}]:[],u._onseek=l.onseek?[{fn:l.onseek}]:[],u._onunlock=l.onunlock?[{fn:l.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 l=this,u=null;if(t.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var d=0;d<l._src.length;d++){var m,f;if(l._format&&l._format[d])m=l._format[d];else{if(f=l._src[d],typeof f!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}m=/^data:audio\/([^;,]+);/i.exec(f),m||(m=/\.([^.]+)$/.exec(f.split("?",1)[0])),m&&(m=m[1].toLowerCase())}if(m||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),m&&t.codecs(m)){u=l._src[d];break}}if(!u){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=u,l._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new r(l),l._webAudio&&i(l),l},play:function(l,u){var d=this,m=null;if(typeof l=="number")m=l,l=null;else{if(typeof l=="string"&&d._state==="loaded"&&!d._sprite[l])return null;if(typeof l>"u"&&(l="__default",!d._playLock)){for(var f=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(f++,m=d._sounds[h]._id);f===1?l=null:m=null}}var g=m?d._soundById(m):d._inactiveSound();if(!g)return null;if(m&&!l&&(l=g._sprite||"__default"),d._state!=="loaded"){g._sprite=l,g._ended=!1;var x=g._id;return d._queue.push({event:"play",action:function(){d.play(x)}}),x}if(m&&!g._paused)return u||d._loadQueue("play"),g._id;d._webAudio&&t._autoResume();var v=Math.max(0,g._seek>0?g._seek:d._sprite[l][0]/1e3),A=Math.max(0,(d._sprite[l][0]+d._sprite[l][1])/1e3-v),_=A*1e3/Math.abs(g._rate),b=d._sprite[l][0]/1e3,D=(d._sprite[l][0]+d._sprite[l][1])/1e3;g._sprite=l,g._ended=!1;var S=function(){g._paused=!1,g._seek=v,g._start=b,g._stop=D,g._loop=!!(g._loop||d._sprite[l][2])};if(v>=D){d._ended(g);return}var y=g._node;if(d._webAudio){var O=function(){d._playLock=!1,S(),d._refreshBuffer(g);var N=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(N,t.ctx.currentTime),g._playStart=t.ctx.currentTime,typeof y.bufferSource.start>"u"?g._loop?y.bufferSource.noteGrainOn(0,v,86400):y.bufferSource.noteGrainOn(0,v,A):g._loop?y.bufferSource.start(0,v,86400):y.bufferSource.start(0,v,A),_!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_)),u||setTimeout(function(){d._emit("play",g._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?O():(d._playLock=!0,d.once("resume",O),d._clearTimer(g._id))}else{var T=function(){y.currentTime=v,y.muted=g._muted||d._muted||t._muted||y.muted,y.volume=g._volume*t.volume(),y.playbackRate=g._rate;try{var N=y.play();if(N&&typeof Promise<"u"&&(N instanceof Promise||typeof N.then=="function")?(d._playLock=!0,S(),N.then(function(){d._playLock=!1,y._unlocked=!0,u?d._loadQueue():d._emit("play",g._id)}).catch(function(){d._playLock=!1,d._emit("playerror",g._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."),g._ended=!0,g._paused=!0})):u||(d._playLock=!1,S(),d._emit("play",g._id)),y.playbackRate=g._rate,y.paused){d._emit("playerror",g._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}l!=="__default"||g._loop?d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_):(d._endTimers[g._id]=function(){d._ended(g),y.removeEventListener("ended",d._endTimers[g._id],!1)},y.addEventListener("ended",d._endTimers[g._id],!1))}catch(j){d._emit("playerror",g._id,j)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var P=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||P)T();else{d._playLock=!0,d._state="loading";var C=function(){d._state="loaded",T(),y.removeEventListener(t._canPlayEvent,C,!1)};y.addEventListener(t._canPlayEvent,C,!1),d._clearTimer(g._id)}}return g._id},pause:function(l){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(l)}}),u;for(var d=u._getSoundIds(l),m=0;m<d.length;m++){u._clearTimer(d[m]);var f=u._soundById(d[m]);if(f&&!f._paused&&(f._seek=u.seek(d[m]),f._rateSeek=0,f._paused=!0,u._stopFade(d[m]),f._node))if(u._webAudio){if(!f._node.bufferSource)continue;typeof f._node.bufferSource.stop>"u"?f._node.bufferSource.noteOff(0):f._node.bufferSource.stop(0),u._cleanBuffer(f._node)}else(!isNaN(f._node.duration)||f._node.duration===1/0)&&f._node.pause();arguments[1]||u._emit("pause",f?f._id:null)}return u},stop:function(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(l)}}),d;for(var m=d._getSoundIds(l),f=0;f<m.length;f++){d._clearTimer(m[f]);var h=d._soundById(m[f]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(m[f]),h._node&&(d._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&d._clearSound(h._node))),u||d._emit("stop",h._id))}return d},mute:function(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(l,u)}}),d;if(typeof u>"u")if(typeof l=="boolean")d._muted=l;else return d._muted;for(var m=d._getSoundIds(u),f=0;f<m.length;f++){var h=d._soundById(m[f]);h&&(h._muted=l,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:l),d._emit("mute",h._id))}return d},volume:function(){var l=this,u=arguments,d,m;if(u.length===0)return l._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));var g;if(typeof d<"u"&&d>=0&&d<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,u)}}),l;typeof m>"u"&&(l._volume=d),m=l._getSoundIds(m);for(var x=0;x<m.length;x++)g=l._soundById(m[x]),g&&(g._volume=d,u[2]||l._stopFade(m[x]),l._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),l._emit("volume",g._id))}else return g=m?l._soundById(m):l._sounds[0],g?g._volume:0;return l},fade:function(l,u,d,m){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"fade",action:function(){f.fade(l,u,d,m)}}),f;l=Math.min(Math.max(0,parseFloat(l)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),f.volume(l,m);for(var h=f._getSoundIds(m),g=0;g<h.length;g++){var x=f._soundById(h[g]);if(x){if(m||f._stopFade(h[g]),f._webAudio&&!x._muted){var v=t.ctx.currentTime,A=v+d/1e3;x._volume=l,x._node.gain.setValueAtTime(l,v),x._node.gain.linearRampToValueAtTime(u,A)}f._startFadeInterval(x,l,u,d,h[g],typeof m>"u")}}return f},_startFadeInterval:function(l,u,d,m,f,h){var g=this,x=u,v=d-u,A=Math.abs(v/.01),_=Math.max(4,A>0?m/A:m),b=Date.now();l._fadeTo=d,l._interval=setInterval(function(){var D=(Date.now()-b)/m;b=Date.now(),x+=v*D,x=Math.round(x*100)/100,v<0?x=Math.max(d,x):x=Math.min(d,x),g._webAudio?l._volume=x:g.volume(x,l._id,!0),h&&(g._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,g.volume(d,l._id),g._emit("fade",l._id))},_)},_stopFade:function(l){var u=this,d=u._soundById(l);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,l),d._fadeTo=null,u._emit("fade",l)),u},loop:function(){var l=this,u=arguments,d,m,f;if(u.length===0)return l._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],l._loop=d;else return f=l._soundById(parseInt(u[0],10)),f?f._loop:!1;else u.length===2&&(d=u[0],m=parseInt(u[1],10));for(var h=l._getSoundIds(m),g=0;g<h.length;g++)f=l._soundById(h[g]),f&&(f._loop=d,l._webAudio&&f._node&&f._node.bufferSource&&(f._node.bufferSource.loop=d,d&&(f._node.bufferSource.loopStart=f._start||0,f._node.bufferSource.loopEnd=f._stop,l.playing(h[g])&&(l.pause(h[g],!0),l.play(h[g],!0)))));return l},rate:function(){var l=this,u=arguments,d,m;if(u.length===0)m=l._sounds[0]._id;else if(u.length===1){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));var g;if(typeof d=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,u)}}),l;typeof m>"u"&&(l._rate=d),m=l._getSoundIds(m);for(var x=0;x<m.length;x++)if(g=l._soundById(m[x]),g){l.playing(m[x])&&(g._rateSeek=l.seek(m[x]),g._playStart=l._webAudio?t.ctx.currentTime:g._playStart),g._rate=d,l._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):g._node&&(g._node.playbackRate=d);var v=l.seek(m[x]),A=(l._sprite[g._sprite][0]+l._sprite[g._sprite][1])/1e3-v,_=A*1e3/Math.abs(g._rate);(l._endTimers[m[x]]||!g._paused)&&(l._clearTimer(m[x]),l._endTimers[m[x]]=setTimeout(l._ended.bind(l,g),_)),l._emit("rate",g._id)}}else return g=l._soundById(m),g?g._rate:l._rate;return l},seek:function(){var l=this,u=arguments,d,m;if(u.length===0)l._sounds.length&&(m=l._sounds[0]._id);else if(u.length===1){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):l._sounds.length&&(m=l._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));if(typeof m>"u")return 0;if(typeof d=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,u)}}),l;var g=l._soundById(m);if(g)if(typeof d=="number"&&d>=0){var x=l.playing(m);x&&l.pause(m,!0),g._seek=d,g._ended=!1,l._clearTimer(m),!l._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&l.play(m,!0),l._emit("seek",m)};if(x&&!l._webAudio){var A=function(){l._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(l._webAudio){var _=l.playing(m)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+_*Math.abs(g._rate))}else return g._node.currentTime;return l},playing:function(l){var u=this;if(typeof l=="number"){var d=u._soundById(l);return d?!d._paused:!1}for(var m=0;m<u._sounds.length;m++)if(!u._sounds[m]._paused)return!0;return!1},duration:function(l){var u=this,d=u._duration,m=u._soundById(l);return m&&(d=u._sprite[m._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var l=this,u=l._sounds,d=0;d<u.length;d++)u[d]._paused||l.stop(u[d]._id),l._webAudio||(l._clearSound(u[d]._node),u[d]._node.removeEventListener("error",u[d]._errorFn,!1),u[d]._node.removeEventListener(t._canPlayEvent,u[d]._loadFn,!1),u[d]._node.removeEventListener("ended",u[d]._endFn,!1),t._releaseHtml5Audio(u[d]._node)),delete u[d]._node,l._clearTimer(u[d]._id);var m=t._howls.indexOf(l);m>=0&&t._howls.splice(m,1);var f=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===l._src||l._src.indexOf(t._howls[d]._src)>=0){f=!1;break}return o&&f&&delete o[l._src],t.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,u,d,m){var f=this,h=f["_on"+l];return typeof u=="function"&&h.push(m?{id:d,fn:u,once:m}:{id:d,fn:u}),f},off:function(l,u,d){var m=this,f=m["_on"+l],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<f.length;h++){var g=d===f[h].id;if(u===f[h].fn&&g||!u&&g){f.splice(h,1);break}}else if(l)m["_on"+l]=[];else{var x=Object.keys(m);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(m[x[h]])&&(m[x[h]]=[])}return m},once:function(l,u,d){var m=this;return m.on(l,u,d,1),m},_emit:function(l,u,d){for(var m=this,f=m["_on"+l],h=f.length-1;h>=0;h--)(!f[h].id||f[h].id===u||l==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(m,f[h].fn),0),f[h].once&&m.off(l,f[h].fn,f[h].id));return m._loadQueue(l),m},_loadQueue:function(l){var u=this;if(u._queue.length>0){var d=u._queue[0];d.event===l&&(u._queue.shift(),u._loadQueue()),l||d.action()}return u},_ended:function(l){var u=this,d=l._sprite;if(!u._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(u._ended.bind(u,l),100),u;var m=!!(l._loop||u._sprite[d][2]);if(u._emit("end",l._id),!u._webAudio&&m&&u.stop(l._id,!0).play(l._id),u._webAudio&&m){u._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=t.ctx.currentTime;var f=(l._stop-l._start)*1e3/Math.abs(l._rate);u._endTimers[l._id]=setTimeout(u._ended.bind(u,l),f)}return u._webAudio&&!m&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,u._clearTimer(l._id),u._cleanBuffer(l._node),t._autoSuspend()),!u._webAudio&&!m&&u.stop(l._id,!0),u},_clearTimer:function(l){var u=this;if(u._endTimers[l]){if(typeof u._endTimers[l]!="function")clearTimeout(u._endTimers[l]);else{var d=u._soundById(l);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[l],!1)}delete u._endTimers[l]}return u},_soundById:function(l){for(var u=this,d=0;d<u._sounds.length;d++)if(l===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var l=this;l._drain();for(var u=0;u<l._sounds.length;u++)if(l._sounds[u]._ended)return l._sounds[u].reset();return new r(l)},_drain:function(){var l=this,u=l._pool,d=0,m=0;if(!(l._sounds.length<u)){for(m=0;m<l._sounds.length;m++)l._sounds[m]._ended&&d++;for(m=l._sounds.length-1;m>=0;m--){if(d<=u)return;l._sounds[m]._ended&&(l._webAudio&&l._sounds[m]._node&&l._sounds[m]._node.disconnect(0),l._sounds.splice(m,1),d--)}}},_getSoundIds:function(l){var u=this;if(typeof l>"u"){for(var d=[],m=0;m<u._sounds.length;m++)d.push(u._sounds[m]._id);return d}else return[l]},_refreshBuffer:function(l){var u=this;return l._node.bufferSource=t.ctx.createBufferSource(),l._node.bufferSource.buffer=o[u._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,t.ctx.currentTime),u},_cleanBuffer:function(l){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),d))try{l.bufferSource.buffer=t._scratchBuffer}catch{}return l.bufferSource=null,u},_clearSound:function(l){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(l){this._parent=l,this.init()};r.prototype={init:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++t._counter,u._sounds.push(l),l.create(),l},create:function(){var l=this,u=l._parent,d=t._muted||l._muted||l._parent._muted?0:l._volume;return u._webAudio?(l._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),l._node.gain.setValueAtTime(d,t.ctx.currentTime),l._node.paused=!0,l._node.connect(t.masterGain)):t.noAudio||(l._node=t._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(t._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=u._src,l._node.preload=u._preload===!0?"auto":u._preload,l._node.volume=d*t.volume(),l._node.load()),l},reset:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++t._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,u=l._parent;u._duration=Math.ceil(l._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()),l._node.removeEventListener(t._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,u=l._parent;u._duration===1/0&&(u._duration=Math.ceil(l._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var u=l._src;if(o[u]){l._duration=o[u].duration,c(l);return}if(/^data:[^;]+;base64,/.test(u)){for(var d=atob(u.split(",")[1]),m=new Uint8Array(d.length),f=0;f<d.length;++f)m[f]=d.charCodeAt(f);a(m.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,u,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(g){h.setRequestHeader(g,l._xhr.headers[g])}),h.onload=function(){var g=(h.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}a(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[u],l.load())},s(h)}},s=function(l){try{l.send()}catch{l.onerror()}},a=function(l,u){var d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},m=function(f){f&&u._sounds.length>0?(o[u._src]=f,c(u,f)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(l).then(m).catch(d):t.ctx.decodeAudioData(l,m,d)},c=function(l,u){u&&!l._duration&&(l._duration=u.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},p=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 l=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=u?parseInt(u[1],10):null;if(l&&d&&d<9){var m=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!m&&(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 _a<"u"&&(_a.Howler=t,_a.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,s){var a=this;if(!a.ctx||!a.ctx.listener)return a;var c=a._orientation;if(e=typeof e!="number"?c[1]:e,r=typeof r!="number"?c[2]:r,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof t=="number")a._orientation=[t,e,r,o,i,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(t,e,r,o,i,s);else return c;return a},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),s=0;s<i.length;s++){var a=r._soundById(i[s]);if(a)if(typeof t=="number")a._stereo=t,a._pos=[t,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&n(a,o),o==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(t,0,0):a._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",a._id);else return a._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 s=i._getSoundIds(o),a=0;a<s.length;a++){var c=i._soundById(s[a]);if(c)if(typeof t=="number")c._pos=[t,e,r],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setPosition(t,e,r)),i._emit("pos",c._id);else return c._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 s=i._getSoundIds(o),a=0;a<s.length;a++){var c=i._soundById(s[a]);if(c)if(typeof t=="number")c._orientation=[t,e,r],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setOrientation(t,e,r)),i._emit("orientation",c._id);else return c._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 s=t._getSoundIds(o),a=0;a<s.length;a++)if(i=t._soundById(s[a]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:c.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:c.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:c.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:c.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:c.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:c.panningModel};var p=i._panner;p?(p.coneInnerAngle=c.coneInnerAngle,p.coneOuterAngle=c.coneOuterAngle,p.coneOuterGain=c.coneOuterGain,p.distanceModel=c.distanceModel,p.maxDistance=c.maxDistance,p.refDistance=c.refDistance,p.rolloffFactor=c.rolloffFactor,p.panningModel=c.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 Mf=bc((Sa,If)=>{(function(n,t){typeof Sa=="object"&&typeof If<"u"?t(Sa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Sa,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 s,a,c,p,l,u,d,m,f,h,g,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var _=[],b=[],D=[],S=e==="f"?A:v,y=h=d=0;y<A;y++)b[y]=new Array(S).fill(0);for(y=0;y<v;y++)D[y]=new Array(v).fill(0);var O,T=new Array(v).fill(0);for(y=0;y<A;y++)for(s=0;s<v;s++)b[y][s]=t[y][s];for(y=0;y<v;y++){for(_[y]=d,f=0,c=y+1,s=y;s<A;s++)f+=Math.pow(b[s][y],2);if(f<i)d=0;else for(m=(u=b[y][y])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y]=u-d,s=c;s<v;s++){for(f=0,a=y;a<A;a++)f+=b[a][y]*b[a][s];for(u=f/m,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(T[y]=d,f=0,s=c;s<v;s++)f+=Math.pow(b[y][s],2);if(f<i)d=0;else{for(m=(u=b[y][y+1])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y+1]=u-d,s=c;s<v;s++)_[s]=b[y][s]/m;for(s=c;s<A;s++){for(f=0,a=c;a<v;a++)f+=b[s][a]*b[y][a];for(a=c;a<v;a++)b[s][a]=b[s][a]+f*_[a]}}h<(g=Math.abs(T[y])+Math.abs(_[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(m=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/m;for(s=c;s<v;s++){for(f=0,a=c;a<v;a++)f+=b[y][a]*D[a][s];for(a=c;a<v;a++)D[a][s]=D[a][s]+f*D[a][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=_[y],c=y}if(e){if(e==="f")for(y=v;y<A;y++){for(s=v;s<A;s++)b[y][s]=0;b[y][y]=1}for(y=v-1;0<=y;y--){for(c=y+1,d=T[y],s=c;s<S;s++)b[y][s]=0;if(d!==0){for(m=b[y][y]*d,s=c;s<S;s++){for(f=0,a=c;a<A;a++)f+=b[a][y]*b[a][s];for(u=f/m,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(s=y;s<A;s++)b[s][y]=b[s][y]/d}else for(s=y;s<A;s++)b[s][y]=0;b[y][y]=b[y][y]+1}}for(o*=h,a=v-1;0<=a;a--)for(var P=0;P<50;P++){for(O=!1,c=a;0<=c;c--){if(Math.abs(_[c])<=o){O=!0;break}if(Math.abs(T[c-1])<=o)break}if(!O){for(l=0,p=c-(f=1),y=c;y<a+1&&(u=f*_[y],_[y]=l*_[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),l=d/(m=T[y]),f=-u/m,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*l+x*f,b[s][y]=-g*f+x*l}if(x=T[a],c===a){if(x<0&&(T[a]=-x,r))for(s=0;s<v;s++)D[s][a]=-D[s][a];break}for(h=T[c],u=(((g=T[a-1])-x)*(g+x)+((d=_[a-1])-(m=_[a]))*(d+m))/(2*m*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+m*(g/(u<0?u-d:u+d)-m))/h,y=c+(f=l=1);y<a+1;y++){if(d=_[y],g=T[y],m=f*d,d*=l,x=Math.sqrt(u*u+m*m),u=h*(l=u/(_[y-1]=x))+d*(f=m/x),d=-h*f+d*l,m=g*f,g*=l,r)for(s=0;s<v;s++)h=D[s][y-1],x=D[s][y],D[s][y-1]=h*l+x*f,D[s][y]=-h*f+x*l;if(x=Math.sqrt(u*u+m*m),u=(l=u/(T[y-1]=x))*d+(f=m/x)*g,h=-f*d+l*g,e)for(s=0;s<A;s++)g=b[s][y-1],x=b[s][y],b[s][y-1]=g*l+x*f,b[s][y]=-g*f+x*l}_[c]=0,_[a]=u,T[a]=h}for(y=0;y<v;y++)T[y]<o&&(T[y]=0);return{u:b,q:T,v:D}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as S1,Loader as w1}from"three";function xo(n,t){return Object.setPrototypeOf(n,t),n}function Sc(n){return Array.isArray(n)?n:[n]}var xh=typeof global=="object"&&global&&global.Object===Object&&global,Ii=xh;var vh=typeof self=="object"&&self&&self.Object===Object&&self,bh=Ii||vh||Function("return this")(),Fe=bh;var _h=Fe.Symbol,nt=_h;var wc=Object.prototype,Sh=wc.hasOwnProperty,wh=wc.toString,Ln=nt?nt.toStringTag:void 0;function Th(n){var t=Sh.call(n,Ln),e=n[Ln];try{n[Ln]=void 0;var r=!0}catch{}var o=wh.call(n);return r&&(t?n[Ln]=e:delete n[Ln]),o}var Tc=Th;var Ah=Object.prototype,Ch=Ah.toString;function Nh(n){return Ch.call(n)}var Ac=Nh;var Lh="[object Null]",Ph="[object Undefined]",Cc=nt?nt.toStringTag:void 0;function Oh(n){return n==null?n===void 0?Ph:Lh:Cc&&Cc in Object(n)?Tc(n):Ac(n)}var yt=Oh;function Ih(n){return n!=null&&typeof n=="object"}var et=Ih;var Mh="[object Symbol]";function Dh(n){return typeof n=="symbol"||et(n)&&yt(n)==Mh}var vo=Dh;function Bh(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 Mi=Bh;var Eh=Array.isArray,Me=Eh;var Gh=1/0,Nc=nt?nt.prototype:void 0,Lc=Nc?Nc.toString:void 0;function Pc(n){if(typeof n=="string")return n;if(Me(n))return Mi(n,Pc)+"";if(vo(n))return Lc?Lc.call(n):"";var t=n+"";return t=="0"&&1/n==-Gh?"-0":t}var Oc=Pc;function Rh(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var ze=Rh;function Fh(n){return n}var Di=Fh;var Vh="[object AsyncFunction]",zh="[object Function]",Uh="[object GeneratorFunction]",kh="[object Proxy]";function jh(n){if(!ze(n))return!1;var t=yt(n);return t==zh||t==Uh||t==Vh||t==kh}var bo=jh;var Hh=Fe["__core-js_shared__"],Bi=Hh;var Ic=function(){var n=/[^.]+$/.exec(Bi&&Bi.keys&&Bi.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Wh(n){return!!Ic&&Ic in n}var Mc=Wh;var qh=Function.prototype,$h=qh.toString;function Xh(n){if(n!=null){try{return $h.call(n)}catch{}try{return n+""}catch{}}return""}var fr=Xh;var Yh=/[\\^$.*+?()[\]{}|]/g,Kh=/^\[object .+?Constructor\]$/,Qh=Function.prototype,Zh=Object.prototype,Jh=Qh.toString,eg=Zh.hasOwnProperty,tg=RegExp("^"+Jh.call(eg).replace(Yh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function rg(n){if(!ze(n)||Mc(n))return!1;var t=bo(n)?tg:Kh;return t.test(fr(n))}var Dc=rg;function og(n,t){return n?.[t]}var Bc=og;function ng(n,t){var e=Bc(n,t);return Dc(e)?e:void 0}var ut=ng;var ig=ut(Fe,"WeakMap"),Ei=ig;var Ec=Object.create,sg=function(){function n(){}return function(t){if(!ze(t))return{};if(Ec)return Ec(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Gc=sg;function ag(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 Rc=ag;function lg(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Gi=lg;var cg=800,ug=16,pg=Date.now;function dg(n){var t=0,e=0;return function(){var r=pg(),o=ug-(r-e);if(e=r,o>0){if(++t>=cg)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Fc=dg;function mg(n){return function(){return n}}var Vc=mg;var fg=function(){try{var n=ut(Object,"defineProperty");return n({},"",{}),n}catch{}}(),_o=fg;var hg=_o?function(n,t){return _o(n,"toString",{configurable:!0,enumerable:!1,value:Vc(t),writable:!0})}:Di,zc=hg;var gg=Fc(zc),Ri=gg;function yg(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Uc=yg;var xg=9007199254740991,vg=/^(?:0|[1-9]\d*)$/;function bg(n,t){var e=typeof n;return t=t??xg,!!t&&(e=="number"||e!="symbol"&&vg.test(n))&&n>-1&&n%1==0&&n<t}var Nr=bg;function _g(n,t,e){t=="__proto__"&&_o?_o(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var So=_g;function Sg(n,t){return n===t||n!==n&&t!==t}var Lr=Sg;var wg=Object.prototype,Tg=wg.hasOwnProperty;function Ag(n,t,e){var r=n[t];(!(Tg.call(n,t)&&Lr(r,e))||e===void 0&&!(t in n))&&So(n,t,e)}var wo=Ag;function Cg(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var a=t[i],c=r?r(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?So(e,a,c):wo(e,a,c)}return e}var St=Cg;var kc=Math.max;function Ng(n,t,e){return t=kc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=kc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Rc(n,this,a)}}var Fi=Ng;function Lg(n,t){return Ri(Fi(n,t,Di),n+"")}var jc=Lg;var Pg=9007199254740991;function Og(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Pg}var To=Og;function Ig(n){return n!=null&&To(n.length)&&!bo(n)}var Pr=Ig;function Mg(n,t,e){if(!ze(e))return!1;var r=typeof t;return(r=="number"?Pr(e)&&Nr(t,e.length):r=="string"&&t in e)?Lr(e[t],n):!1}var Hc=Mg;function Dg(n){return jc(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&Hc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var a=e[r];a&&n(t,a,r,i)}return t})}var Wc=Dg;var Bg=Object.prototype;function Eg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Bg;return n===e}var Ao=Eg;function Gg(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var qc=Gg;var Rg="[object Arguments]";function Fg(n){return et(n)&&yt(n)==Rg}var Aa=Fg;var $c=Object.prototype,Vg=$c.hasOwnProperty,zg=$c.propertyIsEnumerable,Ug=Aa(function(){return arguments}())?Aa:function(n){return et(n)&&Vg.call(n,"callee")&&!zg.call(n,"callee")},hr=Ug;function kg(){return!1}var Xc=kg;var Qc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Yc=Qc&&typeof module=="object"&&module&&!module.nodeType&&module,jg=Yc&&Yc.exports===Qc,Kc=jg?Fe.Buffer:void 0,Hg=Kc?Kc.isBuffer:void 0,Wg=Hg||Xc,Co=Wg;var qg="[object Arguments]",$g="[object Array]",Xg="[object Boolean]",Yg="[object Date]",Kg="[object Error]",Qg="[object Function]",Zg="[object Map]",Jg="[object Number]",ey="[object Object]",ty="[object RegExp]",ry="[object Set]",oy="[object String]",ny="[object WeakMap]",iy="[object ArrayBuffer]",sy="[object DataView]",ay="[object Float32Array]",ly="[object Float64Array]",cy="[object Int8Array]",uy="[object Int16Array]",py="[object Int32Array]",dy="[object Uint8Array]",my="[object Uint8ClampedArray]",fy="[object Uint16Array]",hy="[object Uint32Array]",Ne={};Ne[ay]=Ne[ly]=Ne[cy]=Ne[uy]=Ne[py]=Ne[dy]=Ne[my]=Ne[fy]=Ne[hy]=!0;Ne[qg]=Ne[$g]=Ne[iy]=Ne[Xg]=Ne[sy]=Ne[Yg]=Ne[Kg]=Ne[Qg]=Ne[Zg]=Ne[Jg]=Ne[ey]=Ne[ty]=Ne[ry]=Ne[oy]=Ne[ny]=!1;function gy(n){return et(n)&&To(n.length)&&!!Ne[yt(n)]}var Zc=gy;function yy(n){return function(t){return n(t)}}var No=yy;var Jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Pn=Jc&&typeof module=="object"&&module&&!module.nodeType&&module,xy=Pn&&Pn.exports===Jc,Ca=xy&&Ii.process,vy=function(){try{var n=Pn&&Pn.require&&Pn.require("util").types;return n||Ca&&Ca.binding&&Ca.binding("util")}catch{}}(),gr=vy;var eu=gr&&gr.isTypedArray,by=eu?No(eu):Zc,Vi=by;var _y=Object.prototype,Sy=_y.hasOwnProperty;function wy(n,t){var e=Me(n),r=!e&&hr(n),o=!e&&!r&&Co(n),i=!e&&!r&&!o&&Vi(n),s=e||r||o||i,a=s?qc(n.length,String):[],c=a.length;for(var p in n)(t||Sy.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Nr(p,c)))&&a.push(p);return a}var zi=wy;function Ty(n,t){return function(e){return n(t(e))}}var Ui=Ty;var Ay=Ui(Object.keys,Object),tu=Ay;var Cy=Object.prototype,Ny=Cy.hasOwnProperty;function Ly(n){if(!Ao(n))return tu(n);var t=[];for(var e in Object(n))Ny.call(n,e)&&e!="constructor"&&t.push(e);return t}var ru=Ly;function Py(n){return Pr(n)?zi(n):ru(n)}var Lo=Py;function Oy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var ou=Oy;var Iy=Object.prototype,My=Iy.hasOwnProperty;function Dy(n){if(!ze(n))return ou(n);var t=Ao(n),e=[];for(var r in n)r=="constructor"&&(t||!My.call(n,r))||e.push(r);return e}var nu=Dy;function By(n){return Pr(n)?zi(n,!0):nu(n)}var jt=By;var Ey=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Gy=/^\w*$/;function Ry(n,t){if(Me(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||vo(n)?!0:Gy.test(n)||!Ey.test(n)||t!=null&&n in Object(t)}var iu=Ry;var Fy=ut(Object,"create"),yr=Fy;function Vy(){this.__data__=yr?yr(null):{},this.size=0}var su=Vy;function zy(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var au=zy;var Uy="__lodash_hash_undefined__",ky=Object.prototype,jy=ky.hasOwnProperty;function Hy(n){var t=this.__data__;if(yr){var e=t[n];return e===Uy?void 0:e}return jy.call(t,n)?t[n]:void 0}var lu=Hy;var Wy=Object.prototype,qy=Wy.hasOwnProperty;function $y(n){var t=this.__data__;return yr?t[n]!==void 0:qy.call(t,n)}var cu=$y;var Xy="__lodash_hash_undefined__";function Yy(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=yr&&t===void 0?Xy:t,this}var uu=Yy;function Po(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])}}Po.prototype.clear=su;Po.prototype.delete=au;Po.prototype.get=lu;Po.prototype.has=cu;Po.prototype.set=uu;var Na=Po;function Ky(){this.__data__=[],this.size=0}var pu=Ky;function Qy(n,t){for(var e=n.length;e--;)if(Lr(n[e][0],t))return e;return-1}var Or=Qy;var Zy=Array.prototype,Jy=Zy.splice;function e0(n){var t=this.__data__,e=Or(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Jy.call(t,e,1),--this.size,!0}var du=e0;function t0(n){var t=this.__data__,e=Or(t,n);return e<0?void 0:t[e][1]}var mu=t0;function r0(n){return Or(this.__data__,n)>-1}var fu=r0;function o0(n,t){var e=this.__data__,r=Or(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var hu=o0;function Oo(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])}}Oo.prototype.clear=pu;Oo.prototype.delete=du;Oo.prototype.get=mu;Oo.prototype.has=fu;Oo.prototype.set=hu;var Ir=Oo;var n0=ut(Fe,"Map"),Mr=n0;function i0(){this.size=0,this.__data__={hash:new Na,map:new(Mr||Ir),string:new Na}}var gu=i0;function s0(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var yu=s0;function a0(n,t){var e=n.__data__;return yu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Dr=a0;function l0(n){var t=Dr(this,n).delete(n);return this.size-=t?1:0,t}var xu=l0;function c0(n){return Dr(this,n).get(n)}var vu=c0;function u0(n){return Dr(this,n).has(n)}var bu=u0;function p0(n,t){var e=Dr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var _u=p0;function Io(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])}}Io.prototype.clear=gu;Io.prototype.delete=xu;Io.prototype.get=vu;Io.prototype.has=bu;Io.prototype.set=_u;var On=Io;var d0="Expected a function";function La(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(d0);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 s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(La.Cache||On),e}La.Cache=On;var Su=La;var m0=500;function f0(n){var t=Su(n,function(r){return e.size===m0&&e.clear(),r}),e=t.cache;return t}var wu=f0;var h0=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,g0=/\\(\\)?/g,y0=wu(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(h0,function(e,r,o,i){t.push(o?i.replace(g0,"$1"):r||e)}),t}),Tu=y0;function x0(n){return n==null?"":Oc(n)}var Au=x0;function v0(n,t){return Me(n)?n:iu(n,t)?[n]:Tu(Au(n))}var wt=v0;var b0=1/0;function _0(n){if(typeof n=="string"||vo(n))return n;var t=n+"";return t=="0"&&1/n==-b0?"-0":t}var Br=_0;function S0(n,t){t=wt(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Br(t[e++])];return e&&e==r?n:void 0}var ki=S0;function w0(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Mo=w0;var Cu=nt?nt.isConcatSpreadable:void 0;function T0(n){return Me(n)||hr(n)||!!(Cu&&n&&n[Cu])}var Nu=T0;function Lu(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Nu),o||(o=[]);++i<s;){var a=n[i];t>0&&e(a)?t>1?Lu(a,t-1,e,r,o):Mo(o,a):r||(o[o.length]=a)}return o}var Pu=Lu;function A0(n){var t=n==null?0:n.length;return t?Pu(n,1):[]}var Ou=A0;function C0(n){return Ri(Fi(n,void 0,Ou),n+"")}var ji=C0;var N0=Ui(Object.getPrototypeOf,Object),Do=N0;var L0="[object Object]",P0=Function.prototype,O0=Object.prototype,Iu=P0.toString,I0=O0.hasOwnProperty,M0=Iu.call(Object);function D0(n){if(!et(n)||yt(n)!=L0)return!1;var t=Do(n);if(t===null)return!0;var e=I0.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Iu.call(e)==M0}var Hi=D0;function B0(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 Mu=B0;function E0(){this.__data__=new Ir,this.size=0}var Du=E0;function G0(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Bu=G0;function R0(n){return this.__data__.get(n)}var Eu=R0;function F0(n){return this.__data__.has(n)}var Gu=F0;var V0=200;function z0(n,t){var e=this.__data__;if(e instanceof Ir){var r=e.__data__;if(!Mr||r.length<V0-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new On(r)}return e.set(n,t),this.size=e.size,this}var Ru=z0;function Bo(n){var t=this.__data__=new Ir(n);this.size=t.size}Bo.prototype.clear=Du;Bo.prototype.delete=Bu;Bo.prototype.get=Eu;Bo.prototype.has=Gu;Bo.prototype.set=Ru;var Wi=Bo;function U0(n,t){return n&&St(t,Lo(t),n)}var Fu=U0;function k0(n,t){return n&&St(t,jt(t),n)}var Vu=k0;var ju=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zu=ju&&typeof module=="object"&&module&&!module.nodeType&&module,j0=zu&&zu.exports===ju,Uu=j0?Fe.Buffer:void 0,ku=Uu?Uu.allocUnsafe:void 0;function H0(n,t){if(t)return n.slice();var e=n.length,r=ku?ku(e):new n.constructor(e);return n.copy(r),r}var qi=H0;function W0(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var Hu=W0;function q0(){return[]}var $i=q0;var $0=Object.prototype,X0=$0.propertyIsEnumerable,Wu=Object.getOwnPropertySymbols,Y0=Wu?function(n){return n==null?[]:(n=Object(n),Hu(Wu(n),function(t){return X0.call(n,t)}))}:$i,Eo=Y0;function K0(n,t){return St(n,Eo(n),t)}var qu=K0;var Q0=Object.getOwnPropertySymbols,Z0=Q0?function(n){for(var t=[];n;)Mo(t,Eo(n)),n=Do(n);return t}:$i,Xi=Z0;function J0(n,t){return St(n,Xi(n),t)}var $u=J0;function ex(n,t,e){var r=t(n);return Me(n)?r:Mo(r,e(n))}var Yi=ex;function tx(n){return Yi(n,Lo,Eo)}var Xu=tx;function rx(n){return Yi(n,jt,Xi)}var Ki=rx;var ox=ut(Fe,"DataView"),Qi=ox;var nx=ut(Fe,"Promise"),Zi=nx;var ix=ut(Fe,"Set"),Ji=ix;var Yu="[object Map]",sx="[object Object]",Ku="[object Promise]",Qu="[object Set]",Zu="[object WeakMap]",Ju="[object DataView]",ax=fr(Qi),lx=fr(Mr),cx=fr(Zi),ux=fr(Ji),px=fr(Ei),Jr=yt;(Qi&&Jr(new Qi(new ArrayBuffer(1)))!=Ju||Mr&&Jr(new Mr)!=Yu||Zi&&Jr(Zi.resolve())!=Ku||Ji&&Jr(new Ji)!=Qu||Ei&&Jr(new Ei)!=Zu)&&(Jr=function(n){var t=yt(n),e=t==sx?n.constructor:void 0,r=e?fr(e):"";if(r)switch(r){case ax:return Ju;case lx:return Yu;case cx:return Ku;case ux:return Qu;case px:return Zu}return t});var Go=Jr;var dx=Object.prototype,mx=dx.hasOwnProperty;function fx(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&mx.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var ep=fx;var hx=Fe.Uint8Array,Pa=hx;function gx(n){var t=new n.constructor(n.byteLength);return new Pa(t).set(new Pa(n)),t}var Ro=gx;function yx(n,t){var e=t?Ro(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var tp=yx;var xx=/\w*$/;function vx(n){var t=new n.constructor(n.source,xx.exec(n));return t.lastIndex=n.lastIndex,t}var rp=vx;var op=nt?nt.prototype:void 0,np=op?op.valueOf:void 0;function bx(n){return np?Object(np.call(n)):{}}var ip=bx;function _x(n,t){var e=t?Ro(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var es=_x;var Sx="[object Boolean]",wx="[object Date]",Tx="[object Map]",Ax="[object Number]",Cx="[object RegExp]",Nx="[object Set]",Lx="[object String]",Px="[object Symbol]",Ox="[object ArrayBuffer]",Ix="[object DataView]",Mx="[object Float32Array]",Dx="[object Float64Array]",Bx="[object Int8Array]",Ex="[object Int16Array]",Gx="[object Int32Array]",Rx="[object Uint8Array]",Fx="[object Uint8ClampedArray]",Vx="[object Uint16Array]",zx="[object Uint32Array]";function Ux(n,t,e){var r=n.constructor;switch(t){case Ox:return Ro(n);case Sx:case wx:return new r(+n);case Ix:return tp(n,e);case Mx:case Dx:case Bx:case Ex:case Gx:case Rx:case Fx:case Vx:case zx:return es(n,e);case Tx:return new r;case Ax:case Lx:return new r(n);case Cx:return rp(n);case Nx:return new r;case Px:return ip(n)}}var sp=Ux;function kx(n){return typeof n.constructor=="function"&&!Ao(n)?Gc(Do(n)):{}}var ts=kx;var jx="[object Map]";function Hx(n){return et(n)&&Go(n)==jx}var ap=Hx;var lp=gr&&gr.isMap,Wx=lp?No(lp):ap,cp=Wx;var qx="[object Set]";function $x(n){return et(n)&&Go(n)==qx}var up=$x;var pp=gr&&gr.isSet,Xx=pp?No(pp):up,dp=Xx;var Yx=1,Kx=2,Qx=4,mp="[object Arguments]",Zx="[object Array]",Jx="[object Boolean]",ev="[object Date]",tv="[object Error]",fp="[object Function]",rv="[object GeneratorFunction]",ov="[object Map]",nv="[object Number]",hp="[object Object]",iv="[object RegExp]",sv="[object Set]",av="[object String]",lv="[object Symbol]",cv="[object WeakMap]",uv="[object ArrayBuffer]",pv="[object DataView]",dv="[object Float32Array]",mv="[object Float64Array]",fv="[object Int8Array]",hv="[object Int16Array]",gv="[object Int32Array]",yv="[object Uint8Array]",xv="[object Uint8ClampedArray]",vv="[object Uint16Array]",bv="[object Uint32Array]",Ce={};Ce[mp]=Ce[Zx]=Ce[uv]=Ce[pv]=Ce[Jx]=Ce[ev]=Ce[dv]=Ce[mv]=Ce[fv]=Ce[hv]=Ce[gv]=Ce[ov]=Ce[nv]=Ce[hp]=Ce[iv]=Ce[sv]=Ce[av]=Ce[lv]=Ce[yv]=Ce[xv]=Ce[vv]=Ce[bv]=!0;Ce[tv]=Ce[fp]=Ce[cv]=!1;function rs(n,t,e,r,o,i){var s,a=t&Yx,c=t&Kx,p=t&Qx;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!ze(n))return n;var l=Me(n);if(l){if(s=ep(n),!a)return Gi(n,s)}else{var u=Go(n),d=u==fp||u==rv;if(Co(n))return qi(n,a);if(u==hp||u==mp||d&&!o){if(s=c||d?{}:ts(n),!a)return c?$u(n,Vu(s,n)):qu(n,Fu(s,n))}else{if(!Ce[u])return o?n:{};s=sp(n,u,a)}}i||(i=new Wi);var m=i.get(n);if(m)return m;i.set(n,s),dp(n)?n.forEach(function(g){s.add(rs(g,t,e,g,n,i))}):cp(n)&&n.forEach(function(g,x){s.set(x,rs(g,t,e,x,n,i))});var f=p?c?Ki:Xu:c?jt:Lo,h=l?void 0:f(n);return Uc(h||n,function(g,x){h&&(x=g,g=n[x]),wo(s,x,rs(g,t,e,x,n,i))}),s}var os=rs;var _v=1,Sv=4;function wv(n){return os(n,_v|Sv)}var In=wv;function Tv(n,t){return n!=null&&t in Object(n)}var gp=Tv;function Av(n,t,e){t=wt(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Br(t[r]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&To(o)&&Nr(s,o)&&(Me(n)||hr(n)))}var yp=Av;function Cv(n,t){return n!=null&&yp(n,t,gp)}var xp=Cv;function Nv(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),a=s.length;a--;){var c=s[n?a:++o];if(e(i[c],c,i)===!1)break}return t}}var vp=Nv;var Lv=vp(),bp=Lv;function Pv(n,t,e){(e!==void 0&&!Lr(n[t],e)||e===void 0&&!(t in n))&&So(n,t,e)}var Mn=Pv;function Ov(n){return et(n)&&Pr(n)}var _p=Ov;function Iv(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Dn=Iv;function Mv(n){return St(n,jt(n))}var Sp=Mv;function Dv(n,t,e,r,o,i,s){var a=Dn(n,e),c=Dn(t,e),p=s.get(c);if(p){Mn(n,e,p);return}var l=i?i(a,c,e+"",n,t,s):void 0,u=l===void 0;if(u){var d=Me(c),m=!d&&Co(c),f=!d&&!m&&Vi(c);l=c,d||m||f?Me(a)?l=a:_p(a)?l=Gi(a):m?(u=!1,l=qi(c,!0)):f?(u=!1,l=es(c,!0)):l=[]:Hi(c)||hr(c)?(l=a,hr(a)?l=Sp(a):(!ze(a)||bo(a))&&(l=ts(c))):u=!1}u&&(s.set(c,l),o(l,c,r,i,s),s.delete(c)),Mn(n,e,l)}var wp=Dv;function Tp(n,t,e,r,o){n!==t&&bp(t,function(i,s){if(o||(o=new Wi),ze(i))wp(n,t,s,e,Tp,r,o);else{var a=r?r(Dn(n,s),i,s+"",n,t,o):void 0;a===void 0&&(a=i),Mn(n,s,a)}},jt)}var Ap=Tp;function Bv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Cp=Bv;function Ev(n,t){return t.length<2?n:ki(n,Mu(t,0,-1))}var Np=Ev;var Gv=Wc(function(n,t,e){Ap(n,t,e)}),eo=Gv;function Rv(n,t){return t=wt(t,n),n=Np(n,t),n==null||delete n[Br(Cp(t))]}var Lp=Rv;function Fv(n){return Hi(n)?void 0:n}var Pp=Fv;var Vv=1,zv=2,Uv=4,kv=ji(function(n,t){var e={};if(n==null)return e;var r=!1;t=Mi(t,function(i){return i=wt(i,n),r||(r=i.length>1),i}),St(n,Ki(n),e),r&&(e=os(e,Vv|zv|Uv,Pp));for(var o=t.length;o--;)Lp(e,t[o]);return e}),Fo=kv;function jv(n,t,e,r){if(!ze(n))return n;t=wt(t,n);for(var o=-1,i=t.length,s=i-1,a=n;a!=null&&++o<i;){var c=Br(t[o]),p=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var l=a[c];p=r?r(l,c,a):void 0,p===void 0&&(p=ze(l)?l:Nr(t[o+1])?[]:{})}wo(a,c,p),a=a[c]}return n}var Op=jv;function Hv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],a=ki(n,s);e(a,s)&&Op(i,wt(s,n),a)}return i}var Ip=Hv;function Wv(n,t){return Ip(n,t,function(e,r){return xp(n,r)})}var Mp=Wv;var qv=ji(function(n,t){return n==null?{}:Mp(n,t)}),Oa=qv;var Vo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Vo||(Vo={}));var to;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,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})(to||(to={}));var Dp;(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})(Dp||(Dp={}));var zo;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,a){return[i[0]+(s[0]-i[0])*a,i[1]+(s[1]-i[1])*a,i[2]+(s[2]-i[2])*a]}o.lerp=r})(zo||(zo={}));var Bp;(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})(Bp||(Bp={}));var Er;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,s){let a=s.slice(0);for(var c=0,p=s.length;c<p;c+=3){let l=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];a[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/l,a[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/l,a[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/l}return a}o.applyMatrix4=r})(Er||(Er={}));var xt;(c=>{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 r(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:1}}c.toRgb255a1=r;function o(p){return{r:p.r,g:p.g,b:p.b}}c.clone=o;function i(p){return p=Math.floor(p),{r:(p>>16&255)/255,g:(p>>8&255)/255,b:(p&255)/255}}c.fromHex=i;function s(p,l){return p.r===l.r&&p.g===l.g&&p.b===l.b}c.equals=s;function a(p,l,u){return{r:p.r+(l.r-p.r)*u,g:p.g+(l.g-p.g)*u,b:p.b+(l.b-p.b)*u}}c.lerp=a})(xt||(xt={}));var vt;(s=>{s.white={...xt.white,a:1};function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,c){return{...xt.fromHex(a),a:c}}s.fromHexAndA=e;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=r;function o(a,c){return xt.equals(a,c)&&a.a===c.a}s.equals=o;function i(a,c,p){return{r:a.r+(c.r-a.r)*p,g:a.g+(c.g-a.g)*p,b:a.b+(c.b-a.b)*p,a:a.a+(c.a-a.a)*p}}s.lerp=i})(vt||(vt={}));var ns;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ns||(ns={}));var Ep;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ep||(Ep={}));var Gp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Gp||(Gp={}));var is;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(is||(is={}));var Pe=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,Pe.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:s}=t,a={...e,[i]:s};return Object.setPrototypeOf(a,Pe.prototype),{data:a,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,Pe.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Bn(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"&&Bn(r)}return Object.freeze(n)}function Rp(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 ss=class extends Error{};function Ht(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 s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function as(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 Fp(){return typeof process<"u"}function Vp(n,t){for(let e of n)t(e.id,e.data),Vp(e.children,t)}function zp(n,t){t(n.id,n.data);for(let e of n.children)zp(e,t)}var Tt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Tt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Bn(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)]}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&&zp(o,r)}}traverse(e){Vp(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),s=this.childrenArray(i),a=s.findIndex(l=>l.id===e);if(a<0)throw new Error("not expected");let c=s[a];return s=[...s],s[a]={...c,data:r},this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let a=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let p=i.findIndex(l=>l.id===c);if(p<0)throw new Error;i=[...i],i[p]={...i[p],children:a}}Object.setPrototypeOf(i,Tt.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}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:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),l={fi:o,id:i,data:s,children:a};return p=[...p,l],p.sort((d,m)=>d.fi-m.fi),e.localIndex=p.indexOf(l),{data:this.modifyArrayBy(c,p),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),s=i.findIndex(p=>p.id===r);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...a,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 m=r;for(;m!==null;){if(m===void 0)throw new Error;if(m===i)throw new ss("cyclic tree");m=this.parent(m)}}let s=this.parent(i);if(s===void 0)return null;let a=s,c=this.childrenArray(s),p=c.findIndex(m=>m.id===i);c=[...c];let l=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((m,f)=>m.fi-f.fi),e.localIndex=c.indexOf(l),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:a,fi:d,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(s=>s.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(s=>s.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)=>Rp(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),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...s,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 Ht(0,o,o);{let s=i[0].fi;return Ht(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=i.find(c=>c.fi>s.fi);if(a===void 0){let c=i[i.length-1].fi;return Ht(c,c+o,o)}else return Ht(s.fi,a.fi,o)}}};var ls;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],a=!1;if(o)for(let c of Object.keys(o)){let p=parseInt(c);if(isNaN(p))throw new Error("wrong index");i[c]=s[p],s[p]=o[c],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s={...e},a=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let p=o[c];p===void 0?delete s[c]:s[c]=p,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(ls||(ls={}));var Oe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Oe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Bn(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,s=i.findIndex(p=>p.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]={...a,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Oe.prototype);let r=e;return Fp()||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)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,a={fi:r,id:o,data:i};return s=[...s,a],s.sort((p,l)=>p.fi-l.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(c=>c.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let s=i.findIndex(l=>l.id===o);if(s===-1)return null;let a=i[s].fi,c={...i[s],fi:r};return i[s]=c,i.sort((l,u)=>l.fi-u.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,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 Ht(0,r,r);{let i=o[0].fi;return Ht(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return Ht(a,a+r,r)}else return Ht(i.fi,s.fi,r)}}};var Up=Symbol(),us=Symbol(),Uo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof cs);){let i=r._path,s=r._current;if(i!==""&&o.splice(0,0,i),r=r._parent,r===null)return;r.update(i,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[us];r&&r(),delete this._children[t]}}}},Ma=class extends Uo{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,ls.runOp(this._current,t))}},Da=class extends Uo{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,Pe.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},kp={get(n,t){if(t===us)return()=>{n._parent=null};if(t===Up)return n._current;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],s=ps(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):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]}}},$v={...kp,set(n,t,e){let r={type:0,props:{[t]:Gr(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}},Xv={...kp,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}},ko=class extends Uo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[us]=()=>{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,s=ps(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):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 s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}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)}},jo=class extends Uo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[us]=()=>{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;t(this.data(this._current[r].id),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,s=ps(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):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 Ia(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&ds.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var cs=class{constructor(t){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){Ia(this.ts,e,t),Ia(this.actual,r,t),Ia(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ps(n,t,e){return e instanceof Tt?new ko(n,t,e):e instanceof Oe?new jo(n,t,e):e instanceof Pe?new Proxy(new Da(n,t,e),Xv):e!==null&&typeof e=="object"?as(e)?e:new Proxy(new Ma(n,t,e),$v):e}function Ba(n){let t=new cs(n);return[ps(t,"",n),t]}function Ea(n,t){let[e,r]=Ba(n);return t(e),r.result()}function Gr(n){return n instanceof ko||n instanceof jo?n._current:n!==null&&typeof n=="object"?n[Up]:n}var ds;(r=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(o,i,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let c={...i};return Object.keys(a).forEach(p=>{delete c[p]}),c}else return i}r.removeOverridden=t;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof Tt||o instanceof ko)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Oe||o instanceof jo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}r.zoom=e})(ds||(ds={}));var ms=class{},En=class extends ms{constructor(e){super();this.id=e}},Gn=class extends ms{constructor(e){super();this.data=e}};var Ra;try{Ra=new TextDecoder}catch{}var te,Fr,w=0;var Kp=[],Fa=Kp,Va=0,pt={},xe,Rr,At=0,Wt=0,bt,xr,it=[],we,jp={useRecords:!1,mapsAsObjects:!0},Rn=class{},Ua=new Rn;Ua.name="MessagePack 0xC1";var Ho=!1,qt=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(te)return td(()=>(hs(),this?this.unpack(t,e):qt.prototype.unpack.call(jp,t,e)));Fr=e>-1?e:t.length,w=0,Va=0,Wt=0,Rr=null,Fa=Kp,bt=null,te=t;try{we=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=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 qt){if(pt=this,this.structures)return xe=this.structures,fs();(!xe||xe.length>0)&&(xe=[])}else pt=jp,(!xe||xe.length>0)&&(xe=[]);return fs()}unpackMultiple(t,e){let r,o=0;try{Ho=!0;let i=t.length,s=this?this.unpack(t,i):xs.unpack(t,i);if(e){for(e(s);w<i;)if(o=w,e(fs())===!1)return}else{for(r=[s];w<i;)o=w,r.push(fs());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Ho=!1,hs()}}_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 fs(){try{if(!pt.trusted&&!Ho){let t=xe.sharedLength||0;t<xe.length&&(xe.length=t)}let n=De();if(w==Fr)xe.restoreStructures&&Hp(),xe=null,te=null,xr&&(xr=null);else if(w>Fr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ho)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw xe.restoreStructures&&Hp(),hs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Hp(){for(let n in xe.restoreStructures)xe[n]=xe.restoreStructures[n];xe.restoreStructures=null}function De(){let n=te[w++];if(n<160)if(n<128){if(n<64)return n;{let t=xe[n&63]||pt.getStructures&&Qp()[n&63];return t?(t.read||(t.read=ka(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,pt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Jp()]=De();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(De(),De());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=De();return t}else if(n<192){let t=n-160;if(Wt>=w)return Rr.slice(w-At,(w+=t)-At);if(Wt==0&&Fr<140){let e=t<16?ja(t):Zp(t);if(e!=null)return e}return za(t)}else{let t;switch(n){case 192:return null;case 193:return bt?(t=De(),t>0?bt[1].slice(bt.position1,bt.position1+=t):bt[0].slice(bt.position0,bt.position0-=t)):Ua;case 194:return!1;case 195:return!0;case 196:return Ga(te[w++]);case 197:return t=we.getUint16(w),w+=2,Ga(t);case 198:return t=we.getUint32(w),w+=4,Ga(t);case 199:return ro(te[w++]);case 200:return t=we.getUint16(w),w+=2,ro(t);case 201:return t=we.getUint32(w),w+=4,ro(t);case 202:if(t=we.getFloat32(w),pt.useFloat32>2){let e=ys[(te[w]&127)<<1|te[w+1]>>7];return w+=4,(e*t+(t>0?.5:-.5)>>0)/e}return w+=4,t;case 203:return t=we.getFloat64(w),w+=8,t;case 204:return te[w++];case 205:return t=we.getUint16(w),w+=2,t;case 206:return t=we.getUint32(w),w+=4,t;case 207:return pt.int64AsNumber?(t=we.getUint32(w)*4294967296,t+=we.getUint32(w+4)):t=we.getBigUint64(w),w+=8,t;case 208:return we.getInt8(w++);case 209:return t=we.getInt16(w),w+=2,t;case 210:return t=we.getInt32(w),w+=4,t;case 211:return pt.int64AsNumber?(t=we.getInt32(w)*4294967296,t+=we.getUint32(w+4)):t=we.getBigInt64(w),w+=8,t;case 212:if(t=te[w++],t==114)return Yp(te[w++]&63);{let e=it[t];if(e)return e.read?(w++,e.read(De())):e.noBuffer?(w++,e()):e(te.subarray(w,++w));throw new Error("Unknown extension "+t)}case 213:return t=te[w],t==114?(w++,Yp(te[w++]&63,te[w++])):ro(2);case 214:return ro(4);case 215:return ro(8);case 216:return ro(16);case 217:return t=te[w++],Wt>=w?Rr.slice(w-At,(w+=t)-At):Kv(t);case 218:return t=we.getUint16(w),w+=2,Wt>=w?Rr.slice(w-At,(w+=t)-At):Qv(t);case 219:return t=we.getUint32(w),w+=4,Wt>=w?Rr.slice(w-At,(w+=t)-At):Zv(t);case 220:return t=we.getUint16(w),w+=2,qp(t);case 221:return t=we.getUint32(w),w+=4,qp(t);case 222:return t=we.getUint16(w),w+=2,$p(t);case 223:return t=we.getUint32(w),w+=4,$p(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 Yv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ka(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Yv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(De);return n.highByte===0&&(n.read=Wp(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=De()}return r}return e.count=0,n.highByte===0?Wp(t,e):e}var Wp=(n,t)=>function(){let e=te[w++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=xe[r]||Qp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=ka(o,n)),o.read()};function Qp(){let n=td(()=>(te=null,pt.getStructures()));return xe=pt._mergeStructures(n,xe)}var za=gs,Kv=gs,Qv=gs,Zv=gs;function gs(n){let t;if(n<16&&(t=ja(n)))return t;if(n>64&&Ra)return Ra.decode(te.subarray(w,w+=n));let e=w+n,r=[];for(t="";w<e;){let o=te[w++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=te[w++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=te[w++]&63,s=te[w++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=te[w++]&63,s=te[w++]&63,a=te[w++]&63,c=(o&7)<<18|i<<12|s<<6|a;c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|c&1023),r.push(c)}else r.push(o);r.length>=4096&&(t+=$e.apply(String,r),r.length=0)}return r.length>0&&(t+=$e.apply(String,r)),t}function qp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=De();return t}function $p(n){if(pt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Jp()]=De();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(De(),De());return t}}var $e=String.fromCharCode;function Zp(n){let t=w,e=new Array(n);for(let r=0;r<n;r++){let o=te[w++];if((o&128)>0){w=t;return}e[r]=o}return $e.apply(String,e)}function ja(n){if(n<4)if(n<2){if(n===0)return"";{let t=te[w++];if((t&128)>1){w-=1;return}return $e(t)}}else{let t=te[w++],e=te[w++];if((t&128)>0||(e&128)>0){w-=2;return}if(n<3)return $e(t,e);let r=te[w++];if((r&128)>0){w-=3;return}return $e(t,e,r)}else{let t=te[w++],e=te[w++],r=te[w++],o=te[w++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){w-=4;return}if(n<6){if(n===4)return $e(t,e,r,o);{let i=te[w++];if((i&128)>0){w-=5;return}return $e(t,e,r,o,i)}}else if(n<8){let i=te[w++],s=te[w++];if((i&128)>0||(s&128)>0){w-=6;return}if(n<7)return $e(t,e,r,o,i,s);let a=te[w++];if((a&128)>0){w-=7;return}return $e(t,e,r,o,i,s,a)}else{let i=te[w++],s=te[w++],a=te[w++],c=te[w++];if((i&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){w-=8;return}if(n<10){if(n===8)return $e(t,e,r,o,i,s,a,c);{let p=te[w++];if((p&128)>0){w-=9;return}return $e(t,e,r,o,i,s,a,c,p)}}else if(n<12){let p=te[w++],l=te[w++];if((p&128)>0||(l&128)>0){w-=10;return}if(n<11)return $e(t,e,r,o,i,s,a,c,p,l);let u=te[w++];if((u&128)>0){w-=11;return}return $e(t,e,r,o,i,s,a,c,p,l,u)}else{let p=te[w++],l=te[w++],u=te[w++],d=te[w++];if((p&128)>0||(l&128)>0||(u&128)>0||(d&128)>0){w-=12;return}if(n<14){if(n===12)return $e(t,e,r,o,i,s,a,c,p,l,u,d);{let m=te[w++];if((m&128)>0){w-=13;return}return $e(t,e,r,o,i,s,a,c,p,l,u,d,m)}}else{let m=te[w++],f=te[w++];if((m&128)>0||(f&128)>0){w-=14;return}if(n<15)return $e(t,e,r,o,i,s,a,c,p,l,u,d,m,f);let h=te[w++];if((h&128)>0){w-=15;return}return $e(t,e,r,o,i,s,a,c,p,l,u,d,m,f,h)}}}}}function Ga(n){return pt.copyBuffers?Uint8Array.prototype.slice.call(te,w,w+=n):te.subarray(w,w+=n)}function ro(n){let t=te[w++];if(it[t])return it[t](te.subarray(w,w+=n));throw new Error("Unknown extension type "+t)}var Xp=new Array(4096);function Jp(){let n=te[w++];if(n>=160&&n<192){if(n=n-160,Wt>=w)return Rr.slice(w-At,(w+=n)-At);if(!(Wt==0&&Fr<180))return za(n)}else return w--,De();let t=(n<<5^(n>1?we.getUint16(w):n>0?te[w]:0))&4095,e=Xp[t],r=w,o=w+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=we.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=te[r++],i!=e[s++]){r=1879048192;break}if(r===o)return w=r,e.string;o-=3,r=w}for(e=[],Xp[t]=e,e.bytes=n;r<o;)i=we.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=te[r++],e.push(i);let a=n<16?ja(n):Zp(n);return a!=null?e.string=a:e.string=za(n)}var Yp=(n,t)=>{var e=De();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=xe[n];return o&&o.isShared&&((xe.restoreStructures||(xe.restoreStructures=[]))[n]=o),xe[n]=e,e.read=ka(e,r),e.read()},ed=typeof self=="object"?self:global;it[0]=()=>{};it[0].noBuffer=!0;it[101]=()=>{let n=De();return(ed[n[0]]||Error)(n[1])};it[105]=n=>{let t=we.getUint32(w-4);xr||(xr=new Map);let e=te[w],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};xr.set(t,o);let i=De();return o.used?Object.assign(r,i):(o.target=i,i)};it[112]=n=>{let t=we.getUint32(w-4),e=xr.get(t);return e.used=!0,e.target};it[115]=()=>new Set(De());var Ha=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");it[116]=n=>{let t=n[0],e=Ha[t];if(!e)throw new Error("Could not find typed array for code "+t);return new ed[e](Uint8Array.prototype.slice.call(n,1).buffer)};it[120]=()=>{let n=De();return new RegExp(n[0],n[1])};it[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=w;w+=t-4,bt=[De(),De()],bt.position0=0,bt.position1=0;let r=w;w=e;try{return De()}finally{w=r}};it[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 td(n){let t=Fr,e=w,r=Va,o=At,i=Wt,s=Rr,a=Fa,c=xr,p=bt,l=new Uint8Array(te.slice(0,Fr)),u=xe,d=xe.slice(0,xe.length),m=pt,f=Ho,h=n();return Fr=t,w=e,Va=r,At=o,Wt=i,Rr=s,Fa=a,xr=c,bt=p,te=l,Ho=f,xe=u,xe.splice(0,xe.length,...d),pt=m,we=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function hs(){te=null,xr=null,xe=null}function rd(n){n.unpack?it[n.type]=n.unpack:it[n.type]=n}var ys=new Array(147);for(let n=0;n<256;n++)ys[n]=+("1e"+Math.floor(45.15-n*.30103));var xs=new qt({useRecords:!1}),Jv=xs.unpack,eb=xs.unpackMultiple,tb=xs.unpack,vs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},rb=new Float32Array(1),L3=new Uint8Array(rb.buffer,0,4);var bs;try{bs=new TextEncoder}catch{}var _s,qa,Ss=typeof Buffer<"u",Wa=Ss?Buffer.allocUnsafeSlow:Uint8Array,sd=Ss?Buffer:Uint8Array,od=Ss?4294967296:2144337920,R,Ee,L=0,$t,Xt=null,ob=/[\u0080-\uFFFF]/,Fn=Symbol("record-id"),oo=class extends qt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,a,c=0,p=sd.prototype.utf8Write?function(y,O,T){return R.utf8Write(y,O,T)}:bs&&bs.encodeInto?function(y,O){return bs.encodeInto(y,R.subarray(O)).written}:!1,l=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,m=t.maxSharedStructures;if(m==null&&(m=d?32:0),m>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=m>32||f+m>64,g=m+64,x=m+f+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,_=0;this.pack=this.encode=function(y,O){if(R||(R=new Wa(8192),Ee=new DataView(R.buffer,0,8192),L=0),$t=R.length-10,$t-L<2048?(R=new Wa(R.length),Ee=new DataView(R.buffer,0,R.length),$t=R.length-10,L=0):L=L+7&2147483640,r=L,a=l.structuredClone?new Map:null,l.bundleStrings?(Xt=["",""],R[L++]=214,R[L++]=98,Xt.position=L-r,L+=4):Xt=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let T=o.sharedLength||0;if(T>m)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let P=0;P<T;P++){let C=o[P];if(!C)continue;let N,j=o.transitions;for(let W=0,oe=C.length;W<oe;W++){let ce=C[W];N=j[ce],N||(N=j[ce]=Object.create(null)),j=N}j[Fn]=P+64}c=T}u||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(b(y),Xt){Ee.setUint32(Xt.position+r,L-Xt.position-r);let T=Xt;Xt=null,b(T[0]),b(T[1])}if(l.offset=L,a&&a.idsToInsert){L+=a.idsToInsert.length*6,L>$t&&S(L),l.offset=L;let T=ib(R.subarray(r,L),a.idsToInsert);return a=null,T}return O&ld?(R.start=r,R.end=L,R):R.subarray(r,L)}finally{if(o){if(_<10&&_++,A>1e4)o.transitions=null,_=0,A=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let T=0,P=v.length;T<P;T++)v[T][Fn]=0;v=[]}if(i&&l.saveStructures){let T=o.sharedLength||m;o.length>T&&(o=o.slice(0,T));let P=R.subarray(r,L);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(y)):(c=T,P)}}O&db&&(L=r)}};let b=y=>{L>$t&&(R=S(L));var O=typeof y,T;if(O==="string"){let P=y.length;if(Xt&&P>=8&&P<4096){let j=ob.test(y);Xt[j?0:1]+=y,R[L++]=193,b(j?-P:P);return}let C;P<32?C=1:P<256?C=2:P<65536?C=3:C=5;let N=P*3;if(L+N>$t&&(R=S(L+N)),P<64||!p){let j,W,oe,ce=L+C;for(j=0;j<P;j++)W=y.charCodeAt(j),W<128?R[ce++]=W:W<2048?(R[ce++]=W>>6|192,R[ce++]=W&63|128):(W&64512)===55296&&((oe=y.charCodeAt(j+1))&64512)===56320?(W=65536+((W&1023)<<10)+(oe&1023),j++,R[ce++]=W>>18|240,R[ce++]=W>>12&63|128,R[ce++]=W>>6&63|128,R[ce++]=W&63|128):(R[ce++]=W>>12|224,R[ce++]=W>>6&63|128,R[ce++]=W&63|128);T=ce-L-C}else T=p(y,L+C,N);T<32?R[L++]=160|T:T<256?(C<2&&R.copyWithin(L+2,L+1,L+1+T),R[L++]=217,R[L++]=T):T<65536?(C<3&&R.copyWithin(L+3,L+2,L+2+T),R[L++]=218,R[L++]=T>>8,R[L++]=T&255):(C<5&&R.copyWithin(L+5,L+3,L+3+T),R[L++]=219,Ee.setUint32(L,T),L+=4),L+=T}else if(O==="number")if(y>>>0===y)y<64?R[L++]=y:y<256?(R[L++]=204,R[L++]=y):y<65536?(R[L++]=205,R[L++]=y>>8,R[L++]=y&255):(R[L++]=206,Ee.setUint32(L,y),L+=4);else if(y>>0===y)y>=-32?R[L++]=256+y:y>=-128?(R[L++]=208,R[L++]=y+256):y>=-32768?(R[L++]=209,Ee.setInt16(L,y),L+=2):(R[L++]=210,Ee.setInt32(L,y),L+=4);else{let P;if((P=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[L++]=202,Ee.setFloat32(L,y);let C;if(P<4||(C=y*ys[(R[L]&127)<<1|R[L+1]>>7])>>0===C){L+=4;return}else L--}R[L++]=203,Ee.setFloat64(L,y),L+=8}else if(O==="object")if(!y)R[L++]=192;else{if(a){let C=a.get(y);if(C){if(!C.id){let N=a.idsToInsert||(a.idsToInsert=[]);C.id=N.push(C)}R[L++]=214,R[L++]=112,Ee.setUint32(L,C.id),L+=4;return}else a.set(y,{offset:L-r})}let P=y.constructor;if(P===Object)D(y,!0);else if(P===Array){T=y.length,T<16?R[L++]=144|T:T<65536?(R[L++]=220,R[L++]=T>>8,R[L++]=T&255):(R[L++]=221,Ee.setUint32(L,T),L+=4);for(let C=0;C<T;C++)b(y[C])}else if(P===Map){T=y.size,T<16?R[L++]=128|T:T<65536?(R[L++]=222,R[L++]=T>>8,R[L++]=T&255):(R[L++]=223,Ee.setUint32(L,T),L+=4);for(let[C,N]of y)b(C),b(N)}else{for(let C=0,N=_s.length;C<N;C++){let j=qa[C];if(y instanceof j){let W=_s[C];if(W.write){W.type&&(R[L++]=212,R[L++]=W.type,R[L++]=0),b(W.write.call(this,y));return}let oe=R,ce=Ee,ie=L;R=null;let K;try{K=W.pack.call(this,y,U=>(R=oe,oe=null,L+=U,L>$t&&S(L),{target:R,targetView:Ee,position:L-U}),b)}finally{oe&&(R=oe,Ee=ce,L=ie,$t=R.length-10)}K&&(K.length+L>$t&&S(K.length+L),L=nb(K,R,L,W.type));return}}D(y,!y.hasOwnProperty)}}else if(O==="boolean")R[L++]=y?195:194;else if(O==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[L++]=211,Ee.setBigInt64(L,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[L++]=207,Ee.setBigUint64(L,y);else if(this.largeBigIntToFloat)R[L++]=203,Ee.setFloat64(L,Number(y));else throw new RangeError(y+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");L+=8}else if(O==="undefined")this.encodeUndefinedAsNil?R[L++]=192:(R[L++]=212,R[L++]=0,R[L++]=0);else if(O==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+O)},D=this.useRecords===!1?this.variableMapSize?y=>{let O=Object.keys(y),T=O.length;T<16?R[L++]=128|T:T<65536?(R[L++]=222,R[L++]=T>>8,R[L++]=T&255):(R[L++]=223,Ee.setUint32(L,T),L+=4);let P;for(let C=0;C<T;C++)b(P=O[C]),b(y[P])}:(y,O)=>{R[L++]=222;let T=L-r;L+=2;let P=0;for(let C in y)(O||y.hasOwnProperty(C))&&(b(C),b(y[C]),P++);R[T+++r]=P>>8,R[T+r]=P&255}:y=>{let O=Object.keys(y),T,P=s.transitions||(s.transitions=Object.create(null)),C=0;for(let j=0,W=O.length;j<W;j++){let oe=O[j];T=P[oe],T||(T=P[oe]=Object.create(null),C++),P=T}let N=P[Fn];if(N)N>=96&&h?(R[L++]=((N-=96)&31)+96,R[L++]=N>>5):R[L++]=N;else{N=s.nextId,N||(N=64),N<g&&this.shouldShareStructure&&!this.shouldShareStructure(O)?(N=s.nextOwnId,N<x||(N=g),s.nextOwnId=N+1):(N>=x&&(N=g),s.nextId=N+1);let j=O.highByte=N>=96&&h?N-96>>5:-1;P[Fn]=N,s[N-64]=O,N<g?(O.isShared=!0,s.sharedLength=N-63,i=!0,j>=0?(R[L++]=(N&31)+96,R[L++]=j):R[L++]=N):(j>=0?(R[L++]=213,R[L++]=114,R[L++]=(N&31)+96,R[L++]=j):(R[L++]=212,R[L++]=114,R[L++]=N),C&&(A+=_*C),v.length>=f&&(v.shift()[Fn]=0),v.push(P),b(O))}for(let j=0,W=O.length;j<W;j++)b(y[O[j]])},S=y=>{let O;if(y>16777216){if(y-r>od)throw new Error("Packed buffer would be larger than maximum buffer size");O=Math.min(od,Math.round(Math.max((y-r)*(y>67108864?1.25:2),4194304)/4096)*4096)}else O=(Math.max(y-r<<2,R.length-1)>>12)+1<<12;let T=new Wa(O);return Ee=new DataView(T.buffer,0,O),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),L-=r,r=0,$t=T.length-10,R=T}}useBuffer(t){R=t,Ee=new DataView(R.buffer,R.byteOffset,R.byteLength),L=0}};qa=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Rn];_s=[{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:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+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?nd(n,16,t):id(Ss?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==sd&&this.structuredClone?nd(n,Ha.indexOf(e.name),t):id(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function nd(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function id(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 nb(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 ib(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let a=i+r;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function no(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)");qa.unshift(n.Class),_s.unshift(n)}rd(n)}var ad=new oo({useRecords:!1}),sb=ad.pack,ab=ad.pack;var{NEVER:lb,ALWAYS:cb,DECIMAL_ROUND:ub,DECIMAL_FIT:pb}=vs,ld=512,db=1024;var cd=new oo({structuredClone:!0});no({Class:Pe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Pe.prototype),n}});no({Class:Oe.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Oe.prototype),n}});no({Class:Tt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Tt.prototype),n}});no({Class:En.prototype.constructor,type:4,write(n){return n.id},read(n){return new En(n)}});no({Class:Gn.prototype.constructor,type:5,write(n){return n.data},read(n){return new Gn(n)}});function mb(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 $a(n){if(as(n))return n;if(Array.isArray(n))return n.map($a);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=$a(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var ws;(r=>{function n(o){return cd.pack(o)}r.serialize=n;function t(o){return cd.unpack(o)}r.deserialize=t;function e(o){return mb(n($a(o))).toString()}r.checksum=e})(ws||(ws={}));var Ts;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Ts||(Ts={}));var As;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:vt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(As||(As={}));var Xa;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Xa||(Xa={}));var Ya;(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})(Ya||(Ya={}));var Cs;(t=>t.defaultData={...Ya.defaultData,...Xa.defaultData,cloner:null,booleanExclude:null})(Cs||(Cs={}));var Ka=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(Ka||{}),Qa=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(Qa||{}),Za=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(Za||{}),Ns;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:vt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Ns||(Ns={}));var ud=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],pd=["wrapping","image"],Vr;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:xt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,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],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,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{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...xt.fromHex(6710886),a:1},colorB:{...xt.fromHex(6710886),a:1},colorC:{...xt.fromHex(16777215),a:1},colorD:{...xt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:vt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,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:vt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:vt.fromHexAndA(0,1),contourColor:vt.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{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Vr||(Vr={}));var vr;(a=>{function n(c){return!c.layers.some(l=>{if(l.data.type==="texture"&&l.data.projection!==0||l.data.type==="depth"&&!l.data.isWorldSpace||l.data.type==="noise"||l.data.type==="displace")return!0})&&!e(c)}a.isMergable=n;function t(c){let p="";return c.layers.forEach(l=>{Object.entries(l.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(m=>p+=`${m}`):typeof d=="object"?Object.values(d).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${d}`})}),p}a.getHash=t;function e(c){let p=0;for(let l of c.layers)"alpha"in l.data&&l.data.type!=="light"&&l.data.type!=="fresnel"&&(p+=(1-p)*l.data.alpha);return p<1}a.isTransparent=e;function r(){return{layers:new Oe}}a.defaultEmptyData=r;function o(c="layer1",p="layer2"){return i("phong",c,p)}a.defaultData=o;function i(c,p="layer1",l="layer2"){let u=new Oe;return u.push({fi:0,data:Vr.defaultData("light",c),id:p}),u.push({fi:1,data:Vr.defaultData("color"),id:l}),{layers:u}}a.defaultTwoLayerData=i;function s(c,p="basic",l="layer1",u="layer2"){let d=Vr.defaultData("texture");Object.assign(d.texture,{image:c});let m=new Oe;return m.push({fi:0,data:d,id:l}),m.push({fi:1,data:Vr.defaultData("light",p),id:u}),{layers:m}}a.defaultTwoLayerTextureData=s})(vr||(vr={}));var Wo;(t=>{function n(){return{points:new Oe,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Wo||(Wo={}));var Ls;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Ls||(Ls={}));var Vn;(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==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Wo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=n})(Vn||(Vn={}));var zn;(o=>{o.identity={...ns.identity,hiddenMatrix:Er.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:zo.isEqual(i.position,s.position)?null:s.position,rotation:zo.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:zo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Er.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(zn||(zn={}));var br;(t=>t.defaultData={states:new Oe,events:new Oe,visible:!0,raycastLock:!1,...zn.identity})(br||(br={}));var dd;(t=>t.defaultData={type:"Empty",...br.defaultData})(dd||(dd={}));var Ps;(t=>t.defaultData={type:"Mesh",...br.defaultData,...Cs.defaultData})(Ps||(Ps={}));var md;(t=>t.defaultData={type:"TextFrame",...br.defaultData,...Ns.defaultData})(md||(md={}));var Os;(t=>t.defaultData={...br.defaultData,...zn.identity,...to.defaultData})(Os||(Os={}));var fd;(t=>{function n(e){return{...br.defaultData,...As.defaultData(e)}}t.defaultData=n})(fd||(fd={}));var hd;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Er.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Oe,events:new Oe,...to.defaultData},r.defaultMeshObject={name:"Rectangle",...br.defaultData,...Ps.defaultData,geometry:Vn.defaultData("RectangleGeometry"),material:vr.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...br.defaultData,...Ps.defaultData,geometry:Vn.defaultData("BooleanGeometry"),material:vr.defaultTwoLayerData("phong","layer1","layer2")}))(hd||(hd={}));var gd;(e=>{function n(r,o){if(o===void 0)return r;let i={...r};return"material"in i&&"material"in o&&o.material&&(i.material=Ea(i.material,s=>{if(typeof s!="string")for(let[a,c]of Object.entries(o.material.layers)){let p=s.layers.data(a);p&&eo(p,c)}}).data),i.materials&&o.materials&&(i.materials=Ea(i.materials,s=>{for(let a=0;a<i.materials.length;a++){let c=o.materials[a];if(typeof c!="string")for(let[p,l]of Object.entries(c.layers)){let u=s[a]?.layers?.data(p);u&&eo(u,l)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,zn.merge(i,o)),Vo.is(r.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let s=o;s.orthographic?.zoom!==void 0&&(i.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(i.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(i.targetOffset=s.targetOffset)}else if(r.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=n(i,o);else if(Ts.is(r.type)){let s=o;s.intensity!==void 0&&(i.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?i.color=s.color:i.color=xt.clone(s.color))}return i}e.patch=t})(gd||(gd={}));var Is;(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,preventScroll:!1,isTouchZoom:!0,orbitTouches:2,panTouches:3})(Is||(Is={}));var fb={Bell:"/_assets/_audios/CC0/bell_1.mp3","Bell 2":"/_assets/_audios/CC0/bell_2.wav",Bubble:"/_assets/_audios/CC0/bubble.wav",Click:"/_assets/_audios/CC0/click.mp3",Jump:"/_assets/_audios/CC0/jump.wav",Pop:"/_assets/_audios/CC0/pop.mp3","Pop 2":"/_assets/_audios/CC0/pop_2.mp3","Pop Double":"/_assets/_audios/CC0/pop_double_1.mp3","Pop Double 2":"/_assets/_audios/CC0/pop_double_2.mp3",Success:"/_assets/_audios/CC0/success.mp3",Suction:"/_assets/_audios/CC0/suction.wav",Tip:"/_assets/_audios/CC0/tip.mp3",Water:"/_assets/_audios/CC0/water.wav"},hb={"Bells 01":"/_assets/_audios/Originals/spe_bells_01.mp3","Bells 02":"/_assets/_audios/Originals/spe_bells_02.mp3","Bells 03":"/_assets/_audios/Originals/spe_bells_03.mp3","Book Closing 01":"/_assets/_audios/Originals/spe_book_closing_01.mp3","Book Closing 02":"/_assets/_audios/Originals/spe_book_closing_02.mp3","Book Opening 01":"/_assets/_audios/Originals/spe_book_opening_01.mp3","Book Opening 02":"/_assets/_audios/Originals/spe_book_opening_02.mp3","Breathing Strange":"/_assets/_audios/Originals/spe_breathing_strange.mp3",Bubble:"/_assets/_audios/Originals/spe_bubble.mp3","Bubble Double":"/_assets/_audios/Originals/spe_bubble_double.mp3","Cards 01":"/_assets/_audios/Originals/spe_cards_01.mp3","Cards 02":"/_assets/_audios/Originals/spe_cards_02.mp3","Ceramic 01":"/_assets/_audios/Originals/spe_ceramic_01.mp3","Ceramic 02":"/_assets/_audios/Originals/spe_ceramic_02.mp3","Ceramic 03":"/_assets/_audios/Originals/spe_ceramic_03.mp3","Ceramic 04":"/_assets/_audios/Originals/spe_ceramic_04.mp3","Ceramic 05":"/_assets/_audios/Originals/spe_ceramic_05.mp3","Ceramic 06":"/_assets/_audios/Originals/spe_ceramic_06.mp3","Ceramic 07":"/_assets/_audios/Originals/spe_ceramic_07.mp3","Click 01":"/_assets/_audios/Originals/spe_click_01.mp3","Click 02":"/_assets/_audios/Originals/spe_click_02.mp3","Click 03":"/_assets/_audios/Originals/spe_click_03.mp3","Click 04":"/_assets/_audios/Originals/spe_click_04.mp3","Click 05":"/_assets/_audios/Originals/spe_click_05.mp3","Click Double":"/_assets/_audios/Originals/spe_click_double_1.mp3","Device Close 01":"/_assets/_audios/Originals/spe_device_close_01.mp3","Device Open 01":"/_assets/_audios/Originals/spe_device_open_01.mp3","Door Closing":"/_assets/_audios/Originals/spe_door_closing.mp3","Door Garage":"/_assets/_audios/Originals/spe_door_garage.mp3","Door Opening":"/_assets/_audios/Originals/spe_door_opening.mp3","Drop 01":"/_assets/_audios/Originals/spe_drop_01.mp3","Drop 02":"/_assets/_audios/Originals/spe_drop_02.mp3","Drop 03":"/_assets/_audios/Originals/spe_drop_03.mp3","Drop 04":"/_assets/_audios/Originals/spe_drop_04.mp3","Drop 05":"/_assets/_audios/Originals/spe_drop_05.mp3","Face Slap 01":"/_assets/_audios/Originals/spe_face_slap_01.mp3","Face Slap 02":"/_assets/_audios/Originals/spe_face_slap_02.mp3","Falling Bounce":"/_assets/_audios/Originals/spe_falling_bounce.mp3","Falling Box":"/_assets/_audios/Originals/spe_falling_box.mp3","Finger Snap 01":"/_assets/_audios/Originals/spe_finger_snap_01.mp3","Finger Snap 02":"/_assets/_audios/Originals/spe_finger_snap_02.mp3","Finger Snap 03":"/_assets/_audios/Originals/spe_finger_snap_03.mp3","Finger Snap 04":"/_assets/_audios/Originals/spe_finger_snap_04.mp3","Jump 01":"/_assets/_audios/Originals/spe_jump_01.mp3","Jump 02":"/_assets/_audios/Originals/spe_jump_02.mp3","Key Press":"/_assets/_audios/Originals/spe_key_press.mp3","Key Press 02":"/_assets/_audios/Originals/spe_key_press_02.mp3","Key Press 03":"/_assets/_audios/Originals/spe_key_press_03.mp3","Key Press 04":"/_assets/_audios/Originals/spe_key_press_04.mp3","Key Press 05":"/_assets/_audios/Originals/spe_key_press_05.mp3","Key Press 06":"/_assets/_audios/Originals/spe_key_press_06.mp3","Key Typing 01":"/_assets/_audios/Originals/spe_key_typing_01.mp3","Knock Knock":"/_assets/_audios/Originals/spe_knock_knock.mp3","Marker 01":"/_assets/_audios/Originals/spe_marker_01.mp3","Marker 02":"/_assets/_audios/Originals/spe_marker_02.mp3","Marker 03":"/_assets/_audios/Originals/spe_marker_03.mp3","Marker 04":"/_assets/_audios/Originals/spe_marker_04.mp3","Match 01":"/_assets/_audios/Originals/spe_match_01.mp3","Measure Close 01":"/_assets/_audios/Originals/spe_measure_close_01.mp3","Measure Close 02":"/_assets/_audios/Originals/spe_measure_close_02.mp3","Measure Open 01":"/_assets/_audios/Originals/spe_measure_open_01.mp3","Measure Open 02":"/_assets/_audios/Originals/spe_measure_open_02.mp3","Metal Rolling":"/_assets/_audios/Originals/spe_metal_rolling.mp3","Motor 01":"/_assets/_audios/Originals/spe_motor_01.mp3","Motor 02":"/_assets/_audios/Originals/spe_motor_02.mp3","Noise 01":"/_assets/_audios/Originals/spe_noise_01.mp3","Notch 01":"/_assets/_audios/Originals/spe_notch_01.mp3","Notch 02":"/_assets/_audios/Originals/spe_notch_02.mp3","Paper Cut 01":"/_assets/_audios/Originals/spe_paper_cut_01.mp3","Paper Cut 02":"/_assets/_audios/Originals/spe_paper_cut_02.mp3","Paper Folding":"/_assets/_audios/Originals/spe_paper_folding.mp3","Paper Scratch 01":"/_assets/_audios/Originals/spe_paper_scratch_01.mp3","Paper Scratch 02":"/_assets/_audios/Originals/spe_paper_scratch_02.mp3","Paper Scratch 03":"/_assets/_audios/Originals/spe_paper_scratch_03.mp3","Pen 01":"/_assets/_audios/Originals/spe_pen_01.mp3","Pen 02":"/_assets/_audios/Originals/spe_pen_02.mp3","Punch 01":"/_assets/_audios/Originals/spe_punch_01.mp3","Punch 02":"/_assets/_audios/Originals/spe_punch_02.mp3","Punch Deep":"/_assets/_audios/Originals/spe_punch_deep.mp3","Radio Noise 01":"/_assets/_audios/Originals/spe_radio_noise_01.mp3","Radio Noise 02":"/_assets/_audios/Originals/spe_radio_noise_02.mp3","Radio Noise 03":"/_assets/_audios/Originals/spe_radio_noise_03.mp3","Rain 01":"/_assets/_audios/Originals/spe_rain_01.mp3","Rain 02":"/_assets/_audios/Originals/spe_rain_02.mp3","Scratch 01":"/_assets/_audios/Originals/spe_scratch_01.mp3","Scratch 02":"/_assets/_audios/Originals/spe_scratch_02.mp3","Scratch 03":"/_assets/_audios/Originals/spe_scratch_03.mp3","Seeds Shaking 01":"/_assets/_audios/Originals/spe_seeds_shaking_01.mp3","Seeds Shaking 02":"/_assets/_audios/Originals/spe_seeds_shaking_02.mp3","Song Scifi 01":"/_assets/_audios/Originals/spe_song_scifi_01.mp3",Spinner:"/_assets/_audios/Originals/spe_spinner.mp3","Spray Body":"/_assets/_audios/Originals/spe_spray_body.mp3","Suction 01":"/_assets/_audios/Originals/spe_suction_01.mp3","Suction 02":"/_assets/_audios/Originals/spe_suction_02.mp3","Suction 03":"/_assets/_audios/Originals/spe_suction_03.mp3","Suction 04":"/_assets/_audios/Originals/spe_suction_04.mp3","Switch 01":"/_assets/_audios/Originals/spe_switch_01.mp3","Switch 02":"/_assets/_audios/Originals/spe_switch_02.mp3","Switch 03":"/_assets/_audios/Originals/spe_switch_03.mp3","Switch 04":"/_assets/_audios/Originals/spe_switch_04.mp3","Switch 05":"/_assets/_audios/Originals/spe_switch_05.mp3","Switch 06":"/_assets/_audios/Originals/spe_switch_06.mp3","Switch 07":"/_assets/_audios/Originals/spe_switch_07.mp3","Switch 08":"/_assets/_audios/Originals/spe_switch_08.mp3","Switch 09":"/_assets/_audios/Originals/spe_switch_09.mp3","Switch 10":"/_assets/_audios/Originals/spe_switch_10.mp3","Swoosh 01":"/_assets/_audios/Originals/spe_swoosh_01.mp3","Swoosh 02":"/_assets/_audios/Originals/spe_swoosh_02.mp3","Swoosh 03":"/_assets/_audios/Originals/spe_swoosh_03.mp3","Swoosh 04":"/_assets/_audios/Originals/spe_swoosh_04.mp3","Tap Ceramic 01":"/_assets/_audios/Originals/spe_tap_ceramic_01.mp3","Tap Ceramic 02":"/_assets/_audios/Originals/spe_tap_ceramic_02.mp3","Tap Metal":"/_assets/_audios/Originals/spe_tap_metal_1.mp3","Tap Metal 2":"/_assets/_audios/Originals/spe_tap_metal_2.mp3","Tap Metal 3":"/_assets/_audios/Originals/spe_tap_metal_3.mp3","Tap Metal 4":"/_assets/_audios/Originals/spe_tap_metal_4.mp3","Tap Plastic":"/_assets/_audios/Originals/spe_tap_plastic.mp3","Tap Wood 01":"/_assets/_audios/Originals/spe_tap_wood_01.mp3","Tap Wood 02":"/_assets/_audios/Originals/spe_tap_wood_02.mp3","Trumbling 01":"/_assets/_audios/Originals/spe_trumbling_01.mp3","Trumbling 02":"/_assets/_audios/Originals/spe_trumbling_02.mp3","Voice Ouch":"/_assets/_audios/Originals/spe_voice_ouch.mp3","Voice Surprise 01":"/_assets/_audios/Originals/spe_voice_surprise_01.mp3","Voice Surprise 02":"/_assets/_audios/Originals/spe_voice_surprise_02.mp3","Walk Steps 01":"/_assets/_audios/Originals/spe_walk_steps_01.mp3","Walk Steps 02":"/_assets/_audios/Originals/spe_walk_steps_02.mp3","Walk Steps 03":"/_assets/_audios/Originals/spe_walk_steps_03.mp3","Water 01":"/_assets/_audios/Originals/spe_water_01.mp3","Water 02":"/_assets/_audios/Originals/spe_water_02.mp3","Water 03":"/_assets/_audios/Originals/spe_water_03.mp3","Water Bath":"/_assets/_audios/Originals/spe_water_bath.mp3","Water Drops":"/_assets/_audios/Originals/spe_water_drops.mp3",Wc:"/_assets/_audios/Originals/spe_wc.mp3","Xylophone Note A":"/_assets/_audios/Originals/spe_xylophone_note_a.mp3","Xylophone Note B":"/_assets/_audios/Originals/spe_xylophone_note_b.mp3","Xylophone Note C":"/_assets/_audios/Originals/spe_xylophone_note_c.mp3","Xylophone Note C Minor":"/_assets/_audios/Originals/spe_xylophone_note_c_minor.mp3","Xylophone Note D":"/_assets/_audios/Originals/spe_xylophone_note_d.mp3","Xylophone Note E":"/_assets/_audios/Originals/spe_xylophone_note_e.mp3","Xylophone Note F":"/_assets/_audios/Originals/spe_xylophone_note_f.mp3","Xylophone Note G":"/_assets/_audios/Originals/spe_xylophone_note_g.mp3","Xylophone Notes All 01":"/_assets/_audios/Originals/spe_xylophone_notes_all_01.mp3","Xylophone Notes All 02":"/_assets/_audios/Originals/spe_xylophone_notes_all_02.mp3"},Ms={CC0:fb,Originals:hb};var qo;(c=>{let n=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],t=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function e(){let p={},l=0;for(let u of n)p[`image_${l}`]={data:u,name:`Image ${l}`,asset:!1},l++;l=0;for(let u of t)p[`matcap_${l}`]={data:u,name:`Matcap ${l}`,asset:!1},l++;return p}c.defaultImages=e;function r(){let p={};return p["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},p}c.defaultColors=r;function o(){let p={},l={...Ms.CC0,...Ms.Originals},u=0;for(let[d,m]of Object.entries(l)){let f=m.split("/").pop()??"unknown",h=m.split(".").pop(),g="";if(h==="mp3")g="audio/mpeg";else if(h==="wav")g="audio/wav";else continue;p[`audio_${u}`]={name:d,filename:f,data:m,mimeType:g,asset:!1,free:d in Ms.CC0},u++}return p}c.defaultAudios=o,c.defaultAudio={name:"Untitled Audio",data:"/_assets/_audios/CC0/success.mp3",filename:"success.mp3",mimeType:"audio/mpeg",asset:!0};function s(){return{materials:new Pe,images:new Pe,colors:new Pe,audios:new Pe,penumbraSize:[.5,.5,.5]}}c.emptyData=s;function a(){return{materials:new Pe,images:xo(e(),Pe.prototype),colors:xo(r(),Pe.prototype),audios:xo(o(),Pe.prototype),penumbraSize:new Array(5).fill(.5)}}c.defaultData=a})(qo||(qo={}));function tl(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 a=2;a<10;a++)o.push(o[1]),i.push(1);let s={...Oa(Gr(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,s)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...Gr(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function gb(n){Object.values(n.shared.materials).forEach(t=>tl(t))}function yb(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&tl(r)}):"material"in e&&typeof e.material!="string"&&tl(e.material)})}function xb(n){Object.assign(n.scene.publish,{orbitControls:{...Is.defaultData,...Gr(n.scene.publish.orbitControls)}})}function vb(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((ud.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,a]of Object.entries(i))(pd.includes(s)||typeof a=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(s=>{t(s)})})})}function bb(n){n.scene.publish.withBackground=!0}function _b(n){n.scene.publish.settings.web={compress:!0,preset:1}}function Sb(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 wb(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 Tb(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.parent(t);e.type==="Mesh"&&(!r||n.scene.objects.data(r).geometry?.type!=="BooleanGeometry")&&(e.booleanExclude=null)})}function el(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={...Gr(t),colors:e,steps:r};Object.assign(t,o)}})}function Ab(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function yd(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&el(r)}):"material"in e&&typeof e.material!="string"&&el(e.material)}),Object.values(n.shared.materials).forEach(t=>el(t))}function Cb(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 Nb(n){n.shared.audios=xo(qo.defaultAudios(),Pe.prototype)}var xd=13;function vd(n){let t=n.schema??0;t!==xd&&(console.warn("updating from ",t,"to ",xd),t<1&&(yb(n),gb(n),n.schema=1),t<2&&(xb(n),n.schema=2),t<3&&(vb(n),n.schema=3),t<4&&(bb(n),n.schema=4),t<5&&(_b(n),n.schema=5),t<6&&(Sb(n),n.schema=6),t<7&&(wb(n),n.schema=7),t<8&&(Tb(n),n.schema=8),t<9&&(yd(n),n.schema=9),t<10&&(Ab(n),n.schema=10),t<11&&(Cb(n),n.schema=11),t<12&&(yd(n),n.schema=12),t<13&&(Nb(n),n.schema=13))}var Ds;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})(Ds||(Ds={}));import{Color as Lb}from"three";var Ze=class extends Lb{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)}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}};import{ConeBufferGeometry as Ib}from"three";import{BufferGeometry as Pb,CylinderBufferGeometry as Ob,Float32BufferAttribute as rl,Vector2 as Mt,Vector3 as Bs}from"three";var _d=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:0,cornerSegments:8,hollow:0},n.parameters),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:s,thetaStart:a,thetaLength:c,radiusTop:p,radiusBottom:l,cornerRadius:u,cornerSegments:d,hollow:m}=n.parameters,f;return u||m?f=new Un(p,l,r,o,i,s,a,c*Math.PI/180,u,u,d,m):f=new Ob(p,l,r,o,i,s,a,c*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function zr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function bd(n){return new Mt(n.y,-n.x)}var Un=class extends Pb{constructor(t,e,r,o,i,s,a,c,p,l,u,d,m=!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,s=s!==void 0?s:!1,a=a!==void 0?a:0,c=c!==void 0?c:Math.PI*2,s&&(p=0,l=0);let f=[],h=[],g=[],x=[],v=0,A=r/2,_=new Bs,b=new Bs;m&&t==0&&(t=p),m&&e==0&&(e=l);let D=new Mt(t,A),S=new Mt(e,-A),y=null,O=null,T=null,P=null,C=D.clone().sub(S),N=0,j=0,W=0;d>0&&(N=Math.min(t,e)*(1-d),j=t-N,W=e-N);let oe=D.clone();oe.x-=N;let ce=Math.PI-C.angle(),ie=C.angle(),K=Math.tan(ie/2),U=Math.tan(ce/2),F=K+U,E=d?F:U,B=d?F:K;if(p=Math.min(p,(t-j)/E,C.length()/F),l=Math.min(l,(e-W)/B,C.length()/F),p>0){let z=p/K;y=D.clone().sub(new Mt(z,p)),d&&(T=y.clone(),T.x-=N-F*p),D.sub(C.clone().setLength(z))}if(l>0){let z=l/U;O=S.clone().sub(new Mt(z,-l)),S.add(C.clone().setLength(z)),d&&(P=O.clone(),P.x-=N-F*l,oe.sub(C.clone().setLength(z)))}C=D.clone().sub(S);let I=C.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+a,ee=new Mt(Math.sin(J),Math.cos(J));P&&O?(Q(M,q,ee,ce,l,P,-1,!0),Q(M,q,ee,ie,l,O,-1,!1)):O?(k(M,ee,O.x,0,-1),Q(M,q,ee,ie,l,O,-1,!1)):s||k(M,ee,e,W,-1);let H=bd(C).normalize();if(zr(H,ee,_),!I)for(let Z=0;Z<=i;Z++){let $=Z/i,re=C.clone().multiplyScalar($).add(S);zr(re,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Q(M,q,ee,ce,p,y,1,!1),Q(M,q,ee,ie,p,T,1,!0)):y?(Q(M,q,ee,ce,p,y,1,!1),k(M,ee,y.x,0,1)):s||k(M,ee,t,j,1),d&&!I){let Z=bd(C).multiplyScalar(-1).normalize();zr(Z,ee,_);for(let $=0;$<=i;$++){let re=$/i,le=C.clone().multiplyScalar(-re).add(oe);zr(le,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.z),x.push(q,.5+b.y/r),M.push(v++)}}d&&!s&&M.push(M[0]),G.push(M)}for(let z=0;z<G.length-1;z++)for(let M=0;M<G[0].length-1;M++){if(s&&d&&M==i)continue;let q=G[z][M],J=G[z+1][M],ee=G[z+1][M+1],H=G[z][M+1],Z=h[ee*3+0],$=h[ee*3+2];f.push(q,J,H),(Z!=0||$!=0)&&f.push(J,ee,H)}c<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+c)),this.setIndex(f),this.setAttribute("position",new rl(h,3)),this.setAttribute("normal",new rl(g,3)),this.setAttribute("uv",new rl(x,2));function Q(z,M,q,J,ee,H,Z,$){for(let re=0;re<u+1;re++){let le=re/u,ne=Z<0?le:1-le;$&&(ne-=1),ne*=J;let me=new Mt(Math.sin(ne),Math.cos(ne)*Z),Ie=me.clone().multiplyScalar(ee).add(H);zr(Ie,q,b),h.push(b.x,b.y,b.z),zr(me,q,_),g.push(_.x,_.y,_.z),x.push(M,.5+b.y/r),z.push(v++)}}function k(z,M,q,J,ee){let H=new Bs,Z=new Mt,$=[q,J];ee<0&&$.reverse();for(let re of $)Z.set(re,A*ee),zr(Z,M,H),h.push(H.x,H.y,H.z),g.push(0,ee,0),x.push(.5,.5),z.push(v++)}function V(z,M,q){let J=new Mt(Math.sin(q),Math.cos(q)),ee=new Mt(-Math.cos(q),Math.sin(q)),H=new Bs,Z=z<0?(le,ne,me)=>f.push(le,ne,me):(le,ne,me)=>f.push(le,me,ne),$=new Mt((t+e+j+W)/4,0);zr($,J,H),h.push(H.x,H.y,H.z),g.push(ee.x,0,ee.y),x.push(.5,.5);let re=v++;for(let le of M){let ne=h.slice(le*3,le*3+3);h.push(...ne),g.push(ee.x,0,ee.y);let me=x.slice(le*2,le*2+2);x.push(...me),v++}for(let le=re+1;le<v-1;le++)Z(re,le,le+1);Z(re,v-1,re+1)}}};var Sd=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:0,cornerRadiusBottom:0,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,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:l,cornerSegments:u}=n.parameters,d;return p>0||l>0||c<360?d=new Un(0,t/2,r,o,i,s,a,c*Math.PI/180,p,l,u,0,!0):d=new Ib(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxBufferGeometry as Mb,BufferGeometry as Db,Float32BufferAttribute as ol,Vector3 as kn}from"three";var wd=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:0,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:s,cornerRadius:a,cornerSegments:c}=n.parameters,p;return a==0?p=new Mb(t,e,r,o,i,s):p=new il(t,e,r,o,i,s,a,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},nl=Math.PI/2,il=class extends Db{constructor(t=1,e=1,r=1,o=1,i=1,s=1,a=0,c=4){super(),this.type="BoxBufferGeometry";let p=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),a=Math.min(a,t/2,e/2,r/2);let l=[],u=[],d=[],m=[],f=0,h=0;g("z","y","x",-1,-1,r,e,t,s,i,0),g("z","y","x",1,-1,r,e,-t,s,i,1),g("x","z","y",1,1,t,r,e,o,s,2),g("x","z","y",1,-1,t,r,-e,o,s,3),g("x","y","z",1,-1,t,e,r,o,i,4),g("x","y","z",-1,-1,t,e,-r,o,i,5),a>0&&(x("z","y","x",-1,-1,1,r,e,t,s,0),x("z","y","x",1,-1,-1,r,e,t,s,1),x("z","y","x",-1,1,-1,r,e,t,s,1),x("z","y","x",1,1,1,r,e,t,s,0),x("x","y","z",-1,-1,-1,t,e,r,o,0),x("x","y","z",1,-1,1,t,e,r,o,1),x("x","y","z",-1,1,1,t,e,r,o,0),x("x","y","z",1,1,-1,t,e,r,o,1),x("y","x","z",-1,-1,1,e,t,r,i,0),x("y","x","z",1,-1,-1,e,t,r,i,1),x("y","x","z",1,1,1,e,t,r,i,1),x("y","x","z",-1,1,-1,e,t,r,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new ol(u,3)),this.setAttribute("normal",new ol(d,3)),this.setAttribute("uv",new ol(m,2));function g(A,_,b,D,S,y,O,T,P,C,N){let j=(y-2*a)/P,W=(O-2*a)/C,oe=y/2-a,ce=O/2-a,ie=T/2,K=P+1,U=C+1,F=0,E=0,B=new kn;for(let I=0;I<U;I++){let G=I*W-ce;for(let Q=0;Q<K;Q++){let k=Q*j-oe;B[A]=k*D,B[_]=G*S,B[b]=ie,u.push(B.x,B.y,B.z),B[A]=0,B[_]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),m.push(Q/P),m.push(1-I/C),F+=1}}for(let I=0;I<C;I++)for(let G=0;G<P;G++){let Q=f+G+K*I,k=f+G+K*(I+1),V=f+(G+1)+K*(I+1),z=f+(G+1)+K*I;l.push(Q,k,z),l.push(k,V,z),E+=6}p.addGroup(h,E,N),h+=E,f+=F}function x(A,_,b,D,S,y,O,T,P,C,N){let j=(O-2*a)/C,W=O/2-a,oe=T/2-a,ce=P/2,ie=C+1,K=0,U=0,F=new kn,E=new kn;for(let B=0;B<c+1;B++){let I=B/c*nl,G=Math.sin(I)*a,Q=(1-Math.cos(I))*a,k=Math.sin(I),V=Math.cos(I);F[_]=(oe+G)*S,F[b]=(ce-Q)*y,E[A]=0,E[_]=k*Math.sign(F[_]),E[b]=V*Math.sign(F[b]);for(let z=0;z<ie;z++){let M=z*j-W;F[A]=M*D,u.push(F.x,F.y,F.z),d.push(E.x,E.y,E.z),m.push(z/C),m.push(0),K+=1}}for(let B=0;B<c;B++)for(let I=0;I<C;I++){let G=f+I+ie*B,Q=f+I+ie*(B+1),k=f+(I+1)+ie*(B+1),V=f+(I+1)+ie*B;l.push(G,Q,V),l.push(Q,k,V),U+=6}p.addGroup(h,U,N),h+=U,f+=K}function v(A,_,b){let D=new kn,S=new kn(t/2,e/2,r/2);S.subScalar(a);let y=[],O=A*_*b>0?(P,C,N)=>l.push(P,C,N):(P,C,N)=>l.push(P,N,C);for(let P=0;P<=c;P++){let C=[],N=nl*(1-P/c),j=Math.cos(N),W=Math.sin(N),oe=0;for(let ce=0;ce<=P;ce++){let ie=Math.cos(oe),K=Math.sin(oe);D.x=j*ie,D.y=W,D.z=j*K;let U=S.clone().addScaledVector(D,a);u.push(A*U.x,_*U.y,b*U.z),d.push(A*D.x,_*D.y,b*D.z),m.push(0,0),C.push(f++),oe+=nl/P}y.push(C)}let T=y.length-1;for(let P=0;P<T;P++){let C=y[P],N=y[P+1],j=C.length-1;O(C[0],N[1],N[0]);for(let W=1;W<=j;W++)O(C[W-1],C[W],N[W]),O(C[W],N[W+1],N[W])}}}};import{BufferGeometry as Bb,Float32BufferAttribute as sl,Triangle as Eb,Vector3 as _r,Vector2 as al}from"three";var Ur=class extends Bb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],p=[];l(),u(),this.setAttribute("position",new sl(a,3)),this.setAttribute("normal",new sl(p,3)),this.setAttribute("uv",new sl(c,2));return;function l(){i=Math.min(1-1e-5,i),i==0&&(s=0);let m={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new _r,h=f.clone(),g=new Eb,x=i*o,v=o-x,A=s+1,_=new _r,b=(K,U)=>_.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),S=D(t.length/3,(K,U)=>new _r().fromArray(t,U*3).setLength(o)),y=[],O=1e6;for(let K=0;K<S.length;K++){let U=S[K],F=[],E,B,I,G=1e10,Q=-1;for(;(Q=e.indexOf(K,Q+1))!=-1;){let M=Q-Q%3;E=e[M+(Q+1)%3],B=e[M+(Q+2)%3],I=U.distanceToSquared(S[E]),G=Math.min(G,I),F.push([E,B,I])}G+=1e-6;let k=[],V=0,z=F.length;for(let M=0;M<z;M++){[E,B,I]=F[V];let q=y[E]?.includes(K)==!0;I<=G&&k.push(E+ +q*O),V=F.findIndex(J=>J[0]==B)}y.push(k)}let T=[];{let K=0,U=0,F,E,B=m==3;for(let I=0;I<=s;I++){F=I*(I+1)/2,E=(I+1)*(I+2)/2;for(let G=0;G<s-I;G++)[K,U]=[F+G+I+2,E+G+I+3],T.push(F,E,...B?[U,F]:[K,E],U,K),[F,E]=[K,U];T.push(F,E,F+s+2)}}let P=f.clone(),C=f.clone(),N=f.clone(),j=f.clone(),W=f.clone(),oe=[],ce=D(S.length,()=>D(m,()=>f.clone()));for(let K=0;K<S.length;K++){f.copy(S[K]).normalize(),P.copy(f).multiplyScalar(v);let U=y[K];for(let k=0;k<U.length;k++){let V=U[k],z=U[(k+1)%m];g.setFromPointsAndIndices(S,K,V%O,z%O),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(P,ce[K][k])}let F=[],E=[],B=[],I=new _r;s==0&&[...ce[K]].reduce((k,V)=>k.add(V),I).multiplyScalar(1/m);for(let k=0;k<m;k++){let V=[],z=(k-1+m)%m,M=ce[K][z],q=ce[K][k];f.copy(M).sub(P),h.copy(q).sub(P);let J=P.angleTo(f),ee=f.angleTo(h),H=Math.cos(J)*x;s==0?C.copy(I):C.copy(P).setLength(v+H),E.push(H);let Z=[C,M,q];for(let $=0;$<2;$++){let re=Z[$],le=Z[$+1];j.subVectors(re,P),W.subVectors(le,P),N.crossVectors(j,W).normalize();for(let ne=0;ne<A;ne++){let me=[J,ee][$]*ne/A;f.copy(j).applyAxisAngle(N,me).add(P),F.push(f.clone()),$&&(b(f,P),V.push([ne==0?re:f.clone(),_.clone()]))}$&&(b(le,P),V.push([le,_.clone()]))}B.push(V)}oe.push(B);let G=2*A,Q=2;for(let k=0;k<m;k++){let V=G*k,z=G*((k+1)%m),M=[F[V]];for(let J=1;J<A;J++){j=F[V+J],W=F[z+J],M.push(j);for(let ee=1,H=J-Q+1;ee<=H;ee++)f.lerpVectors(j,W,ee/(H+1)),f.sub(P).setLength(E[k]).add(P),M.push(f.clone());M.push(W)}for(let J=0;J<A;J++)M.push(F[J+A+V]);M.push(F[z+A]);let q=T.map(J=>M[J]);a.push(...q.map(J=>[J.x,J.y,J.z]).flat()),p.push(...q.map(J=>(b(J,P),[_.x,_.y,_.z])).flat())}}let ie=[];for(let K=0;K<y.length;K++)for(let U=0;U<m;U++){let F=y[K][U];if(F<O){let E=y[F].findIndex(G=>G%O==K),B=oe[K][U],I=oe[F][E];for(let G=0;G<A;G++){let Q=B[G],k=I[A-G],V=B[G+1],z=I[A-(G+1)];[Q,k,V,V,k,z].forEach(M=>{a.push(M[0].x,M[0].y,M[0].z),p.push(M[1].x,M[1].y,M[1].z)})}ie.push(B[0][0],I[A][0],B[A][0],I[0][0])}}for(;ie.length;){let K,U,F,E;[K,U]=ie.splice(0,2);let B=[K];for(;K!=U;)B.push(U),F=ie.indexOf(U),E=F%2,U=ie.splice(F-E,2)[1-E];_.subVectors(B[0],B[1]).cross(f.subVectors(B[0],B[2])).normalize();let I=_.dot(B[0])<0;I&&_.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +I],B[G+1-+I],B[0]].forEach(Q=>{a.push(Q.x,Q.y,Q.z),p.push(_.x,_.y,_.z)})}}function u(){let d=new _r;for(let S=0;S<a.length;S+=3){d.x=a[S+0],d.y=a[S+1],d.z=a[S+2];let y=b(d)/2/Math.PI+.5,O=D(d)/Math.PI+.5;c.push(y,1-O)}let m=new _r,f=new _r,h=new _r,g=new _r,x=new al,v=new al,A=new al,_=(S,y,O,T)=>{T<0&&S.x===1&&(c[y]=S.x-1),O.x===0&&O.z===0&&(c[y]=T/2/Math.PI+.5)};for(let S=0,y=0;S<a.length;S+=9,y+=6){m.set(a[S+0],a[S+1],a[S+2]),f.set(a[S+3],a[S+4],a[S+5]),h.set(a[S+6],a[S+7],a[S+8]),x.set(c[y+0],c[y+1]),v.set(c[y+2],c[y+3]),A.set(c[y+4],c[y+5]),g.copy(m).add(f).add(h).divideScalar(3);let O=b(g);_(x,y+0,m,O),_(v,y+2,f,O),_(A,y+4,h,O)}for(let S=0;S<c.length;S+=6){let y=c[S+0],O=c[S+2],T=c[S+4],P=Math.max(y,O,T),C=Math.min(y,O,T);P>.9&&C<.1&&(y<.2&&(c[S+0]+=1),O<.2&&(c[S+2]+=1),T<.2&&(c[S+4]+=1))}function b(S){return Math.atan2(S.z,-S.x)}function D(S){return Math.atan2(-S.y,Math.sqrt(S.x*S.x+S.z*S.z))}}}static fromJSON(t){return new Ur(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as Gb}from"three";var Td=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:s}=n.parameters,a=o===0&&i!==0?new jn(t*.5,i,s):new Gb(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},jn=class extends Ur{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-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],a=[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],c="DodecahedronGeometry";super(s,a,c,t,e,r),this.type=c}static fromJSON(t){return new jn(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as $b,Plane as Xb,Shape as Vd,Vector2 as Sr,Vector3 as Yb,MathUtils as fl,LineCurve as hl,QuadraticBezierCurve as zd,CubicBezierCurve as Fs}from"three";import{CubicBezierCurve as Es,EllipseCurve as Rb,LineCurve as Gs,LineCurve3 as Fb,MathUtils as Vb,QuadraticBezierCurve as cl,SplineCurve as zb,Vector2 as tt,Vector3 as Nd}from"three";var Hn=1e-12,$o=class{constructor(t){this.position=new tt;this.startPosition=new tt;this.uuid=Vb.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 $o(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Xo=class extends $o{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Xo(this.parent).copy(this)}},Dt=class extends $o{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Xo(this),new Xo(this))}static create(e,r){let o=new Dt(e,new tt(...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 s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.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 Dt(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 tt,r=new tt){let[o,i]=this.computeTangents();return o&&i&&(Ad(o,e),Ad(i,r)),[e,r]}computeTangent(e=new tt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new tt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Ad(n,t=new tt){let e=n.length();return t.set(-n.y/e,n.x/e)}var ul=n=>n,Yo=new tt,Rs=new tt,Ub=new tt,kb=new tt,jb=new tt,Hb=new tt,Ld=new Nd,Pd=new Nd;function Od(n){let t=new tt;t.addVectors(n.v0,Yo.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new tt;return e.addVectors(n.v2,Rs.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Es(n.v0,t,e,n.v2)}function Wn(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Wb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function qb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function pl(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 Id(n,t,e){return Cd(n,t)&&Cd(t,e)&&ll(n.position,t.position,e.position)}function ll(n,t,e){return Yo.copy(t).sub(n).cross(Rs.copy(e).sub(n))===0}function Md(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,a=(n.x+t.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,p=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(a+c,s+p),o.set(a-c,s-p),[r,o]}function Dd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Bd(n,t,e,r,o,i){let s=t.x-n.x,a=t.y-n.y,c=e.x-n.x,p=e.y-n.y,l=Math.sqrt((s+c)*(s+c)+(a+p)*(a+p)),u;return pl(t,n,e)>Math.PI&&(l*=-1),Wn(p,a)?u=(a+p)*(r/l-.5)*8/3/(s-c):u=(s+c)*(r/l-.5)*8/3/(p-a),o.set(t.x-u*a,t.y+u*s),i.set(e.x+u*p,e.y-u*c),[o,i]}function dl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Cd(n,t){return ll(n.position,n.controls[1].position,t.position)&&ll(n.position,t.controls[0].position,t.position)}function Ed(n,t,e,r,o=.5){let i=Yo.subVectors(t,n).multiplyScalar(o).add(n),s=Rs.subVectors(e,t).multiplyScalar(o).add(t),a=Ub.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=kb.subVectors(s,i).multiplyScalar(o).add(i),l=jb.subVectors(a,s).multiplyScalar(o).add(s),u=a,d=Hb.subVectors(l,p).multiplyScalar(o).add(p);return[n.x,n.y,c.x,c.y,p.x,p.y,d.x,d.y,l.x,l.y,u.x,u.y,r.x,r.y]}function Gd(n,t,e=12,r=!0){let o=Pd.set(0,0,0),i,s=0,a=[];for(let c=0;c<t.length;c++){let p=ul(t[c]),l=Yo,u=kr(p,e);a.push(u);for(let d=0;d<=u;d++)if(p instanceof Es||p instanceof cl||p instanceof Gs){if(p.getPoint(d/u,l),o.set(l.x,l.y,0),i!==void 0&&qb(i,o))continue;i===void 0&&(i=Ld),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Rd(n,t,e,r=12,o=!0){let i=Pd.set(0,0,0),s=0,a=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,l=ul(t[c]),u=Yo,d=kr(l,r);a.push(d);for(let m=0;m<=d;m++)if(l instanceof Es||l instanceof cl||l instanceof Gs){if(l.getPoint(m/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Ld:(n.setXYZ(s,p.x,p.y,p.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),p.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function ml(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let c=kr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=kr(s.curveAfter,t)),r.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=kr(n[0].roundedCurveCorner,t)*.5),r}function kr(n,t=12){return n&&n instanceof Rb?t*2:n&&(n instanceof Gs||n instanceof Fb)?1:n&&n instanceof zb?t*n.points.length:t}function Fd(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let a=ul(t[s]),c=kr(a,e),p=Yo;for(let l=0;l<=c;l++)if(a instanceof Es||a instanceof cl||a instanceof Gs){if(a.getPoint(l/c,p),o!==void 0&&Wb(o,p,Hn))continue;o===void 0&&(o=Rs),o.copy(p),n.push(p.x,p.y),i++}}return Wn(n[0],n[n.length-2],Hn)&&Wn(n[1],n[n.length-1],Hn)&&(n.pop(),n.pop()),r&&i>1&&!(Wn(n[i-1],n[1],Hn)&&Wn(n[i-2],n[0],Hn))&&(n.push(n[0],n[1]),i++),n}var gl=new Sr,Kb=new Sr,Qb=new Sr,Zb=new Sr,Jb=new Sr,e_=new Sr,_e=class extends Vd{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new $b;this.plane=new Xb(new Yb(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=fl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new _e;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Dt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>_e.createFromState(s)),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 s=0,a=this.shapeHoles.length;s<a;s++){let c=this.shapeHoles[s],p=c.points.length-1,l=c.getPointIndexById(e);if(l<0)i+=p;else return l+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)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}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 s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return r+a;r+=s.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=gl.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=fl.generateUUID()){let i;e instanceof Sr?i=e:i=new Sr(e,r);let s=new Dt(o,i);return s.roundness=this.roundness,s}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 s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}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(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Gd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=ml(this.points,e,!1),this.roundedCurveDivisions=ml(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Rd(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Fd(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,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=kr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((c,p)=>c+p,0));for(let c=0,p=i.length;c<p;c++){let l=i[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,c=a[e];if(dl(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(gl.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=a[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){dl(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(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i],c=this.points[i-1]??this.points[this.points.length-1],p=this.points[i+1]??this.points[0],l=a.roundness,u=c&&p&&Id(c,a,p);if(!a.controlsMoved()&&l>0&&!u){let d=a.curveBefore,m=a.curveAfter;if(d===void 0||m===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,g=d.getLength(),x=m.getLength(),v=Math.min(l,g*.499),A=Math.min(l,x*.499),_=Math.min(v,A),b=1-_/g,D=_/x,S=d.getPointAt(b,gl),y=m.getPointAt(D,Kb);this._subSplitCurve(d,f,b,S,void 0),this._subSplitCurve(m,h,D,void 0,y);let O;if(this.useCubicForRoundedCorners){let T=pl(S,a.position,y)/2,P=Math.tan(T)*S.distanceTo(a.position),[C,N]=Md(S,y,P,Qb,Zb),j=Dd(C,N,a.position),[W,oe]=Bd(j,S,y,P,Jb,e_);O=new Fs(S.clone(),W.clone(),oe.clone(),y.clone())}else O=new zd(S.clone(),a.position.clone(),y.clone());a.roundedCurveCorner=O,this.roundedCurves.splice(i+o,0,O),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof hl)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let a=e,c=r,p=a.getUtoTmapping(o,0),l=Ed(a.v0,a.v1,a.v2,a.v3,p);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),s!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return r}clone(){let e=new _e(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,s=e.points[i+0],a=e.points[i+1],c=e.points[i+2],p=e.points[i+3],l=e.points[i+4],u=e.points[i+5],d=e.points[i+6],m=new Dt(fl.generateUUID(),new Sr(s,a));m.controls[0].position.set(c,p),m.controls[1].position.set(l,u),m.roundness=d,this.points.push(m)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new _e;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof Fs&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,c;for(a=0,c=i.length;a<c;a++)i[a]instanceof zd&&(i[a]=Od(i[a]));for(a=0,c=i.length;a<c;a++){let u=i[a],d=a>0?i[a-1]:null,m;u instanceof Fs?(m=this.createPoint(u.v0),m.controls[1].position.copy(u.v1)):u instanceof hl&&(m=this.createPoint(u.v1)),m!==void 0&&(d!==null&&r(m,d),s.push(m))}let p=i[i.length-1],l=!1;return p instanceof Fs?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),l=!0):p instanceof hl&&p.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof Vd&&(this.shapeHoles=e.holes.map(i=>{let s=new _e;return s.fromShape(i),s})),this.update(),this}};var xl=Math.PI*2;function yl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function t_(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),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Ud(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 r_(n,t,e,r,o,i,s,a,c,p){let l=Math.pow(o,2),u=Math.pow(i,2),d=Math.pow(s,2),m=Math.pow(a,2),f=l*u-l*m-u*d;f<0&&(f=0),f/=l*m+u*d,f=Math.sqrt(f)*(c===p?-1:1);let h=f*o/i*a,g=f*-i/o*s,x=h+(n+e)/2,v=g+(t+r)/2,A=(s-h)/o,_=(a-g)/i,b=(-s-h)/o,D=(-a-g)/i,S=Ud(1,0,A,_),y=Ud(A,_,b,D);return!p&&y>0&&(y-=xl),p&&y<0&&(y+=xl),{centerx:x,centery:v,ang1:S,ang2:y}}function kd({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||i===0)return[];let p=(n-e)/2,l=(t-r)/2;if(p===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let d=r_(n,t,e,r,o,i,p,l,s,a),{ang1:m,ang2:f}=d,{centerx:h,centery:g}=d,x=Math.abs(f)/(xl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);f/=v;for(let A=0;A<v;A++)c.push(t_(m,f)),m+=f;return c.map(A=>{let{x:_,y:b}=yl(A[0],o,i,h,g),{x:D,y:S}=yl(A[1],o,i,h,g),{x:y,y:O}=yl(A[2],o,i,h,g);return{x1:_,y1:b,x2:D,y2:S,x:y,y:O}})}import{BufferAttribute as zs,BufferGeometry as a_}from"three";var Le;(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"})(Le||(Le={}));var Ue;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ue||(Ue={}));function ue(n,t){if(!n)throw t||"Assertion Failed!"}var se=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){ue(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){ue(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){ue(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){ue(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 s,a,c;n.vertLeq(t,e)||(c=t,t=e,e=c),n.vertLeq(r,o)||(c=r,r=o,o=c),n.vertLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.vertLeq(r,e)?n.vertLeq(e,o)?(s=n.edgeEval(t,r,e),a=n.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,e.s)):(s=n.edgeSign(t,r,e),a=-n.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(c=t,t=e,e=c),n.transLeq(r,o)||(c=r,r=o,o=c),n.transLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.transLeq(r,e)?n.transLeq(e,o)?(s=n.transEval(t,r,e),a=n.transEval(r,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,e.t)):(s=n.transSign(t,r,e),a=-n.transSign(t,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,o.t)):i.t=(r.t+e.t)/2},n}(),qn=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}(),Vs=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}(),Ko=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}(),jd=function(){function n(){var t=new Ko,e=new qn,r=new Vs(0),o=new Vs(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 Vs(0),r=new Vs(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;ue(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 s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ue(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 s=e;do s.Lface=o,s=s.Lnext;while(s!==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,s=t.next;s.prev=i,i.next=s},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,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new Ko,e=new Ko,r=new qn,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 Ko;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new qn;this.makeFace_(s,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 qn;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 Ko;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 s=new qn;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,a;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);s=t.prev,a=t.next,a.prev=s,s.next=a},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,s,a,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),a+c-2<=t&&se.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&se.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,a,c,p;for(i=t,i=t;(o=i.next)!==t;i=o){ue(o.prev===i),c=o.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){ue(s.prev===a),c=s.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ue(s.prev===a&&s.anEdge===null),p=r,p=r;(c=p.next)!==r;p=c)ue(c.Sym.next===p.Sym),ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Org!==null),ue(c.Dst!==null),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c);ue(c.Sym.next===p.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),Hd=function(){function n(){this.handle=null}return n}(),Wd=function(){function n(){this.key=null,this.node=0}return n}(),o_=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 Hd,this.handles[r]=new Wd;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,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>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=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===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=s}},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 Hd;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Wd}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;ue(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}(),vl=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}(),qd=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),n_=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new qd,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 qd;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}(),i_=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,s=r.eUp;if(i.Dst===o)return s.Dst===o?se.vertLeq(i.Org,s.Org)?se.edgeSign(s.Dst,i.Org,s.Org)<=0:se.edgeSign(i.Dst,s.Org,i.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(i.Dst,o,i.Org)>=0;var a=se.edgeEval(i.Dst,o,i.Org),c=se.edgeEval(s.Dst,o,s.Org);return a>=c},n.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ue(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 vl;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 Le.ODD:return(e&1)!==0;case Le.NONZERO:return e!==0;case Le.POSITIVE:return e>0;case Le.NEGATIVE:return e<0;case Le.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,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),n.finishRegion(t,s),a=i.eUp,s=i}return a},n.addRightEdges=function(t,e,r,o,i,s){var a,c,p,l,u=!0;p=r;do ue(se.vertLeq(p.Org,p.Dst)),n.addRegionBelow(t,e,p.Sym),p=p.Onext;while(p!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,l=i;a=n.regionBelow(c),p=a.eUp.Sym,p.Org===l.Org;)p.Onext!==l&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(l.Oprev,p)),a.windingNumber=c.windingNumber-p.winding,a.inside=n.isWindingInside(t,a.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(t,c)&&(n.addWinding(p,l),n.deleteRegion(t,c),t.mesh.delete(l)),u=!1,c=a,l=p;c.dirty=!0,ue(c.windingNumber-p.winding===a.windingNumber),s&&n.walkDirtyRegions(t,c)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=se.vertL1dist(e,t),i=se.vertL1dist(r,t),s=.5*i/(o+i),a=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(se.vertLeq(o.Org,i.Org)){if(se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;se.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(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(se.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,s;if(ue(!se.vertEq(o.Dst,i.Dst)),se.vertLeq(o.Dst,i.Dst)){if(se.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(se.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,a=i.Org,c=o.Dst,p=i.Dst,l,u,d=new Ko,m,f;if(ue(!se.vertEq(p,c)),ue(se.edgeSign(c,t.event,s)<=0),ue(se.edgeSign(p,t.event,a)>=0),ue(s!==t.event&&a!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),u=Math.max(a.t,p.t),l>u))return!1;if(se.vertLeq(s,a)){if(se.edgeSign(p,s,a)>0)return!1}else if(se.edgeSign(c,a,s)<0)return!1;return n.debugEvent(t),se.intersect(c,s,p,a,d),ue(Math.min(s.t,c.t)<=d.t),ue(d.t<=Math.max(a.t,p.t)),ue(Math.min(p.s,c.s)<=d.s),ue(d.s<=Math.max(a.s,s.s)),se.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),m=se.vertLeq(s,a)?s:a,se.vertLeq(m,d)&&(d.s=m.s,d.t=m.t),se.vertEq(d,s)||se.vertEq(d,a)?(n.checkForRightSplice(t,e),!1):!se.vertEq(c,t.event)&&se.edgeSign(c,t.event,d)>=0||!se.vertEq(p,t.event)&&se.edgeSign(p,t.event,d)<=0?p===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):c===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,f,!0),!0):(se.edgeSign(c,t.event,d)>=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),se.edgeSign(p,t.event,d)<=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=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,c,a,p),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,s=n.regionBelow(e),a=e.eUp,c=s.eUp,p=!1;if(a.Dst!==c.Dst&&n.checkForIntersect(t,e),se.vertEq(a.Org,t.event)&&(t.mesh.splice(i.Oprev,a),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),p=!0),se.vertEq(c.Org,t.event)&&(t.mesh.splice(r,c.Oprev),r=n.finishLeftRegions(t,s,null),p=!0),p){n.addRightEdges(t,e,r.Onext,i,i,!0);return}se.vertLeq(c.Org,a.Org)?o=c.Oprev:o=a,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,s,a,c;if(o=e.eUp,se.vertEq(o.Org,r)){ue(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!se.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}ue(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=a=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(t,c),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),se.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,a,c,p=new vl;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=se.vertLeq(a.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=t.mesh.connect(a.Dnext,e.anEdge);c=l.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,c):n.computeWinding(t,n.addRegionBelow(t,r,c)),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);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(t,i,null);a.Onext===s?n.connectRightVertex(t,o,a):n.addRightEdges(t,o,a.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new vl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,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 n_(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,s=t.bmin[1]-r,a=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,a)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(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,se.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 o_(i,se.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,ue(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||!se.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}(),s_=function(){function n(){this.mesh=new jd,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=Le.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,s,a,c=[0,0,0],p=[0,0,0],l=[0,0,0],u=[0,0,0],d=[0,0,0],m=[null,null,null],f=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)i=e.coords[g],p[g]=i,f[g]=e,c[g]=i,m[g]=e;for(e=h.next;e!==h;e=e.next)for(var x=0;x<3;++x)i=e.coords[x],i<p[x]&&(p[x]=i,f[x]=e),i>c[x]&&(c[x]=i,m[x]=e);var v=0;if(c[1]-p[1]>c[0]-p[0]&&(v=1),c[2]-p[2]>c[v]-p[v]&&(v=2),p[v]>=c[v]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[v],o=m[v],l[0]=r.coords[0]-o.coords[0],l[1]=r.coords[1]-o.coords[1],l[2]=r.coords[2]-o.coords[2],e=h.next;e!==h;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],d[0]=l[1]*u[2]-l[2]*u[1],d[1]=l[2]*u[0]-l[0]*u[2],d[2]=l[0]*u[1]-l[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>a&&(a=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.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 s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var c=!0,p=t.next;p!==t;p=p.next)c?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,c=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.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(;se.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;se.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(se.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(se.edgeGoesLeft(o.Lnext)||se.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&&(se.edgeGoesRight(r.Lprev)||se.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,s=0,a=0,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var p=i.Org;p.n===-1&&(p.n=a,a++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>r)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===Ue.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var p=t.vHead.next;p!==t.vHead;p=p.next)if(p.n!==-1){var u=p.n*o;this.vertices[u+0]=p.coords[0],this.vertices[u+1]=p.coords[1],o>2&&(this.vertices[u+2]=p.coords[2]),this.vertexIndices[p.n]=p.idx}for(var d=0,l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var p=i.Org;this.elements[d++]=p.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1;if(e===Ue.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.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 c=0,p=0,l=0;i=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.anEdge;do this.vertices[c++]=r.Org.coords[0],this.vertices[c++]=r.Org.coords[1],e>2&&(this.vertices[c++]=r.Org.coords[2]),this.vertexIndices[p++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[l++]=i,this.elements[l++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new jd),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,s){if(t===void 0&&(t=Le.ODD),e===void 0&&(e=Ue.POLYGONS),s===void 0&&(s=!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_(),i_.computeInterior(this,s);var a=this.mesh;return e===Ue.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ue.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},n}();function io(n){var t=n.windingRule,e=t===void 0?Le.ODD:t,r=n.elementType,o=r===void 0?Ue.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,c=a===void 0?2:a,p=n.normal,l=p===void 0?[0,0,1]:p,u=n.contours,d=u===void 0?[]:u,m=n.strict,f=m===void 0?!0:m,h=n.debug,g=h===void 0?!1:h;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var x=new s_;n.edgeCreateCallback&&(x.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(x.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)x.addContour(c||2,d[v]);return x.tesselate(e,o,s,c,l,f),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var G2=Le.ODD,R2=Le.NONZERO,F2=Le.POSITIVE,V2=Le.NEGATIVE,z2=Le.ABS_GEQ_TWO,U2=Ue.POLYGONS,k2=Ue.CONNECTED_POLYGONS,j2=Ue.BOUNDARY_CONTOURS;var Qo=class extends a_{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Le.ODD;this.elementType=Ue.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Le.ODD,elementType:Ue.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),a,c=!0,p=!0,l,u;for(let f=0,h=i.length/2;f<h;f++){let g=f*2,x=i[g+0],v=i[g+1];if(l!==void 0&&x!==l&&(c=!1),u!==void 0&&v!==u&&(p=!1),l=x,u=v,!c&&!p)break}!c&&!p&&(a=io({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=a?.vertexCount??1,m=a?.elementCount??1;if(this._positionAttribute=new zs(new Float32Array(d*3),3),this._normalAttribute=new zs(new Float32Array(d*3),3),this._uvAttribute=new zs(new Float32Array(d*2),2),this._indexAttribute=new zs(new Uint32Array(m*3),1),a){let f=1/0,h=-1/0,g=1/0,x=-1/0;for(let _=0,b=d;_<b;_++){let D=_*2,S=a.vertices[D+0],y=a.vertices[D+1];S<f&&(f=S),S>h&&(h=S),y<g&&(g=y),y>x&&(x=y)}let v=h-f,A=x-g;for(let _=0,b=d;_<b;_++){let D=_*2,S=a.vertices[D+0],y=a.vertices[D+1],O=(S-f)/v,T=(y-g)/A;this._positionAttribute.setXYZ(_,S,y,0),this._normalAttribute.setXYZ(_,0,0,1),this._uvAttribute.setXY(_,O,T)}for(let _=0,b=m;_<b;_++){let D=_*3,S=a.elements[D+0],y=a.elements[D+1],O=a.elements[D+2];this._indexAttribute.setX(D+0,S),this._indexAttribute.setX(D+1,y),this._indexAttribute.setX(D+2,O)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new Qo(this._shape,this._curveSegments);return e.userData=In(this.userData),e}};import{BufferAttribute as ks,BufferGeometry as l_}from"three";var Us=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*Us.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*Us.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,3*t);s+=3*t;let p=new Float32Array(o,s*i,2*t);a.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),p.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=c,this.uvs=p,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)}},$n=Us;$n.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var bl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Zo=class extends l_{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(S=>{let y=S.extractShapePointsToFlatArray([],i),O=[];for(let T=y.length-1;T>=1;T-=2){let P=y[T-1],C=y[T-0];O.push(P,C)}return O}),p=io({windingRule:Le.ODD,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),l=io({windingRule:Le.ODD,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]});if(!p)throw new Error("error generating geometry");let u=p.elementCount;if(l){p.elementCount+=l.elementCount;for(let S=0;S<l.elements.length;S++){let y=l.elements[S],O=S%2===0?p.vertexCount:0;p.elements.push(y+O)}for(let S=0;S<l.vertexIndices.length;S++){let y=l.vertexIndices[S],O=p.vertexCount;p.vertexIndices.push(y+O)}for(let S=0;S<l.vertices.length;S++){let y=l.vertices[S];p.vertices.push(y)}}let d=1/0,m=-1/0,f=1/0,h=-1/0;for(let S=0,y=p.vertexCount;S<y;S++){let O=S*2,T=p.vertices[O+0],P=p.vertices[O+1];T<d&&(d=T),T>m&&(m=T),P<f&&(f=P),P>h&&(h=P)}this._minX=d,this._minY=f,this._width=m-d,this._height=h-f;let g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new $n(g);let x=[],v=[];for(let S=p.elementCount-1;S>=0;S--){let y=S>=u,O=S*2,T=p.elements[O+0],P=p.elements[O+1],C=T+P,N={start:T,count:P,normals:[],continuous:[],concave:[]},j=T,W=C-1,oe=T+1,ce=this._shape.roundedCurves.length;do{let F=j-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],I=p.vertices[j*2+0],G=p.vertices[j*2+1],Q=p.vertices[oe*2+0],k=p.vertices[oe*2+1],V=I-E,z=G-B,M=Math.sqrt(V*V+z*z);V/=M,z/=M;let q=I-Q,J=G-k,ee=Math.sqrt(q*q+J*J);q/=ee,J/=ee,N.normals[F*2+0]=-J,N.normals[F*2+1]=q,N.concave[F]=V*J-z*q>0;let H=p.vertexIndices[j];if(Array.isArray(H))N.continuous[F]=!1;else{let[Z,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)N.continuous[F]=!0;else{let re=$===1?Z+1:Z-1;re=(re+ce)%ce;let le=$===1?0:1,ne=this._shape.roundedCurves[Z].getTangent($),me=this._shape.roundedCurves[re].getTangent(le);N.continuous[F]=ne.dot(me)>.95}}y&&(N.normals[F*2+0]*=-1,N.normals[F*2+1]*=-1),[W,j,oe]=[j,oe,oe+1],oe>=C&&(oe-=P)}while(oe!==T+1);let ie=[];ie.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,C*2),vertexCount:P,vertexIndices:new Array(P).fill(!0).map((F,E)=>[E,E]),elements:[0,P],elementCount:1,mesh:null},reverseMap:[],insetPoints:p.vertices.slice(T*2,C*2)});for(let F=1;F<=this._bevelSegments;F++){let E=F/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,I=[],G=[],Q=[],k=[],V=0;for(let M=0;M<P;M++){let q=M*2,J=(M-1+P)%P*2,ee=p.vertices[N.start*2+q+0],H=p.vertices[N.start*2+q+1],Z=-N.normals[J+0]*B,$=-N.normals[J+1]*B,re=-N.normals[q+0]*B,le=-N.normals[q+1]*B;if(N.concave[M]||!N.concave[M]&&y){let ne=Math.atan2($,Z),me=Math.atan2(le,re);me>ne&&(me-=Math.PI*2);let Ie=me-ne;if(N.continuous[M]||y){let fe=ne+Ie/2,Re=Math.cos(fe)*B,be=Math.sin(fe)*B;I[2*V+0]=ee+Re*(y?-1:1),I[2*V+1]=H+be*(y?-1:1),k[V]=M,V++}else{let fe=Math.max(1,Math.floor(i/4*Math.abs(Ie)/Math.PI));for(let Re=0;Re<=fe;Re++){let be=ne+Ie*(Re/fe),lt=Math.cos(be)*B,_t=Math.sin(be)*B;I[2*V+0]=ee+lt,I[2*V+1]=H+_t,k[V]=M,V++}}}else I[2*V+0]=ee+Z,I[2*V+1]=H+$,k[V]=M,G[M]=V,V++,I[2*V+0]=ee,I[2*V+1]=H,k[V]=M,V++,I[2*V+0]=ee+re,I[2*V+1]=H+le,k[V]=M,Q[M]=V,V++}let z=io({windingRule:Le.POSITIVE,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[I],edgeCreateCallback:M=>{let J=M.Org.idx,ee=k[J],H=k[(J+1)%k.length];M.idx=[ee,H],M.Sym.idx=[H,ee]},vertexIdCallback:M=>{let q=M.Lprev.idx;return[q?q[1]:0,M.idx[0]]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${F}'th loop`);if(!z.vertexCount)break;for(let M=0;M<z.vertexIndices.length;M++){let[q,J]=z.vertexIndices[M];if(q===J)continue;let ee=J;J<q&&(ee+=P);for(let H=q;H<ee;H++){let Z=H%P,$=(H+1)%P;if(!N.continuous[Z]||!N.continuous[$]){z.vertexIndices[M]=[q,Z],z.vertexIndices.splice(M+1,0,[$,J]),z.vertices.splice((M+1)*2,0,z.vertices[M*2],z.vertices[M*2+1]);break}}}ie.push({bevelI:F,angle:E,size:B,boundary:z,reverseMap:k,insetPoints:I})}let K=(F,E,B)=>{let I=0,G=F.boundary.vertexIndices.length;for(;I<G&&B(F.boundary.vertexIndices[E]);)E=(E+1)%G,I++;return I},U=x.length;for(let F=1;F<ie.length;F++){let E=ie[F-1],B=ie[F],I=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!I||!G)break;let Q=N.concave.length,k=0,V=bl(k,P);for(;!E.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)k++,V=bl(k,P);let z=E.boundary.vertexIndices.findIndex(V),M=B.boundary.vertexIndices.findIndex(V);do z=(z+1)%I;while(V(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(V(B.boundary.vertexIndices[M]));k=(k+1)%P;let q=k,J=this.buildBevelVert(N,E,(z-1+I)%I),ee=this.buildBevelVert(N,B,(M-1+G)%G),H=J,Z=ee,$,re,le=!1;do{V=bl(k,P);let ne=K(E,z,V),me=K(B,M,V),Ie=le;if(le=!1,ne&&!me){for(let fe=0;fe<ne;fe++)$=this.buildBevelVert(N,E,(z+fe)%I,fe/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$;le=!0}else if(!ne&&me)for(let fe=0;fe<me;fe++)re=this.buildBevelVert(N,B,(M+fe)%G,fe/(me-1)),x.push(Z.topN,H.topP,re.topP),x.push(H.bottomP,Z.bottomN,re.bottomP),Z=re;else if(ne&&me)if($=this.buildBevelVert(N,E,z,0),re=this.buildBevelVert(N,B,M,0),Ie?(x.push(H.topN,re.topP,Z.topN),x.push(H.topN,$.topP,re.topP),x.push(re.bottomP,H.bottomN,Z.bottomN),x.push(re.bottomP,$.bottomP,H.bottomN)):(x.push(Z.topN,H.topN,$.topP),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP)),H=$,Z=re,ne===me)for(let fe=1;fe<ne;fe++)$=this.buildBevelVert(N,E,(z+fe)%I,fe/(ne-1)),re=this.buildBevelVert(N,B,(M+fe)%G,fe/(me-1)),x.push(H.topN,$.topP,Z.topN),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP),H=$,Z=re;else if(ne>me){let fe=ne/me,Re=0;for(let be=1;be<ne;be++)$=this.buildBevelVert(N,E,(z+be)%I,be/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$,be>(Re+1)*fe&&(Re++,re=this.buildBevelVert(N,B,(M+Re)%G,Re/(me-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re)}else{let fe=me/ne,Re=0;for(let be=1;be<me;be++)re=this.buildBevelVert(N,B,(M+be)%G,be/(me-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re,be>(Re+1)*fe&&(Re++,$=this.buildBevelVert(N,E,(z+Re)%I,Re/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$)}z=(z+ne)%I,M=(M+me)%G,k=(k+1)%Q}while(k!==q)}{let F=ie[0];for(let E=0,B=F.boundary.vertexCount;E<B;E++){let I=this.buildBevelVert(N,F,E),G=this.buildBevelVert(N,F,(E+1)%B);x.push(G.topP,I.topN,I.bottomN),x.push(G.topP,I.bottomN,G.bottomP)}}if(y){let F=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],I=x[E-1],G=x[E-0];F.push(G,I,B)}x.splice(U,x.length-U,...F)}if(y){let F=[];for(let E=ie[ie.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=ie[ie.length-1].boundary.vertices[E-1],I=ie[ie.length-1].boundary.vertices[E-0];F.push(B,I)}v.push(F)}if(!y){let F=ie[ie.length-1],E=io({windingRule:ie.length>1?Le.POSITIVE:Le.ODD,elementType:Ue.POLYGONS,vertexSize:2,strict:!0,contours:[F.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");c.length===0&&Object.assign(this,{capStartIndex:x.length});for(let B=0;B<E.elementCount*3;B+=3){let I=this.buildSurfaceVert(E,E.elements[B+0]),G=this.buildSurfaceVert(E,E.elements[B+1]),Q=this.buildSurfaceVert(E,E.elements[B+2]);x.push(I.top,G.top,Q.top),x.push(Q.bottom,G.bottom,I.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new ks(Uint32Array.from(x),1),_=new ks(this._buffer.positions,3),b=new ks(this._buffer.normals,3),D=new ks(this._buffer.uvs,2);_.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",_),this.setAttribute("normal",b),this.setAttribute("uv",D),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(i-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),l=p*3,u=p*2,d={top:p+0,bottom:p+1};return this._buffer.positions[l+0]=i,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[u+0]=a,this._buffer.uvs[u+1]=c,this._buffer.positions[l+3]=i,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[u+2]=a,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,c]=r.boundary.vertexIndices[o],p,l,u,d;a!==c?(l=a,p=c,d=!1,u=e.continuous[l]&&e.continuous[p]):(p=a,l=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let m=Math.cos(r.angle),f=Math.sin(r.angle),h=o*2,g=p*2,x=l*2,v=r.boundary.vertices[h+0],A=r.boundary.vertices[h+1],_=(1-f)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,S=e.normals[g+0],y=e.normals[g+1],O=e.normals[x+0],T=e.normals[x+1];if(d){let W=O-S,oe=T-y;S=S+W*(1-i),y=y+oe*(1-i);let ce=Math.sqrt(S*S+y*y);S/=ce,y/=ce}let P=this._buffer.get(u?2:4),C=P*3,N=P*2,j={i:o,fi:p,topP:P+0,topN:P+0,bottomP:P+1,bottomN:P+1};return this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=S*m,this._buffer.normals[C+1]=y*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=S*m,this._buffer.normals[C+4]=y*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b,u||(P+=2,C+=6,N+=4,j.topP=P+0,j.bottomP=P+1,this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=O*m,this._buffer.normals[C+1]=T*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=O*m,this._buffer.normals[C+4]=T*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b),this.vertexCache[s]=j,j}clone(){let e=new Zo(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=In(this.userData),e}};var st=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},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof _e?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new _e(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new _e(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:a}),shape:c}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new Qo(n.shape,o):s=new Zo(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Xd,Vector2 as Yd}from"three";var Kd=Math.PI*2,Qd=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{shape:n.shape&&n.shape instanceof _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,p=n.shape,l=t*.5,u=e*.5,d=c_(p,l,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let m=st.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(m,{userData:{...n,type:"EllipseGeometry"}})}};function c_(n,t,e,r,o,i){if(r>=Kd)return o>30||o%4===0?(p_(n,t,e,i),Math.round(o/4)):$d(n,r,o,t,e,i);let s={x:0,y:e},a=r+Math.PI*.5,c={x:Math.cos(a)*t,y:Math.sin(a)*e},p=kd({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%p.length===0?u_(n,s.x,s.y,p,o,t,e,i):$d(n,r,o,t,e,i)}function u_(n,t,e,r,o,i,s,a){let c=Math.round(o/r.length);n.addPoint(Jo(t,e));for(let p=0,l=r.length;p<l;p++){let u=r[p],d=n.points[p],m=Jo(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),m.controls[0].position.set(u.x2,u.y2),n.addPoint(m)}return a>0?Zd(n,i,s,a):n.addPoint(Jo(0,0)),c}function $d(n,t,e,r,o,i){let s=-t/e;for(let a=0;a<=e;a++){let c=s*a,p=Math.sin(c)*r,l=Math.cos(c)*o;n.addPoint(Jo(p,l))}return t<Kd?i>0?Zd(n,r,o,i):n.addPoint(Jo(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Jd(n,r,o,i)),1}function p_(n,t,e,r=0,o=0,i=0){let s=.5522847498,a=t*s,c=e*s;n.addPoint(js(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(js(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(js(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(js(o,i-e,o+a,i-e,o-a,i-e)),r>0&&Jd(n,t,e,r)}function Jo(n,t){return new Dt(Xd.generateUUID(),new Yd(n,t))}function js(n,t,e,r,o,i){let s=Jo(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Zd(n,t,e,r){em(n,t,e,r).forEach(i=>n.addPoint(i))}function Jd(n,t,e,r){let o=em(n,t,e,r),i=new _e;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function em(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new Yd(o/t,i/e),a=n.points.map(c=>{let p=c.clone();return p.uuid=Xd.generateUUID(),p}).reverse();return a.forEach(c=>{c.position.multiply(s);let p=c.controls[0].position.clone().multiply(s),l=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(l),c.controls[1].position.copy(p)}),a}import{BufferGeometry as d_,Float32BufferAttribute as _l,Vector3 as tm}from"three";var rm=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),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,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:s,pathRadius:a,pathType:c,pathSegments:p,cornerRadius:l,cornerSegments:u}=n.parameters,d=new Xn(!1,t,e,r,o,i,s,a,c,p,l,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Xn=class extends d_{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,a=1,c=1,p=1,l=1,u=1,d=1){super();let m=t&&s===1;m&&(d=0),u>100&&(u=100);let f=()=>new tm,h=new tm,g=f(),x=f(),v=f(),A,_,b,D,S,y,O,T,P=f(),C=f(),N=f(),j=f(),W=f(),oe=f(),ce=f(),ie=f(),K=r-2*c+.001,U=K/s,F=Math.ceil(a*s),E=F+1,B=K/F,I=-K/2,G=l+1,Q=2*Math.PI/l,k=Math.PI/2/d,V=.01,z=Math.min((1-u/100)*c,c-V),M=c-z,q=0,J=2,ee=d*J+J,H=G*ee/J,Z=H+G*E,$=G*(E+ee),[re,le,ne]=[3,3,2].map(Be=>Array($*Be).fill(0)),me=[],Ie=i-c;function fe(Be,gt){let kt=Math.PI/2;y=gt*B,T=2*Math.PI*(y%U)/U+kt,y+=I,O=Math.sin(T)*Ie,S=Math.cos(T)*Ie,t?Be.set(S,O,y):Be.set(S,y,O)}fe(h,-1e-10),fe(g,0),P.copy(h),fe(h,1);let Re=h.distanceTo(g),be=M+z,lt=Re*F+2*be,_t=z,go=lt-be;for(let Be=0;Be<=F;Be++){fe(x,Be),ie.subVectors(x,P).normalize(),P.copy(x),oe.copy(x).setComponent(+t+1,0).normalize(),ce.crossVectors(ie,oe).normalize();let gt=Be===0,kt=Be===F,nh=gt?3*Math.PI/2:k,ih=gt?_t:go,sh=gt?G:Z,ah=gt?0:$-G,lh=ie.clone().multiplyScalar(gt?-M:M).add(x),ch=ie.clone().multiplyScalar(gt?-1:1).normalize();for(let mr=0;mr<G;mr++){let vc=mr*Q;if(C.addVectors(h.copy(oe).multiplyScalar(c*Math.cos(vc)),g.copy(ce).multiplyScalar(c*Math.sin(vc))),N.copy(C).normalize(),gt||kt){m||(q=ah+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=lh.getComponent(ct),le[q*3+ct]=ch.getComponent(ct)}),ne[q*2]=+kt,ne[q*2+1]=mr/l),g.copy(N).multiplyScalar(z),v.addVectors(x,g);for(let ct=0;ct<d;ct++){let wa=ct*k+nh;j.addVectors(h.copy(ie).multiplyScalar(M*Math.sin(wa)),g.copy(N).multiplyScalar(M*Math.cos(wa))),W.copy(j).normalize(),g.addVectors(v,j),j.normalize(),q=sh+ct*G+mr,[0,1,2].forEach(Oi=>{re[q*3+Oi]=g.getComponent(Oi),le[q*3+Oi]=W.getComponent(Oi)});let uh=+gt+Math.sin(wa);ne[q*2]=(ih+M*uh)/lt,ne[q*2+1]=mr/l}}g.addVectors(x,C),q=H+Be*G+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=g.getComponent(ct),le[q*3+ct]=N.getComponent(ct)}),ne[q*2]=(be+Be*Re)/lt,ne[q*2+1]=mr/l}}let ht=E+2*d+J,yo=1,[Li,Pi]=m?[yo,yo+E-1]:[0,ht-1];for(let Be=Li;Be<=Pi-1;Be++){let gt=m&&Be===Pi-1;for(let kt=0;kt<G-1;kt++)A=Be*G+kt,_=A+1,b=(gt?kt:A)+G,D=(gt?kt+1:_)+G,Be===0?me.push(_,D,b):Be===ht-2?me.push(A,_,b):me.push(A,_,b,_,D,b)}this.setIndex(me),this.setAttribute("position",new _l(re,3)),this.setAttribute("normal",new _l(le,3)),this.setAttribute("uv",new _l(ne,2))}};import{IcosahedronBufferGeometry as m_}from"three";var om=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:s}=n.parameters,a=o===0&&i!==0?new Yn(t*.5,i,s):new m_(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},Yn=class extends Ur{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],s=[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],a="IcosahedronGeometry";super(i,s,a,t,e,r),this.type=a}static fromJSON(t){return new Yn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as f_,Shape as h_}from"three";var nm=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 h_;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 f_(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as um,BufferGeometryLoader as A_,Vector3 as C_,BoxBufferGeometry as pm}from"three";import{BufferGeometry as __,Vector2 as Tl,Vector3 as cm}from"three";import{Box3 as g_,BufferAttribute as Kn,BufferGeometry as im,Color as am,EventDispatcher as y_,Float32BufferAttribute as en,Matrix3 as sm,Matrix4 as lm,MathUtils as x_,Object3D as v_,Sphere as b_,Vector2 as Ct,Vector3 as rt}from"three";var Kt=new lm,Sl=new v_,Hs=new rt,jr=class extends y_{constructor(){super(),this.uuid=x_.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 sm().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 s=0,a=i.vertexNormals.length;s<a;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return Kt.makeRotationX(t),this.applyMatrix4(Kt),this}rotateY(t){return Kt.makeRotationY(t),this.applyMatrix4(Kt),this}rotateZ(t){return Kt.makeRotationZ(t),this.applyMatrix4(Kt),this}translate(t,e,r){return Kt.makeTranslation(t,e,r),this.applyMatrix4(Kt),this}scale(t,e,r){return Kt.makeScale(t,e,r),this.applyMatrix4(Kt),this}lookAt(t){return Sl.lookAt(t),Sl.updateMatrix(),this.applyMatrix4(Sl.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,s=o.normal,a=o.color,c=o.uv,p=o.uv2;p!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new rt().fromBufferAttribute(i,d)),a!==void 0&&e.colors.push(new am().fromBufferAttribute(a,d));function l(d,m,f,h){let g=a===void 0?[]:[e.colors[d].clone(),e.colors[m].clone(),e.colors[f].clone()],x=s===void 0?[]:[new rt().fromBufferAttribute(s,d),new rt().fromBufferAttribute(s,m),new rt().fromBufferAttribute(s,f)],v=new tn(d,m,f,x,g,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Ct().fromBufferAttribute(c,d),new Ct().fromBufferAttribute(c,m),new Ct().fromBufferAttribute(c,f)]),p!==void 0&&e.faceVertexUvs[1].push([new Ct().fromBufferAttribute(p,d),new Ct().fromBufferAttribute(p,m),new Ct().fromBufferAttribute(p,f)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let m=u[d],f=m.start,h=m.count;for(let g=f,x=f+h;g<x;g+=3)r!==void 0?l(r.getX(g),r.getX(g+1),r.getX(g+2),m.materialIndex):l(g,g+1,g+2,m.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)l(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)l(d,d+1,d+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(Hs).negate(),this.translate(Hs.x,Hs.y,Hs.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new lm;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 rt,e=new rt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=this.vertices[i.a],a=this.vertices[i.b],c=this.vertices[i.c];t.subVectors(c,a),e.subVectors(s,a),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 rt;if(t){let r=new rt,o=new rt;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=this.vertices[a.a],p=this.vertices[a.b],l=this.vertices[a.c];r.subVectors(l,p),o.subVectors(c,p),r.cross(o),e[a.a].add(r),e[a.b].add(r),e[a.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],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[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,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new jr;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,s=this.morphNormals[e].vertexNormals;for(let a=0,c=this.faces.length;a<c;a++){let p=new rt,l={a:new rt,b:new rt,c:new rt};i.push(p),s.push(l)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=o.faceNormals[i],p=o.vertexNormals[i];c.copy(a.normal),p.a.copy(a.vertexNormals[0]),p.b.copy(a.vertexNormals[1]),p.c.copy(a.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 g_),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new b_),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,s=this.vertices,a=t.vertices,c=this.faces,p=t.faces,l=this.colors,u=t.colors;e!==void 0&&(o=new sm().getNormalMatrix(e));for(let d=0,m=a.length;d<m;d++){let h=a[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,m=u.length;d<m;d++)l.push(u[d].clone());for(let d=0,m=p.length;d<m;d++){let f=p[d],h,g,x=f.vertexNormals,v=f.vertexColors,A=new tn(f.a+i,f.b+i,f.c+i);A.normal.copy(f.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let _=0,b=x.length;_<b;_++)h=x[_].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(f.color);for(let _=0,b=v.length;_<b;_++)g=v[_],A.vertexColors.push(g.clone());A.materialIndex=f.materialIndex+r,c.push(A)}for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;A++)v.push(x[A].clone());this.faceVertexUvs[d].push(v)}}}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 c=0,p=this.vertices.length;c<p;c++){let l=this.vertices[c],u=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.z*i);e[u]===void 0?(e[u]=c,r.push(this.vertices[c]),o[c]=r.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,p=this.faces.length;c<p;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let u=[l.a,l.b,l.c];for(let d=0;d<3;d++)if(u[d]===u[(d+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let p=s[c];this.faces.splice(p,1);for(let l=0,u=this.faceVertexUvs.length;l<u;l++)this.faceVertexUvs[l].splice(p,1)}let a=this.vertices.length-r.length;return this.vertices=r,a}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let c=0;c<e;c++)t[c]._id=c;function r(c,p){return c.materialIndex-p.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),a&&a.push(i[p])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}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 f=this.parameters;for(let h in f)f[h]!==void 0&&(t[h]=f[h]);return t}let e=[];for(let f=0;f<this.vertices.length;f++){let h=this.vertices[f];e.push(h.x,h.y,h.z)}let r=[],o=[],i={},s=[],a={},c=[],p={};for(let f=0;f<this.faces.length;f++){let h=this.faces[f],g=!0,x=!1,v=this.faceVertexUvs[0][f]!==void 0,A=h.normal.length()>0,_=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,S=0;if(S=l(S,0,0),S=l(S,1,g),S=l(S,2,x),S=l(S,3,v),S=l(S,4,A),S=l(S,5,_),S=l(S,6,b),S=l(S,7,D),r.push(S),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let y=this.faceVertexUvs[0][f];r.push(m(y[0]),m(y[1]),m(y[2]))}if(A&&r.push(u(h.normal)),_){let y=h.vertexNormals;r.push(u(y[0]),u(y[1]),u(y[2]))}if(b&&r.push(d(h.color)),D){let y=h.vertexColors;r.push(d(y[0]),d(y[1]),d(y[2]))}}function l(f,h,g){return g?f|1<<h:f&~(1<<h)}function u(f){let h=f.x.toString()+f.y.toString()+f.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(f.x,f.y,f.z)),i[h]}function d(f){let h=f.r.toString()+f.g.toString()+f.b.toString();return a[h]!==void 0||(a[h]=s.length,s.push(f.getHex())),a[h]}function m(f){let h=f.x.toString()+f.y.toString();return p[h]!==void 0||(p[h]=c.length/2,c.push(f.x,f.y)),p[h]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),c.length>0&&(t.data.uvs=[c]),t.data.faces=r,t}clone(){return new jr().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 d=0,m=e.length;d<m;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,m=r.length;d<m;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,m=o.length;d<m;d++)this.faces.push(o[d].clone());for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let i=t.morphTargets;for(let d=0,m=i.length;d<m;d++){let f={};if(f.name=i[d].name,i[d].vertices!==void 0){f.vertices=[];for(let h=0,g=i[d].vertices.length;h<g;h++)f.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){f.normals=[];for(let h=0,g=i[d].normals.length;h<g;h++)f.normals.push(i[d].normals[h].clone())}this.morphTargets.push(f)}let s=t.morphNormals;for(let d=0,m=s.length;d<m;d++){let f={};if(s[d].vertexNormals!==void 0){f.vertexNormals=[];for(let h=0,g=s[d].vertexNormals.length;h<g;h++){let x=s[d].vertexNormals[h],v={};v.a=x.a.clone(),v.b=x.b.clone(),v.c=x.c.clone(),f.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){f.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)f.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(f)}let a=t.skinWeights;for(let d=0,m=a.length;d<m;d++)this.skinWeights.push(a[d].clone());let c=t.skinIndices;for(let d=0,m=c.length;d<m;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,m=p.length;d<m;d++)this.lineDistances.push(p[d]);let l=t.boundingBox;l!==null&&(this.boundingBox=l.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 wl().fromGeometry(this),e=new im,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new Kn(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new Kn(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new Kn(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new Kn(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new Kn(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let p=s[a],l=new en(p.data.length*3,3);l.name=p.name,i.push(l.copyVector3sArray(p.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new en(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new en(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(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 im,r=t.geometry;if(t.isPoints||t.isLine){let o=new en(r.vertices.length*3,3),i=new en(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",i.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new en(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(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}};jr.prototype.isGeometry=!0;var wl=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,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.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,s=o[1]&&o[1].length>0,a=t.morphTargets,c=a.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:a[x].name,data:[]};this.morphTargets.position=p}let l=t.morphNormals,u=l.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:l[x].name,data:[]};this.morphTargets.normal=d}let m=t.skinIndices,f=t.skinWeights,h=m.length===r.length,g=f.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let x=0;x<e.length;x++){let v=e[x];this.vertices.push(r[v.a],r[v.b],r[v.c]);let A=v.vertexNormals;if(A.length===3)this.normals.push(A[0],A[1],A[2]);else{let b=v.normal;this.normals.push(b,b,b)}let _=v.vertexColors;if(_.length===3)this.colors.push(_[0],_[1],_[2]);else{let b=v.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][x];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",x),this.uvs.push(new Ct,new Ct,new Ct))}if(s===!0){let b=o[1][x];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",x),this.uvs2.push(new Ct,new Ct,new Ct))}for(let b=0;b<c;b++){let D=a[b].vertices;p[b].data.push(D[v.a],D[v.b],D[v.c])}for(let b=0;b<u;b++){let D=l[b].vertexNormals[x];d[b].data.push(D.a,D.b,D.c)}h&&this.skinIndices.push(m[v.a],m[v.b],m[v.c]),g&&this.skinWeights.push(f[v.a],f[v.b],f[v.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}},tn=class{constructor(t,e,r,o,i,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new am,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}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}};var S_=["a","b","c"];function w_(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Al(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Cl(n,t,e,r,o,i){let s=Math.min(n,t),a=Math.max(n,t),c=s+"_"+a,p;if(r.has(c))p=r.get(c);else{let l=e[s],u=e[a];p={a:l,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),i[n].edges.push(p),i[t].edges.push(p)}function T_(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],Cl(s.a,s.b,n,r,s,e),Cl(s.b,s.c,n,r,s,e),Cl(s.c,s.a,n,r,s,e)}function Ws(n,t,e,r,o){n.push(new tn(t,e,r,void 0,void 0,o))}function rn(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function qs(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var $s=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof __?t=new jr().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 cm,r,o,i,s,a,c=t.vertices,p=t.faces,l=t.faceVertexUvs[0],u=l!==void 0&&l.length>0,d=[],m=new Map;T_(c,p,d,m);let f=[],h,g,x,v,A,_,b;for(let V of Array.from(m.keys())){for(g=m.get(V),x=new cm,A=3/8,_=1/8,b=g.faces.length,b!=2&&(A=.5,_=0,b!=1),x.addVectors(g.a,g.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(v=g.faces[s],a=0;a<3&&(h=c[w_(v,S_[a])],!(h!==g.a&&h!==g.b));a++);h&&e.add(h)}e.multiplyScalar(_),x.add(e),g.newEdge=f.length,f.push(x)}let D,S,y,O,T,P,C,N=[];for(o=0,i=c.length;o<i;o++){for(P=c[o],T=d[o].edges,r=T.length,r==3?D=3/16:r>3&&(D=3/(8*r)),S=1-r*Number(D),y=D,r<=2&&(r==2?(S=3/4,y=1/8):r==1||r==0),C=P.clone().multiplyScalar(S),e.set(0,0,0),s=0;s<r;s++)O=T[s],h=O.a!==P?O.a:O.b,e.add(h);e.multiplyScalar(Number(y)),C.add(e),N.push(C)}let j=N.concat(f),W=N.length,oe,ce,ie,K=[],U=[],F,E,B,I,G=new Tl,Q=new Tl,k=new Tl;for(o=0,i=p.length;o<i;o++)v=p[o],oe=Number(Al(v.a,v.b,m).newEdge)+W,ce=Number(Al(v.b,v.c,m).newEdge)+W,ie=Number(Al(v.c,v.a,m).newEdge)+W,Ws(K,oe,ce,ie,v.materialIndex),Ws(K,v.a,oe,ie,v.materialIndex),Ws(K,v.b,ce,oe,v.materialIndex),Ws(K,v.c,ie,ce,v.materialIndex),u&&(F=l[o],E=F[0],B=F[1],I=F[2],G.set(rn(E.x,B.x),rn(E.y,B.y)),Q.set(rn(B.x,I.x),rn(B.y,I.y)),k.set(rn(E.x,I.x),rn(E.y,I.y)),qs(U,G,Q,k),qs(U,E,G,k),qs(U,B,Q,G),qs(U,I,k,Q));t.vertices=j,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var ke=new C_,dm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new um().copy(new pm(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ke),r={width:ke.x,height:ke.y,depth:ke.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 um().copy(new pm(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ke)):ke.set(s.width,s.height,s.depth),(t!==ke.x||e!==ke.y||r!==ke.z)&&i.scale(ke.x===0?1:t/ke.x,ke.y===0?1:e/ke.y,ke.z===0?1:r/ke.z);let a=i.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new $s(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new A_(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ke);let s=100/ke.x;Object.assign(i.parameters,{width:100,height:ke.y*s,depth:ke.z*s}),t(this.build(i))})}};var mm=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 _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}=n.parameters,c=n.shape,p=t*.5,l=e*.5,u=0,d=0,m=2*Math.PI/r;for(let h=0;h<r;h++){let g=m*h,x=u+Math.sin(g)*p,v=d+Math.cos(g)*l;c.addPoint(c.createPoint(x,v))}c.isClosed=!0;for(let h=0,g=c.points.length;h<g;h++)c.points[h].roundness=o;c.roundness=o,c.update();let f=st.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as N_,Float32BufferAttribute as Nl,Vector2 as Qt,Vector3 as Xe}from"three";var fm=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:s,cornerRadius:a,cornerSegments:c}=n.parameters,p=new Pl(t*.5,e,o,i,s,a,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function Qn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Ll(n,t,e,r,o,i){let s=t.clone().sub(n),a=e.clone().sub(n),c=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let p=s.add(a).normalize();i.copy(n).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(p)),i.addScaledVector(a,r/Math.sin(p))}}function L_(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Pl=class extends N_{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let c=[],p=[],l=[],u=[],d=0,m=e/2,f=Math.PI/r,h=t*Math.cos(Math.PI/r),g=2*Math.PI/r,x=(r-2)*Math.PI/r,v=Math.PI-x,A=new Xe(0,-m,0),_=new Xe(0,m,0),b=new Qt(t,-m),D=new Qt(h,-m),S=new Qt(0,_.y).sub(D),y=new Qt(0,_.y).sub(b),O=new Qt(S.y,-S.x).normalize(),T=new Qt(y.y,-y.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-S.angle())/2)-1e-8;s=Math.min(s,C);let N;{let U=new Xe(O.x,O.y,0),F=new Xe(Math.cos(g)*U.x,U.y,Math.sin(g)*U.x);N=U.angleTo(F)}let j=s/Math.tan((Math.PI-S.angle())/2),W=s/Math.tan((Math.PI-N)/2),oe=new Xe;if(!i){p.push(A.x,A.y,A.z),l.push(0,-1,0),u.push(0,0);let U=d++,F=[],E=b.clone(),B=j/Math.cos(Math.PI/r);E.x-=B;for(let I=0;I<r;I++){let G=I/r*Math.PI*2+f,Q=new Qt(Math.sin(G),Math.cos(G));Qn(E,Q,oe),p.push(oe.x,oe.y,oe.z),l.push(0,-1,0),u.push(0,0),F.push(d++)}for(let I=0;I<F.length;I++)c.push(F[I],U,F[(I+1)%F.length])}let ce=[];{let U=new Xe,F=new Xe,E=new Xe,B=new Xe,I=new Xe,G=new Xe;for(let Q=0;Q<r;Q++){let k=Q/r*Math.PI*2+f,V=(Q+.5)/r*Math.PI*2+f,z=(Q+1)/r*Math.PI*2+f,M=new Qt(Math.sin(k),Math.cos(k)),q=new Qt(Math.sin(V),Math.cos(V)),J=new Qt(Math.sin(z),Math.cos(z));Qn(b,M,F),Qn(b,J,E),Qn(O,q,U),Ll(_,F,E,W,W,B),p.push(B.x,B.y,B.z),Ll(F,_,E,W,j,I),p.push(I.x,I.y,I.z),Ll(E,F,_,j,W,G),p.push(G.x,G.y,G.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),u.push(0,0),u.push(0,0),u.push(0,0);let ee=d++,H=d++,Z=d++;if(c.push(ee,H,Z),s>0){{let le=F.clone().add(E).multiplyScalar(.5),ne=_.clone().sub(le).normalize(),Ie=A.clone().sub(le).normalize().add(ne).normalize().multiplyScalar(-1),fe=G.clone().sub(I);ie(le,fe,Ie,S.angle())}let $,re;{let le=new Xe;Qn(T,J,le);let ne=G.clone().add(B).multiplyScalar(.5);ne=L_(ne,E,_);let me=G.clone().sub(B);[$,re]=ie(ne,me,le,N,B.y)}{let le=$,ne=le.clone().setY(0).normalize(),me=new Xe(0,-1,0),Ie=ne.clone().cross(me);K(le,ne,me,Ie)}ce.concat(re);{let le=S.angle(),ne=Math.PI-le,me=_.clone();me.y-=s/Math.sin(le-Math.PI/2);let Ie=new Xe,fe=[];for(let be=0;be<a;be++){let lt=[],_t=Math.PI/2-ne*be/a,go=Math.cos(_t),ht=Math.sin(_t),yo=V;for(let Li=0;Li<=be;Li++){let Pi=Math.cos(yo),Be=Math.sin(yo);U.x=go*Be,U.y=ht,U.z=go*Pi,Ie.copy(me).addScaledVector(U,s),p.push(Ie.x,Ie.y,Ie.z),l.push(U.x,U.y,U.z),u.push(0,0),lt.push(d++),yo+=Math.PI*2/be/r}fe.push(lt)}re.reverse(),fe.push(re);let Re=fe.length-1;for(let be=0;be<Re;be++){let lt=fe[be],_t=fe[be+1],go=lt.length-1;c.push(_t[1],lt[0],_t[0]);for(let ht=1;ht<=go;ht++)c.push(lt[ht],lt[ht-1],_t[ht]),c.push(_t[ht+1],lt[ht],_t[ht])}}}}}this.setIndex(c),this.setAttribute("position",new Nl(p,3)),this.setAttribute("normal",new Nl(l,3)),this.setAttribute("uv",new Nl(u,2));function ie(U,F,E,B,I){let G=-B/2,Q=(Math.PI-B)/2,k=F.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let V=new Xe,z=new Xe,M=1,q=d,J=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*B;z.set(0,0,0),z.addScaledVector(k,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Z=0;Z<=M;Z++){let $=Z/M-.5;if(V.copy(U),V.addScaledVector(F,$),V.addScaledVector(z,s),I!=null){let re=Math.max(0,V.y-I);V.addScaledVector(F,-re/F.y)}p.push(V.x,V.y,V.z),l.push(z.x,z.y,z.z),u.push(0,0),Z===0&&J.push(d),d++}}for(let ee=0;ee<a;ee++)for(let H=0;H<M;H++){let Z=q+H+(M+1)*ee,$=Z+(M+1),re=$+1,le=Z+1;c.push(Z,$,le),c.push($,re,le)}return[U.clone().addScaledVector(F,.5),J]}function K(U,F,E,B){let I=Math.PI/2,G=y.angle()-I,Q=[],k=new Xe,V=new Xe;for(let M=0;M<=a;M++){let q=[],J=M/a;for(let ee=0;ee<=M;ee++){let Z=((M?ee/M:0)-.5)*v,$=Math.cos(Z),re=Math.sin(Z),le=Math.atan(Math.tan(G)*$),ne=(I+le)*J,me=Math.cos(ne),Ie=Math.sin(ne);k.set(0,0,0),k.addScaledVector(F,Ie*$),k.addScaledVector(E,me),k.addScaledVector(B,Ie*re),V.copy(U).addScaledVector(k,s),p.push(V.x,V.y,V.z),l.push(k.x,k.y,k.z),u.push(0,0),q.push(d++)}Q.push(q)}let z=Q.length-1;for(let M=0;M<z;M++){let q=Q[M],J=Q[M+1],ee=q.length-1;c.push(q[0],J[1],J[0]);for(let H=1;H<=ee;H++)c.push(q[H-1],q[H],J[H]),c.push(q[H],J[H+1],J[H])}}}};var hm=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 _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,p={x:e*.5,y:r*.5},l={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(_,b,D){return b>e&&D>r?Math.min(_*e/b,_*r/D):b>e?_*e/b:D>r?_*r/D:_}let m=[];m[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),m[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),m[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),m[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=l.x,h=u.x,g=u.y,x=l.y;t.addPoint(t.createPoint(f,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(f,x)),t.isClosed=!0;let v=!0;for(let _=0,b=t.points.length;_<b;_++)t.points[_].roundness=m[_],_>0&&m[_]!==m[_-1]&&(v=!1);v&&(t.roundness=m[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=st.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as P_}from"three";var gm=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:Math.PI},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=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:c,thetaLength:p}=n.parameters,l=new P_(.5*t,o,i,s,a,c,p);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as O_}from"three";var ym=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 O_(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as I_,Float32BufferAttribute as Ol,Vector3 as M_}from"three";var xm=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:s}=n.parameters,a=new Il(t,e,r,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},Il=class extends I_{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],p=[],l=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let u=[],d=Math.PI/2,m=(V=0,z=0,M=0)=>new M_(V,z,M),f=m(),h=m(),[g,x,v]=[e/2,t/2,r/2],A=-x,_=+x,[b,D,S]=[m(A,-g,+v),m(A,-g,-v),m(A,+g,-v)],y=(V,z=!1)=>Math.sin(V-Math.PI/(1+ +z)),O=(V,z=!1)=>Math.cos(V-Math.PI/(1+ +z));S.y=Math.sin(o)*e-g;let T=Math.cos(o)*e-v,P=b.z-l;o<=d?(S.z=Math.min(T,P),S.z==P&&(S.y-=(T-P)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-l),f.subVectors(b,D),h.subVectors(S,D);let C=Math.min(f.length(),h.length())*i/100,N=C*Math.tan(o/2),j=C/Math.cos(o/2),W=f.clone().normalize().add(h.normalize()).setLength(j).add(D);f.set(0,y(o,!0),O(o,!0)),u.push([S,f.clone()]);let oe=(Math.PI-o)/s;for(let V=0;V<=s;V++){let z=d+o+V*oe;f.set(0,Math.sin(z)*N,Math.cos(z)*N),f.add(W),h.set(0,y(z),O(z)),u.push([f.clone(),h.clone()])}u.push([b,m(0,1,0)]);let ce=Math.sin(oe/2)*N*2,ie=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[ie-1][0].distanceTo(u[ie][0]),F=K+ce*s+U;u[0].push(1);for(let V=0;V<=s;V++)u[V+1].push(1-(K+V*ce)/F);u[ie].push(0);let[E,B,I]=u[0],G,Q,k;for(let V=1;V<u.length;V++)[G,Q,k]=u[V],a.push(A,E.y,E.z,A,G.y,G.z,_,E.y,E.z,_,E.y,E.z,A,G.y,G.z,_,G.y,G.z),c.push(0,B.y,B.z,0,Q.y,Q.z,0,B.y,B.z,0,B.y,B.z,0,Q.y,Q.z,0,Q.y,Q.z),p.push(0,I,0,k,1,I,1,I,0,k,1,k),[E,B,I]=[G,Q,k];this.setAttribute("position",new Ol(a,3)),this.setAttribute("normal",new Ol(c,3)),this.setAttribute("uv",new Ol(p,2))}};var vm=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 _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}=n.parameters,l=n.shape,u=t*.5,d=e*.5,m=0,f=0,h=s*Math.PI/360/o,g=Math.PI/2*3*-1,x=u*r/100,v=d*r/100;if(o===3&&r===50){h=2*Math.PI/o;for(let _=0;_<o;_++){let b=h*_,D=m+Math.sin(b)*u,S=f+Math.cos(b)*d;l.addPoint(l.createPoint(D,S))}}else for(let _=0;_<o;_++){let b=m+Math.cos(g)*u,D=f+Math.sin(g)*d;l.addPoint(l.createPoint(b,D)),g+=h,b=m+Math.cos(g)*x,D=f+Math.sin(g)*v,_<=o,l.addPoint(l.createPoint(b,D)),g+=h}l.isClosed=!0;for(let _=0,b=l.points.length;_<b;_++)l.points[_].roundness=i;l.roundness=i,l.update();let A=st.create({shape:l,parameters:{roundness:i,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...n,type:"StarGeometry"}})}};import{PlaneBufferGeometry as D_}from"three";var Xs=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 D_(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var bm=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:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=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:s,cornerRadius:a,cornerSegments:c}=n.parameters,p=B_(t,e,r,t*.5,s,i,0,0,o,a,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...n,type:"TorusGeometry"}})}};function B_(n,t,e,r,o,i,s,a,c,p,l){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new Xn(!0,n,t,e,r,o,i,s,a,c,p,l)}import{TorusKnotBufferGeometry as E_}from"three";var _m=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:s}=n.parameters,a=t*.5;a!==e&&(a-=e);let c=new E_(a,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Sm=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 _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:a}=n.parameters,c=n.shape,p=t*.5,l=e*.5;a?(c.addPoint(c.createPoint(-p,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))),c.isClosed=!0;for(let d=0,m=c.points.length;d<m;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=st.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{BufferGeometry as Rm,BufferAttribute as Fm,Uint32BufferAttribute as Vl,Float32BufferAttribute as zl,Matrix4 as oS,Vector3 as ta}from"three";var G_,Ys=new Promise(n=>{G_=n});import{BufferGeometryLoader as tS}from"three";import{EventDispatcher as Z_,Matrix3 as J_,Vector3 as Fl}from"three";import{Mesh as K_,Matrix4 as Q_}from"three";import{Matrix4 as Om}from"three";import{Object3D as V_,Matrix4 as z_}from"three";import{HemisphereLight as wm}from"three";function Ve(n,t){return t.color(n)}var Ml=n=>"isEntity"in n,Zt=n=>"isAbstractMesh"in n,Jt=n=>n!==null&&n.isBooleanMesh,Tm=n=>n.objectType==="CombinedCamera";var Ks=n=>"objectHelper"in n;function R_(n,t){let e=!1;t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray(t.hiddenMatrix??Er.identity)),e&&(n.updateMatrix(),Jt(n.parent)&&Zt(n)&&n.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function F_(n,t){R_(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function Am(n,t,e){F_(n,t),t.color!==void 0&&(n.color=Ve(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof wm)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof wm)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Cm(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 Qs=n=>class extends n{hasEntityChild(){return this.children.some(e=>Ml(e))}isDescendantOf(e){e instanceof V_&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new z_().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Ml(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};import{Box3 as Lm,Line3 as U_,Matrix4 as Dl,Vector3 as Nt}from"three";var on=new Lm,er=new Nt,tr=new Nt,nn=new Dl,Pm=[new Nt(-1,1,1),new Nt(-1,-1,1),new Nt(1,-1,1),new Nt(1,1,1),new Nt(-1,1,-1),new Nt(-1,-1,-1),new Nt(1,-1,-1),new Nt(1,1,-1)],k_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],j_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function H_(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,a=-1/0,c=-1/0,p=-1/0;for(let l=e;l<r;l++){let u=t.getX(l),d=t.getY(l),m=t.getZ(l);u<o&&(o=u),d<i&&(i=d),m<s&&(s=m),u>a&&(a=u),d>c&&(c=d),m>p&&(p=m)}return n.min.set(o,i,s),n.max.set(a,c,p),n}var Nm=(n,t,e)=>{if(Zt(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?er.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(H_(on,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),on.getCenter(er)),n.forceComputeSize?on.getSize(tr).multiplyScalar(.5):tr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(Ks(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");on.setFromArray(r.array),on.getCenter(er),on.getSize(tr).multiplyScalar(.5)}else er.setScalar(0),tr.setScalar(0);nn.copy(t).multiply(n.matrixWorld),tr.x===0&&tr.y===0&&tr.z===0?e.push(new Nt(er.x,er.y,er.z).applyMatrix4(nn)):Pm.forEach(r=>{e.push(r.clone().multiply(tr).add(er).applyMatrix4(nn))})},Zn=class extends Lm{constructor(){super(...arguments);this.matrix=new Dl;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 Dl().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&Nm(s,r,i)}):Nm(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(nn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(tr).multiplyScalar(.5),this.getCenter(er),nn.copy(this.matrix).setPosition(er),this.vertices=Pm.map(e=>e.clone().multiply(tr).applyMatrix4(nn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=k_.map(([e,r])=>new U_(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Nt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=j_.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var rr=n=>"isEntity"in n,Im=n=>"isAbstractMesh"in n,Lt=n=>class extends Qs(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Om;this._singleBBox=new Zn;this._recursiveBBox=new Zn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}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}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{rr(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)rr(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)rr(o)&&o.visible&&o.traverseVisibleEntity(r)}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 s of this.children)s.updateWorldMatrix(!1,!0)}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)rr(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Om,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)rr(i)&&i.hiddenMatrix.premultiply(r)}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Fo(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Fo(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visible=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as q_,Vector3 as Jn,Euler as Mm,MathUtils as Hr}from"three";import{Object3D as W_}from"three";var Bl=class extends W_{},Zs=class extends Bl{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var so=class extends q_{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Jn),i=.1;this.parameters=is.defaultData(o.toArray(),i),eo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(e){this.parameters.hideBase=e}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)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=new Zs(this.object);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*Hr.DEG2RAD,i=r.end*Hr.DEG2RAD,s=o-i,a=new Mm(r.rotation[0]*Hr.DEG2RAD,r.rotation[1]*Hr.DEG2RAD,r.rotation[2]*Hr.DEG2RAD),c;switch(r.axis){case"z":c=new Jn(0,0,1);break;case"y":c=new Jn(0,1,0);break;default:case"x":c=new Jn(1,0,0);break}for(let[p,l]of this.children.entries()){l.scale.x=r.scale[0],l.scale.y=r.scale[1],l.scale.z=r.scale[2],l.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":l.rotation.set(0,u,0);break;case"y":l.rotation.set(0,0,u);break;case"z":l.rotation.set(u,0,0);break}l.translateOnAxis(c,r.radius),l.position.x+=r.position[0],l.position.y+=r.position[1],l.position.z+=r.position[2],r.alignment===!0?(l.rotation.x+=a.x,l.rotation.y+=a.y,l.rotation.z+=a.z):l.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Mm(r.rotation[0]*Hr.DEG2RAD,r.rotation[1]*Hr.DEG2RAD,r.rotation[2]*Hr.DEG2RAD);for(let[i,s]of this.children.entries())s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Jn(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let a=0;a<o.count[0];a++)for(let c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let l=this.children[r++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*a-s.x,l.position.y=o.size[1]*c-s.y,l.position.z=o.size[2]*p-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let c=this.children[r++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*i,c.position.y=-o.size[1]*s,c.position.z=-o.size[2]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),eo(this.parameters,e),this.update(),this}};import{MathUtils as El,BufferAttribute as $_,Vector3 as Gl,Float32BufferAttribute as Dm}from"three";function X_(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let t=new Map,e=n.geometry.attributes.position.array,r=n.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,a=new Gl(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new Gl})}t.forEach((i,s)=>{for(let a of i.normals)i.result.add(a);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,a=t.get(s)?.result;a&&(o[i]=a.x,o[i+1]=a.y,o[i+2]=a.z)}n.geometry.setAttribute("extrudeNormal",new Dm(o,3))}function Y_(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=new Gl;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;n.geometry.setAttribute("extrudeNormal",new Dm(e,3))}function Wr(n){if(n.objectType!=="TextFrame"){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?Y_(n):X_(n)}}function qr(n){if(!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(n.uuid.replace(/\D/g,"")),o=[El.seededRandom(r),El.seededRandom(r+1e4),El.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new $_(e,3))}var Ye=class extends Lt(K_){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Q_;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(e){}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=Rl[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),a=r.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),Wr(this),r.getAttribute("randomColor")&&qr(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=ei(r),i=this.material;return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new so(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new so(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Bt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Jt(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)Zt(e)&&(e.freeBooleanPointer(),Jt(e)&&e.invalidateUpstreamBooleanData())}};var eS=new Fl(0,0,1),Bm=new Fl,Em=new Fl,Gm=new J_,sn=class extends Ye{constructor(e=st.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Z_;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Gm.getNormalMatrix(this.matrixWorld),Bm.copy(eS).applyMatrix3(Gm).normalize(),Em.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Bm,Em)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=st.create(Object.assign({},i,{shape:r})),a=new sn(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){Ye.prototype.raycast.call(this,e,r)}};function Js(n,t){return rS(n)}function rS(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=_e.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new tS().parse(n));let e;try{e=ei(t)}catch(r){console.error(r)}if(!e){let r=_e.createFromState(Wo.defaultData(),100,100);t.shape=r,e=ei(t)}return e}var pe;Ys.then(n=>{pe=n});var Vm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),zm=new Uint32Array([0,1,2,3]),Um=new Uint8Array([4]),Pt=class{static build(n,t,e,r,o){let i,s,a,c=n?.phongAngle??t?.phongAngle??35;if(r===!1&&(c=-1),n.positionWASM!==void 0){e&&e!==0&&(pe.free_bvh(e),pe.free_subdivision_surface(e));try{i=Pt.allocate(n,o)}catch(p){console.error(p,n),i=Pt.allocate({positionWASM:Vm,indexWASM:zm,verticesPerFaceWASM:Um},o)}pe.set_destination_refinement_level(i,0),s=Pt.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Pt.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(pe.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?a=Pt.buildLevel(i,!1,c):a=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:Js(n),r,o,i,s;return{positions:r,triIndices:s}=Hl(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:i}=Wl(r,s,e),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=Vm,r=zm,o=Um);let a=e.length,c=r.length,p=o.length,l=e.length+i.length+s.length,u=r.length+o.length,d=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,m=l*Float32Array.BYTES_PER_ELEMENT,f=u*Uint32Array.BYTES_PER_ELEMENT,h=pe._malloc(d),g=new Float32Array(pe.HEAPF32.buffer,h,l),x=new Uint32Array(pe.HEAPU32.buffer,h+m,u);g.set(e,0),g.set(i,e.length),g.set(s,e.length+i.length),x.set(r,0),x.set(o,r.length);let v;n?.scaleBaked?.some(_=>_!==1)&&(v=new oS().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?pe.alloc_subdivision_surface2(h,a,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):pe.alloc_subdivision_surface(h,a,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return pe._free(h),A}static buildLevel(n,t,e,r,o){let i=o?pe.get_mesh_data2(n,t?pe.Level.CONTROL:pe.Level.REFINED,e,o.elements):pe.get_mesh_data(n,t?pe.Level.CONTROL:pe.Level.REFINED,e),s=8,a=pe.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(4,4+4),p=0,l=pe.HEAPU32[a[p]>>2],u=pe.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=pe.HEAPU32[a[p]>>2],m=pe.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=pe.HEAPU32[a[p]>>2],h=pe.HEAPU32.subarray(f>>2,(f>>2)+c[p]);p++;let g=pe.HEAPU32[a[p]>>2],x=pe.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new Rm;if(v.setIndex(new Vl(x,1)),v.setAttribute("position",new zl(u,3)),v.setAttribute("normal",new zl(m,3)),t){v.setAttribute("faceMap",new Vl(h,1));let A=new Float32Array(m.length/3*4).fill(0);v.setAttribute("color",new Fm(A,4))}return pe.free_mesh_data(i),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,pe.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=pe.get_wireframe_data_for_base_level(n),o=4,i=pe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),a=0,c=pe.HEAPU32[i[a]>>2],p=pe.HEAPF32.subarray(c>>2,(c>>2)+s[a]);a++;let l=pe.HEAPU32[i[a]>>2],u=pe.HEAPU32.subarray(l>>2,(l>>2)+s[a]);if(t===void 0){let d=new Rm;d.setAttribute("position",new zl(p,3));let m=new Float32Array(p.length);for(let f=0,h=p.length;f<h;)m[f++]=e.r,m[f++]=e.g,m[f++]=e.b;return d.setAttribute("color",new Fm(m,3)),d.setIndex(new Vl(u,1)),pe.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,pe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){t||pe.set_destination_refinement_level(n,1);let r=e?pe.get_topological_data2(n,t?pe.Level.CONTROL:pe.Level.REFINED,e.elements):pe.get_topological_data(n,t?pe.Level.CONTROL:pe.Level.REFINED),o=6,i=pe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,c=pe.HEAPU32[i[a]>>2],p=new Float32Array(pe.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=pe.HEAPU32[i[a]>>2],u=new Uint32Array(pe.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let d=pe.HEAPU32[i[a]>>2],m=new Uint8Array(pe.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return pe.free_topological_data(r),{positions:p,indices:u,verticesPerFace:m}}};var km=["getX","getY","getZ"];function Hl(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],a=1e4;for(let p=0;p<r;p++){let l=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(n[km[d]](l)*a)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[km[d]](l));e[u]=o,i.push(o),o++}}let c=[];for(let p=0;p<i.length;p+=3)i[p]===i[p+1]||i[p]===i[p+2]||i[p+1]===i[p+2]||c.push(i[p],i[p+1],i[p+2]);return{positions:s,triIndices:c}}var ea=new ta,Ul=new ta,kl=new ta,jl=new ta;function Wl(n,t,e){let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let i=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let c=0;c<i.length;c+=2)s+=(i[c]-i[(c===0?i.length:c)-2])*(i[c+1]+i[(c===0?i.length:c)-1]);n.length=0;let a=0;if(s<0)for(let c=0;c<i.length;c+=2)n.push(i[c],i[c+1],0),r.push(a++);else for(let c=i.length-2;c>=0;c-=2)n.push(i[c],i[c+1],0),r.push(a++);return o.push(a),{indices:r,verticesPerFace:o}}for(let i=0,s=e.capStartIndex??t.length;i<s;)if(t[i+1]===t[i+3]&&t[i+2]===t[i+5]||t[i+0]===t[i+3]&&t[i+2]===t[i+4]){ea.set(n[t[i]*3],n[t[i]*3+1],n[t[i]*3+2]),Ul.set(n[t[i+1]*3],n[t[i+1]*3+1],n[t[i+1]*3+2]),kl.set(n[t[i+4]*3],n[t[i+4]*3+1],n[t[i+4]*3+2]),jl.set(n[t[i+5]*3],n[t[i+5]*3+1],n[t[i+5]*3+2]),Ul.sub(ea).normalize(),kl.sub(ea).normalize(),jl.sub(ea).normalize();let a=Ul.cross(kl).dot(jl);Math.abs(a)>.005?(r.push(t[i],t[i+1],t[i+2]),o.push(3),i+=3):(r.push(t[i],t[i+1],t[i+4],t[i+5]),o.push(4),i+=6)}else r.push(t[i],t[i+1],t[i+2]),o.push(3),i+=3;if(e.capStartIndex!==void 0){let i=[],s=[],a=0;for(let c=0,p=0;c<n.length;c+=3,p++)n[c+2]===0&&(i.push(p),a++),n[c+2]===e.userData.parameters.depth&&s.push(p);if(e.userData.parameters.extrudeBevelSize===0){let c=s[0];s[0]=s[1],s[1]=c}i.reverse(),r.push(...i,...s),o.push(a,a)}return{indices:r,verticesPerFace:o}}var Bt={};gh(Bt,{calcBoolean:()=>lS,calcBooleanTopological:()=>aS,freeMeshSet:()=>pS,getMeshSet:()=>cS,transformMeshSet:()=>uS});var nS,jm=new Promise(n=>{nS=n});import{Float32BufferAttribute as Hm,Sphere as iS}from"three";var he,an;jm.then(n=>he=n);function sS(n,t){let e,{positions:r,triIndices:o}=Hl(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:a}=Wl(r,o,n);i=a.length,e=[];for(let c=0,p=0;c<i;c++){e.push(a[c]);for(let l=0;l<a[c];l++)e.push(s[p++])}}else{let s=o.length;e=Array(s+s/3),i=0;for(let a=0,c=0;c<e.length;)e[c++]=3,i++,e[c++]=o[a++],e[c++]=o[a++],e[c++]=o[a++]}return{positions:r,faceIndices:e,nFaces:i}}function Wm(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=he._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(he.HEAPU32.buffer,i,t):new Float32Array(he.HEAPF32.buffer,i,t)).set(n,0),i}function qm(n){switch(n){case 0:return he.OP.UNION;case 1:return he.OP.INTERSECTION;case 2:return he.OP.A_MINUS_B;case 3:return he.OP.B_MINUS_A;case 4:return he.OP.SYMMETRIC_DIFFERENCE;case 5:return he.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function aS(n,t){an===void 0&&(an=he.init_csg());let e=Wm(n),r=he.csg_calc_topological(an,e,n.length,qm(t));he._free(e);let o=6,i=he.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,c=he.HEAPU32[i[a]>>2],p=new Float32Array(he.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=he.HEAPU32[i[a]>>2],u=new Uint32Array(he.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let d=he.HEAPU32[i[a]>>2],m=new Uint8Array(he.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return he.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:m}}function lS(n,t,e,r){an===void 0&&(an=he.init_csg());let o=Wm(n),i=he.csg_calc(an,o,n.length,r,qm(t));he._free(o);let s=5,a=he.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+3),p=0,l=he.HEAPU32[a[p]>>2],u=he.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=he.HEAPU32[a[p]>>2],m=he.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=c[p];e.setAttribute("position",new Hm(u,3)),e.setAttribute("normal",new Hm(m,3));let h=he.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new iS),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},he.free_mesh_data(i),f}function cS(n,t){if(he===void 0)return-1;let e,r,o;if(t&&n.userData.positions!==void 0){let h=n.userData;o=h.verticesPerFace.length,e=h.positions,r=Array(h.verticesPerFace.reduce((g,x)=>g+x,0)+o);for(let g=0,x=0,v=0;g<h.verticesPerFace.length;g++){r[v++]=h.verticesPerFace[g];for(let A=0;A<h.verticesPerFace[g];A++)r[v++]=h.indices[x++]}}else({positions:e,faceIndices:r,nFaces:o}=sS(n,t));let i=e.length,s=r.length,a=e.length,c=r.length,p=a*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,l=a*Float32Array.BYTES_PER_ELEMENT,u=c*Uint32Array.BYTES_PER_ELEMENT,d=he._malloc(p),m=new Float32Array(he.HEAPF32.buffer,d,a),f=new Uint32Array(he.HEAPU32.buffer,d+l,c);return m.set(e,0),f.set(r,0),he.get_csg_mesh(d,i,d+l,s,o)}function uS(n,t){he.transform_csg_mesh(n,t.elements)}function pS(n){he.free_csg_mesh(n)}var Rl={ConeGeometry:Sd,CubeGeometry:wd,CylinderGeometry:_d,DodecahedronGeometry:Td,EllipseGeometry:Qd,HelixGeometry:rm,IcosahedronGeometry:om,LatheGeometry:nm,NonParametricGeometry:dm,PolygonGeometry:mm,PyramidGeometry:fm,RectangleGeometry:hm,SphereGeometry:gm,PlaneGeometry:ym,BackdropGeometry:xm,StarGeometry:vm,TextFrameGeometry:Xs,TorusGeometry:bm,TorusKnotGeometry:_m,TriangleGeometry:Sm,VectorGeometry:st},ei=n=>Rl[n.type].create(n);import{BufferGeometry as $m,Matrix4 as dS}from"three";var Xm=new dS;var ra=class extends Ye{constructor(e=new $m,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];Jt(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Im(i)&&i.booleanExclude===!1&&i.geometry.attributes.position?.count>0&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Bt.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Bt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else Jt(i)&&i.needsTransformForDownstream===!0?(Bt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(Xm.multiplyMatrices(i.matrix,i.booleanMatrixInvOld),Bt.transformMeshSet(i.booleanMeshSetAddress,Xm),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1);this.meshSetAddresses.push(i.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Bt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new $m,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Bt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,Wr(this),qr(this)}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as LS,OrthographicCamera as PS,PerspectiveCamera as OS,Vector3 as Gt,Object3D as Qm,Quaternion as IS}from"three";import{BoxBufferGeometry as mS}from"three";var or=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new mS(30,30,30),t};import{Camera as xS,LineSegments as vS,BufferGeometry as bS,LineBasicMaterial as _S,Color as $l,Vector3 as SS,Float32BufferAttribute as Km}from"three";import{Ray as fS,Sphere as hS,Matrix4 as gS,Vector3 as wr}from"three";var oa=new fS,ql=new hS,Ym=new gS,nr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),ql.copy(i.boundingSphere),ql.applyMatrix4(s),e.ray.intersectsSphere(ql)===!1||(Ym.copy(s).invert(),oa.copy(e.ray).applyMatrix4(Ym),i.boundingBox!==null&&oa.intersectsBox(i.boundingBox)===!1))return;let a,c,p,l,u=i.index,d=i.attributes.position,m=i.drawRange,f,h;if(o===!1){let x=Math.max(0,m.start),v=Math.min(u.count,m.start+m.count);for(f=x,h=v;f<h;f+=3)if(c=u.getX(f),p=u.getX(f+1),l=u.getX(f+2),a=g(n,e,oa,d,c,p,l),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let v=i.attributes.position,A=new wr,_=new wr,b=new wr,D=new wr,S=2,O=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=O*O,P=Math.max(0,m.start),C=Math.min(v.count,m.start+m.count);for(let N=P,j=C-1;N<j;N+=S){if(A.fromBufferAttribute(v,N),_.fromBufferAttribute(v,N+1),oa.distanceSqToSegment(A,_,D,b)>T)continue;D.applyMatrix4(n.matrixWorld);let oe=e.ray.origin.distanceTo(D);oe<e.near||oe>e.far||r.push({distance:oe,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function g(x,v,A,_,b,D,S){let y=new wr,O=new wr,T=new wr,P=new wr,C=new wr;if(y.fromBufferAttribute(_,b),O.fromBufferAttribute(_,D),T.fromBufferAttribute(_,S),A.intersectTriangle(y,O,T,!1,P)===null)return null;C.copy(P),C.applyMatrix4(x.matrixWorld);let j=v.ray.origin.distanceTo(C);return j<v.near||j>v.far?null:{faceIndex:1,distance:j,point:C.clone(),object:x}}};var na=new SS,Ot=new xS,Xl=class extends vS{constructor(e){let r=new bS,o=new _S({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},c=new $l(15711266),p=new $l(15711266),l=new $l(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",p),u("p","n2",p),u("p","n3",p),u("p","n4",p),u("u1","u2",l),u("u2","u3",l),u("u3","u1",l);function u(m,f,h){d(m,h),d(f,h)}function d(m,f){i.push(0,0,0),s.push(f.r,f.g,f.b),a[m]===void 0&&(a[m]=[]),a[m].push(i.length/3-1)}r.setAttribute("position",new Km(i,3)),r.setAttribute("color",new Km(s,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=a,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Ot.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,a=o?.8:1e-4;Et("n1",r,e,Ot,-i,-s,a),Et("n2",r,e,Ot,i,-s,a),Et("n3",r,e,Ot,-i,s,a),Et("n4",r,e,Ot,i,s,a);let c=a;Et("f1",r,e,Ot,-i,-s,c),Et("f2",r,e,Ot,i,-s,c),Et("f3",r,e,Ot,-i,s,c),Et("f4",r,e,Ot,i,s,c);let p=c,l=.5;Et("u1",r,e,Ot,i*.7*l,s*1.1,p),Et("u2",r,e,Ot,-i*.7*l,s*1.1,p),Et("u3",r,e,Ot,0,s*(1.1+.9*l),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Et(n,t,e,r,o,i,s){na.set(o,i,s).unproject(r);let a=t[n];if(a!==void 0){let c=e.getAttribute("position");for(let p=0,l=a.length;p<l;p++)c.setXYZ(a[p],na.x,na.y,na.z)}}var ia=class extends or(Xl){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){nr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as wS}from"three";var ln=class extends or(wS){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){nr(this.object,ln.geometryHelper,e,r)}};import{AxesHelper as TS}from"three";var cn=class extends or(TS){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){nr(this.object,cn.geometryHelper,e,r)}update(){}};import{PointLightHelper as AS}from"three";var un=class extends or(AS){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){nr(this.object,un.geometryHelper,e,r)}};import{SpotLightHelper as CS,Vector3 as NS}from"three";var sa=class extends or(CS){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){nr(this.object,sa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=sa._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 s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},ti=sa;ti._vector=new NS;var ir=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this)}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Ve(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows)}return this}};var pn=new Gt,Yl=new Gt,Tr=class extends ir(Lt(LS),ia){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=to.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new PS(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new OS(o,e/r,i??50,s),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.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic()}static createFromState(e,r){let o=new Tr().fromState(r);return o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}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){super.lookAt(e),this.getWorldPosition(pn),this.targetOffset=pn.distanceTo(e)}getTarget(e=new Gt){return this.getWorldDirection(Yl),this.getWorldPosition(pn),Yl.multiplyScalar(this.targetOffset),e.copy(pn).add(Yl),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(pn),pn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new IS),r=new Gt(0,0,1).applyQuaternion(e),o=new Gt().copy(Qm.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Gt().copy(Qm.DefaultUp).projectOnPlane(r),s=new Gt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Gt),i=e.getWorldDirection(new Gt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Gt),i=this.getWorldDirection(new Gt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,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,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,a):this.orthoCamera.setViewOffset(e,r,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}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.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 Fo(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),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(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as MS}from"three";var ao=class extends ir(Lt(MS),cn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new ao().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};import{DirectionalLight as DS,CameraHelper as aa}from"three";var dn=class extends ir(Lt(DS),ln){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new aa(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new dn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof aa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof aa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof aa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Cm(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as BS,Vector3 as la,Box3 as ES,Box3Helper as ca,Color as GS}from"three";var mn=class extends ir(Lt(BS),un){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new la(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new la(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new ES(i,s),c=new ca(a,new GS(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new mn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ca&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ca&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof ca){let o=this.shadow.camera,i=new la(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new la(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as RS,CameraHelper as ua,MathUtils as FS,Vector3 as tf,Quaternion as VS}from"three";var Zm=new tf,Jm=new tf,ef=new VS,fn=class extends ir(Lt(RS),ti){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=FS.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new ua(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new fn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ua&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ua&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ua&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Jm.setFromMatrixPosition(this.matrixWorld),ef.setFromRotationMatrix(this.matrixWorld),Zm.copy(this.up).applyQuaternion(ef).negate().multiplyScalar(this.distance),this.target.position.copy(Jm).add(Zm),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};import{Texture as ya,Vector2 as Cr,Vector3 as ur,Vector4 as wn}from"three";import{MathUtils as zS}from"three";var Ke=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=zS.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,s){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 Ke&&(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}};import{MathUtils as US}from"three";var ae=class extends Ke{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 s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=US.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),c=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let p=this.getTemp(e,o);if(p)return e.format(p,c,r);{p=super.generate(e,r,o,a.output,i);let l=this.generate(e,c,o);return e.addNodeCode(p+" = "+l+";"),e.format(p,c,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,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ae=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,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,r))}};var Se=class extends Ae{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Ze?e:new Ze(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),p=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return p?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,r))}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var X=class extends Ae{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var ge=class extends Ae{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,s,a){return e.format(this.value.toString(),i,r)}};import{UniformsLib as kS,UniformsUtils as jS}from"three";var $r=class extends Ke{constructor(){super("basic");this.nodeType="Basic";this.color=new Se(5855577),this.shadingAlpha=new X(1),this.shadingBlend=new ge(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(jS.merge([kS.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1
+ var ph=Object.create;var Ta=Object.defineProperty;var dh=Object.getOwnPropertyDescriptor;var mh=Object.getOwnPropertyNames;var fh=Object.getPrototypeOf,hh=Object.prototype.hasOwnProperty;var bc=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),gh=(n,t)=>{for(var e in t)Ta(n,e,{get:t[e],enumerable:!0})},yh=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of mh(t))!hh.call(n,o)&&o!==e&&Ta(n,o,{get:()=>t[o],enumerable:!(r=dh(t,o))||r.enumerable});return n};var _c=(n,t,e)=>(e=n!=null?ph(fh(n)):{},yh(t||!n||!n.__esModule?Ta(e,"default",{value:n,enumerable:!0}):e,n));var Sf=bc(_a=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||t;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var u=this||t;if(l=parseFloat(l),u.ctx||p(),typeof l<"u"&&l>=0&&l<=1){if(u._volume=l,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);h&&h._node&&(h._node.volume=h._volume*l)}return u}return u._volume},mute:function(l){var u=this||t;u.ctx||p(),u._muted=l,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return u},stop:function(){for(var l=this||t,u=0;u<l._howls.length;u++)l._howls[u].stop();return l},unload:function(){for(var l=this||t,u=l._howls.length-1;u>=0;u--)l._howls[u].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,p()),l},codecs:function(l){return(this||t)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||t;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var u=new Audio;u.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return l}if(!u||typeof u.canPlayType!="function")return l;var d=u.canPlayType("audio/mpeg;").replace(/^no$/,""),m=l._navigator?l._navigator.userAgent:"",f=m.match(/OPR\/([0-6].)/g),h=f&&parseInt(f[0].split("/")[1],10)<33,g=m.indexOf("Safari")!==-1&&m.indexOf("Chrome")===-1,x=m.match(/Version\/(.*?) /),v=g&&x&&parseInt(x[1],10)<15;return l._codecs={mp3:!!(!h&&(d||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,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:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&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$/,"")},l},_unlockAudio:function(){var l=this||t;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var u=function(d){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var m=new Audio;m._unlocked=!0,l._releaseHtml5Audio(m)}catch{l.noAudio=!0;break}for(var f=0;f<l._howls.length;f++)if(!l._howls[f]._webAudio)for(var h=l._howls[f]._getSoundIds(),g=0;g<h.length;g++){var x=l._howls[f]._soundById(h[g]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._node.load())}l._autoResume();var v=l.ctx.createBufferSource();v.buffer=l._scratchBuffer,v.connect(l.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),v.onended=function(){v.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var A=0;A<l._howls.length;A++)l._howls[A]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),l}},_obtainHtml5Audio:function(){var l=this||t;if(l._html5AudioPool.length)return l._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(l){var u=this||t;return l._unlocked&&u._html5AudioPool.push(l),u},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<l._howls.length;u++)if(l._howls[u]._webAudio){for(var d=0;d<l._howls[u]._sounds.length;d++)if(!l._howls[u]._sounds[d]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var m=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(m,m)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!t.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var u=0;u<l._howls.length;u++)l._howls[u]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var t=new n,e=function(l){var u=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(l)};e.prototype={init:function(l){var u=this;return t.ctx||p(),u._autoplay=l.autoplay||!1,u._format=typeof l.format!="string"?l.format:[l.format],u._html5=l.html5||!1,u._muted=l.mute||!1,u._loop=l.loop||!1,u._pool=l.pool||5,u._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,u._rate=l.rate||1,u._sprite=l.sprite||{},u._src=typeof l.src!="string"?l.src:[l.src],u._volume=l.volume!==void 0?l.volume:1,u._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=l.onend?[{fn:l.onend}]:[],u._onfade=l.onfade?[{fn:l.onfade}]:[],u._onload=l.onload?[{fn:l.onload}]:[],u._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],u._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],u._onpause=l.onpause?[{fn:l.onpause}]:[],u._onplay=l.onplay?[{fn:l.onplay}]:[],u._onstop=l.onstop?[{fn:l.onstop}]:[],u._onmute=l.onmute?[{fn:l.onmute}]:[],u._onvolume=l.onvolume?[{fn:l.onvolume}]:[],u._onrate=l.onrate?[{fn:l.onrate}]:[],u._onseek=l.onseek?[{fn:l.onseek}]:[],u._onunlock=l.onunlock?[{fn:l.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 l=this,u=null;if(t.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var d=0;d<l._src.length;d++){var m,f;if(l._format&&l._format[d])m=l._format[d];else{if(f=l._src[d],typeof f!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}m=/^data:audio\/([^;,]+);/i.exec(f),m||(m=/\.([^.]+)$/.exec(f.split("?",1)[0])),m&&(m=m[1].toLowerCase())}if(m||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),m&&t.codecs(m)){u=l._src[d];break}}if(!u){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=u,l._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new r(l),l._webAudio&&i(l),l},play:function(l,u){var d=this,m=null;if(typeof l=="number")m=l,l=null;else{if(typeof l=="string"&&d._state==="loaded"&&!d._sprite[l])return null;if(typeof l>"u"&&(l="__default",!d._playLock)){for(var f=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(f++,m=d._sounds[h]._id);f===1?l=null:m=null}}var g=m?d._soundById(m):d._inactiveSound();if(!g)return null;if(m&&!l&&(l=g._sprite||"__default"),d._state!=="loaded"){g._sprite=l,g._ended=!1;var x=g._id;return d._queue.push({event:"play",action:function(){d.play(x)}}),x}if(m&&!g._paused)return u||d._loadQueue("play"),g._id;d._webAudio&&t._autoResume();var v=Math.max(0,g._seek>0?g._seek:d._sprite[l][0]/1e3),A=Math.max(0,(d._sprite[l][0]+d._sprite[l][1])/1e3-v),_=A*1e3/Math.abs(g._rate),b=d._sprite[l][0]/1e3,D=(d._sprite[l][0]+d._sprite[l][1])/1e3;g._sprite=l,g._ended=!1;var S=function(){g._paused=!1,g._seek=v,g._start=b,g._stop=D,g._loop=!!(g._loop||d._sprite[l][2])};if(v>=D){d._ended(g);return}var y=g._node;if(d._webAudio){var P=function(){d._playLock=!1,S(),d._refreshBuffer(g);var N=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(N,t.ctx.currentTime),g._playStart=t.ctx.currentTime,typeof y.bufferSource.start>"u"?g._loop?y.bufferSource.noteGrainOn(0,v,86400):y.bufferSource.noteGrainOn(0,v,A):g._loop?y.bufferSource.start(0,v,86400):y.bufferSource.start(0,v,A),_!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_)),u||setTimeout(function(){d._emit("play",g._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?P():(d._playLock=!0,d.once("resume",P),d._clearTimer(g._id))}else{var T=function(){y.currentTime=v,y.muted=g._muted||d._muted||t._muted||y.muted,y.volume=g._volume*t.volume(),y.playbackRate=g._rate;try{var N=y.play();if(N&&typeof Promise<"u"&&(N instanceof Promise||typeof N.then=="function")?(d._playLock=!0,S(),N.then(function(){d._playLock=!1,y._unlocked=!0,u?d._loadQueue():d._emit("play",g._id)}).catch(function(){d._playLock=!1,d._emit("playerror",g._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."),g._ended=!0,g._paused=!0})):u||(d._playLock=!1,S(),d._emit("play",g._id)),y.playbackRate=g._rate,y.paused){d._emit("playerror",g._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}l!=="__default"||g._loop?d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_):(d._endTimers[g._id]=function(){d._ended(g),y.removeEventListener("ended",d._endTimers[g._id],!1)},y.addEventListener("ended",d._endTimers[g._id],!1))}catch(j){d._emit("playerror",g._id,j)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var O=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||O)T();else{d._playLock=!0,d._state="loading";var C=function(){d._state="loaded",T(),y.removeEventListener(t._canPlayEvent,C,!1)};y.addEventListener(t._canPlayEvent,C,!1),d._clearTimer(g._id)}}return g._id},pause:function(l){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(l)}}),u;for(var d=u._getSoundIds(l),m=0;m<d.length;m++){u._clearTimer(d[m]);var f=u._soundById(d[m]);if(f&&!f._paused&&(f._seek=u.seek(d[m]),f._rateSeek=0,f._paused=!0,u._stopFade(d[m]),f._node))if(u._webAudio){if(!f._node.bufferSource)continue;typeof f._node.bufferSource.stop>"u"?f._node.bufferSource.noteOff(0):f._node.bufferSource.stop(0),u._cleanBuffer(f._node)}else(!isNaN(f._node.duration)||f._node.duration===1/0)&&f._node.pause();arguments[1]||u._emit("pause",f?f._id:null)}return u},stop:function(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(l)}}),d;for(var m=d._getSoundIds(l),f=0;f<m.length;f++){d._clearTimer(m[f]);var h=d._soundById(m[f]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(m[f]),h._node&&(d._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&d._clearSound(h._node))),u||d._emit("stop",h._id))}return d},mute:function(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(l,u)}}),d;if(typeof u>"u")if(typeof l=="boolean")d._muted=l;else return d._muted;for(var m=d._getSoundIds(u),f=0;f<m.length;f++){var h=d._soundById(m[f]);h&&(h._muted=l,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:l),d._emit("mute",h._id))}return d},volume:function(){var l=this,u=arguments,d,m;if(u.length===0)return l._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));var g;if(typeof d<"u"&&d>=0&&d<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,u)}}),l;typeof m>"u"&&(l._volume=d),m=l._getSoundIds(m);for(var x=0;x<m.length;x++)g=l._soundById(m[x]),g&&(g._volume=d,u[2]||l._stopFade(m[x]),l._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),l._emit("volume",g._id))}else return g=m?l._soundById(m):l._sounds[0],g?g._volume:0;return l},fade:function(l,u,d,m){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"fade",action:function(){f.fade(l,u,d,m)}}),f;l=Math.min(Math.max(0,parseFloat(l)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),f.volume(l,m);for(var h=f._getSoundIds(m),g=0;g<h.length;g++){var x=f._soundById(h[g]);if(x){if(m||f._stopFade(h[g]),f._webAudio&&!x._muted){var v=t.ctx.currentTime,A=v+d/1e3;x._volume=l,x._node.gain.setValueAtTime(l,v),x._node.gain.linearRampToValueAtTime(u,A)}f._startFadeInterval(x,l,u,d,h[g],typeof m>"u")}}return f},_startFadeInterval:function(l,u,d,m,f,h){var g=this,x=u,v=d-u,A=Math.abs(v/.01),_=Math.max(4,A>0?m/A:m),b=Date.now();l._fadeTo=d,l._interval=setInterval(function(){var D=(Date.now()-b)/m;b=Date.now(),x+=v*D,x=Math.round(x*100)/100,v<0?x=Math.max(d,x):x=Math.min(d,x),g._webAudio?l._volume=x:g.volume(x,l._id,!0),h&&(g._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,g.volume(d,l._id),g._emit("fade",l._id))},_)},_stopFade:function(l){var u=this,d=u._soundById(l);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,l),d._fadeTo=null,u._emit("fade",l)),u},loop:function(){var l=this,u=arguments,d,m,f;if(u.length===0)return l._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],l._loop=d;else return f=l._soundById(parseInt(u[0],10)),f?f._loop:!1;else u.length===2&&(d=u[0],m=parseInt(u[1],10));for(var h=l._getSoundIds(m),g=0;g<h.length;g++)f=l._soundById(h[g]),f&&(f._loop=d,l._webAudio&&f._node&&f._node.bufferSource&&(f._node.bufferSource.loop=d,d&&(f._node.bufferSource.loopStart=f._start||0,f._node.bufferSource.loopEnd=f._stop,l.playing(h[g])&&(l.pause(h[g],!0),l.play(h[g],!0)))));return l},rate:function(){var l=this,u=arguments,d,m;if(u.length===0)m=l._sounds[0]._id;else if(u.length===1){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));var g;if(typeof d=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,u)}}),l;typeof m>"u"&&(l._rate=d),m=l._getSoundIds(m);for(var x=0;x<m.length;x++)if(g=l._soundById(m[x]),g){l.playing(m[x])&&(g._rateSeek=l.seek(m[x]),g._playStart=l._webAudio?t.ctx.currentTime:g._playStart),g._rate=d,l._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):g._node&&(g._node.playbackRate=d);var v=l.seek(m[x]),A=(l._sprite[g._sprite][0]+l._sprite[g._sprite][1])/1e3-v,_=A*1e3/Math.abs(g._rate);(l._endTimers[m[x]]||!g._paused)&&(l._clearTimer(m[x]),l._endTimers[m[x]]=setTimeout(l._ended.bind(l,g),_)),l._emit("rate",g._id)}}else return g=l._soundById(m),g?g._rate:l._rate;return l},seek:function(){var l=this,u=arguments,d,m;if(u.length===0)l._sounds.length&&(m=l._sounds[0]._id);else if(u.length===1){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):l._sounds.length&&(m=l._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));if(typeof m>"u")return 0;if(typeof d=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,u)}}),l;var g=l._soundById(m);if(g)if(typeof d=="number"&&d>=0){var x=l.playing(m);x&&l.pause(m,!0),g._seek=d,g._ended=!1,l._clearTimer(m),!l._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&l.play(m,!0),l._emit("seek",m)};if(x&&!l._webAudio){var A=function(){l._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(l._webAudio){var _=l.playing(m)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+_*Math.abs(g._rate))}else return g._node.currentTime;return l},playing:function(l){var u=this;if(typeof l=="number"){var d=u._soundById(l);return d?!d._paused:!1}for(var m=0;m<u._sounds.length;m++)if(!u._sounds[m]._paused)return!0;return!1},duration:function(l){var u=this,d=u._duration,m=u._soundById(l);return m&&(d=u._sprite[m._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var l=this,u=l._sounds,d=0;d<u.length;d++)u[d]._paused||l.stop(u[d]._id),l._webAudio||(l._clearSound(u[d]._node),u[d]._node.removeEventListener("error",u[d]._errorFn,!1),u[d]._node.removeEventListener(t._canPlayEvent,u[d]._loadFn,!1),u[d]._node.removeEventListener("ended",u[d]._endFn,!1),t._releaseHtml5Audio(u[d]._node)),delete u[d]._node,l._clearTimer(u[d]._id);var m=t._howls.indexOf(l);m>=0&&t._howls.splice(m,1);var f=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===l._src||l._src.indexOf(t._howls[d]._src)>=0){f=!1;break}return o&&f&&delete o[l._src],t.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,u,d,m){var f=this,h=f["_on"+l];return typeof u=="function"&&h.push(m?{id:d,fn:u,once:m}:{id:d,fn:u}),f},off:function(l,u,d){var m=this,f=m["_on"+l],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<f.length;h++){var g=d===f[h].id;if(u===f[h].fn&&g||!u&&g){f.splice(h,1);break}}else if(l)m["_on"+l]=[];else{var x=Object.keys(m);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(m[x[h]])&&(m[x[h]]=[])}return m},once:function(l,u,d){var m=this;return m.on(l,u,d,1),m},_emit:function(l,u,d){for(var m=this,f=m["_on"+l],h=f.length-1;h>=0;h--)(!f[h].id||f[h].id===u||l==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(m,f[h].fn),0),f[h].once&&m.off(l,f[h].fn,f[h].id));return m._loadQueue(l),m},_loadQueue:function(l){var u=this;if(u._queue.length>0){var d=u._queue[0];d.event===l&&(u._queue.shift(),u._loadQueue()),l||d.action()}return u},_ended:function(l){var u=this,d=l._sprite;if(!u._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(u._ended.bind(u,l),100),u;var m=!!(l._loop||u._sprite[d][2]);if(u._emit("end",l._id),!u._webAudio&&m&&u.stop(l._id,!0).play(l._id),u._webAudio&&m){u._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=t.ctx.currentTime;var f=(l._stop-l._start)*1e3/Math.abs(l._rate);u._endTimers[l._id]=setTimeout(u._ended.bind(u,l),f)}return u._webAudio&&!m&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,u._clearTimer(l._id),u._cleanBuffer(l._node),t._autoSuspend()),!u._webAudio&&!m&&u.stop(l._id,!0),u},_clearTimer:function(l){var u=this;if(u._endTimers[l]){if(typeof u._endTimers[l]!="function")clearTimeout(u._endTimers[l]);else{var d=u._soundById(l);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[l],!1)}delete u._endTimers[l]}return u},_soundById:function(l){for(var u=this,d=0;d<u._sounds.length;d++)if(l===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var l=this;l._drain();for(var u=0;u<l._sounds.length;u++)if(l._sounds[u]._ended)return l._sounds[u].reset();return new r(l)},_drain:function(){var l=this,u=l._pool,d=0,m=0;if(!(l._sounds.length<u)){for(m=0;m<l._sounds.length;m++)l._sounds[m]._ended&&d++;for(m=l._sounds.length-1;m>=0;m--){if(d<=u)return;l._sounds[m]._ended&&(l._webAudio&&l._sounds[m]._node&&l._sounds[m]._node.disconnect(0),l._sounds.splice(m,1),d--)}}},_getSoundIds:function(l){var u=this;if(typeof l>"u"){for(var d=[],m=0;m<u._sounds.length;m++)d.push(u._sounds[m]._id);return d}else return[l]},_refreshBuffer:function(l){var u=this;return l._node.bufferSource=t.ctx.createBufferSource(),l._node.bufferSource.buffer=o[u._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,t.ctx.currentTime),u},_cleanBuffer:function(l){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),d))try{l.bufferSource.buffer=t._scratchBuffer}catch{}return l.bufferSource=null,u},_clearSound:function(l){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(l){this._parent=l,this.init()};r.prototype={init:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++t._counter,u._sounds.push(l),l.create(),l},create:function(){var l=this,u=l._parent,d=t._muted||l._muted||l._parent._muted?0:l._volume;return u._webAudio?(l._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),l._node.gain.setValueAtTime(d,t.ctx.currentTime),l._node.paused=!0,l._node.connect(t.masterGain)):t.noAudio||(l._node=t._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(t._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=u._src,l._node.preload=u._preload===!0?"auto":u._preload,l._node.volume=d*t.volume(),l._node.load()),l},reset:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++t._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,u=l._parent;u._duration=Math.ceil(l._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()),l._node.removeEventListener(t._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,u=l._parent;u._duration===1/0&&(u._duration=Math.ceil(l._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var u=l._src;if(o[u]){l._duration=o[u].duration,c(l);return}if(/^data:[^;]+;base64,/.test(u)){for(var d=atob(u.split(",")[1]),m=new Uint8Array(d.length),f=0;f<d.length;++f)m[f]=d.charCodeAt(f);a(m.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,u,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(g){h.setRequestHeader(g,l._xhr.headers[g])}),h.onload=function(){var g=(h.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}a(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[u],l.load())},s(h)}},s=function(l){try{l.send()}catch{l.onerror()}},a=function(l,u){var d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},m=function(f){f&&u._sounds.length>0?(o[u._src]=f,c(u,f)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(l).then(m).catch(d):t.ctx.decodeAudioData(l,m,d)},c=function(l,u){u&&!l._duration&&(l._duration=u.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},p=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 l=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=u?parseInt(u[1],10):null;if(l&&d&&d<9){var m=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!m&&(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 _a<"u"&&(_a.Howler=t,_a.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,s){var a=this;if(!a.ctx||!a.ctx.listener)return a;var c=a._orientation;if(e=typeof e!="number"?c[1]:e,r=typeof r!="number"?c[2]:r,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof t=="number")a._orientation=[t,e,r,o,i,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(t,e,r,o,i,s);else return c;return a},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),s=0;s<i.length;s++){var a=r._soundById(i[s]);if(a)if(typeof t=="number")a._stereo=t,a._pos=[t,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&n(a,o),o==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(t,0,0):a._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",a._id);else return a._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 s=i._getSoundIds(o),a=0;a<s.length;a++){var c=i._soundById(s[a]);if(c)if(typeof t=="number")c._pos=[t,e,r],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setPosition(t,e,r)),i._emit("pos",c._id);else return c._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 s=i._getSoundIds(o),a=0;a<s.length;a++){var c=i._soundById(s[a]);if(c)if(typeof t=="number")c._orientation=[t,e,r],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setOrientation(t,e,r)),i._emit("orientation",c._id);else return c._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 s=t._getSoundIds(o),a=0;a<s.length;a++)if(i=t._soundById(s[a]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:c.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:c.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:c.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:c.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:c.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:c.panningModel};var p=i._panner;p?(p.coneInnerAngle=c.coneInnerAngle,p.coneOuterAngle=c.coneOuterAngle,p.coneOuterGain=c.coneOuterGain,p.distanceModel=c.distanceModel,p.maxDistance=c.maxDistance,p.refDistance=c.refDistance,p.rolloffFactor=c.rolloffFactor,p.panningModel=c.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 Mf=bc((Sa,If)=>{(function(n,t){typeof Sa=="object"&&typeof If<"u"?t(Sa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Sa,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 s,a,c,p,l,u,d,m,f,h,g,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var _=[],b=[],D=[],S=e==="f"?A:v,y=h=d=0;y<A;y++)b[y]=new Array(S).fill(0);for(y=0;y<v;y++)D[y]=new Array(v).fill(0);var P,T=new Array(v).fill(0);for(y=0;y<A;y++)for(s=0;s<v;s++)b[y][s]=t[y][s];for(y=0;y<v;y++){for(_[y]=d,f=0,c=y+1,s=y;s<A;s++)f+=Math.pow(b[s][y],2);if(f<i)d=0;else for(m=(u=b[y][y])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y]=u-d,s=c;s<v;s++){for(f=0,a=y;a<A;a++)f+=b[a][y]*b[a][s];for(u=f/m,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(T[y]=d,f=0,s=c;s<v;s++)f+=Math.pow(b[y][s],2);if(f<i)d=0;else{for(m=(u=b[y][y+1])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y+1]=u-d,s=c;s<v;s++)_[s]=b[y][s]/m;for(s=c;s<A;s++){for(f=0,a=c;a<v;a++)f+=b[s][a]*b[y][a];for(a=c;a<v;a++)b[s][a]=b[s][a]+f*_[a]}}h<(g=Math.abs(T[y])+Math.abs(_[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(m=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/m;for(s=c;s<v;s++){for(f=0,a=c;a<v;a++)f+=b[y][a]*D[a][s];for(a=c;a<v;a++)D[a][s]=D[a][s]+f*D[a][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=_[y],c=y}if(e){if(e==="f")for(y=v;y<A;y++){for(s=v;s<A;s++)b[y][s]=0;b[y][y]=1}for(y=v-1;0<=y;y--){for(c=y+1,d=T[y],s=c;s<S;s++)b[y][s]=0;if(d!==0){for(m=b[y][y]*d,s=c;s<S;s++){for(f=0,a=c;a<A;a++)f+=b[a][y]*b[a][s];for(u=f/m,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(s=y;s<A;s++)b[s][y]=b[s][y]/d}else for(s=y;s<A;s++)b[s][y]=0;b[y][y]=b[y][y]+1}}for(o*=h,a=v-1;0<=a;a--)for(var O=0;O<50;O++){for(P=!1,c=a;0<=c;c--){if(Math.abs(_[c])<=o){P=!0;break}if(Math.abs(T[c-1])<=o)break}if(!P){for(l=0,p=c-(f=1),y=c;y<a+1&&(u=f*_[y],_[y]=l*_[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),l=d/(m=T[y]),f=-u/m,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*l+x*f,b[s][y]=-g*f+x*l}if(x=T[a],c===a){if(x<0&&(T[a]=-x,r))for(s=0;s<v;s++)D[s][a]=-D[s][a];break}for(h=T[c],u=(((g=T[a-1])-x)*(g+x)+((d=_[a-1])-(m=_[a]))*(d+m))/(2*m*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+m*(g/(u<0?u-d:u+d)-m))/h,y=c+(f=l=1);y<a+1;y++){if(d=_[y],g=T[y],m=f*d,d*=l,x=Math.sqrt(u*u+m*m),u=h*(l=u/(_[y-1]=x))+d*(f=m/x),d=-h*f+d*l,m=g*f,g*=l,r)for(s=0;s<v;s++)h=D[s][y-1],x=D[s][y],D[s][y-1]=h*l+x*f,D[s][y]=-h*f+x*l;if(x=Math.sqrt(u*u+m*m),u=(l=u/(T[y-1]=x))*d+(f=m/x)*g,h=-f*d+l*g,e)for(s=0;s<A;s++)g=b[s][y-1],x=b[s][y],b[s][y-1]=g*l+x*f,b[s][y]=-g*f+x*l}_[c]=0,_[a]=u,T[a]=h}for(y=0;y<v;y++)T[y]<o&&(T[y]=0);return{u:b,q:T,v:D}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as S1,Loader as w1}from"three";function xo(n,t){return Object.setPrototypeOf(n,t),n}function Sc(n){return Array.isArray(n)?n:[n]}var xh=typeof global=="object"&&global&&global.Object===Object&&global,Ii=xh;var vh=typeof self=="object"&&self&&self.Object===Object&&self,bh=Ii||vh||Function("return this")(),Fe=bh;var _h=Fe.Symbol,nt=_h;var wc=Object.prototype,Sh=wc.hasOwnProperty,wh=wc.toString,Ln=nt?nt.toStringTag:void 0;function Th(n){var t=Sh.call(n,Ln),e=n[Ln];try{n[Ln]=void 0;var r=!0}catch{}var o=wh.call(n);return r&&(t?n[Ln]=e:delete n[Ln]),o}var Tc=Th;var Ah=Object.prototype,Ch=Ah.toString;function Nh(n){return Ch.call(n)}var Ac=Nh;var Lh="[object Null]",Oh="[object Undefined]",Cc=nt?nt.toStringTag:void 0;function Ph(n){return n==null?n===void 0?Oh:Lh:Cc&&Cc in Object(n)?Tc(n):Ac(n)}var yt=Ph;function Ih(n){return n!=null&&typeof n=="object"}var et=Ih;var Mh="[object Symbol]";function Dh(n){return typeof n=="symbol"||et(n)&&yt(n)==Mh}var vo=Dh;function Bh(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 Mi=Bh;var Eh=Array.isArray,Me=Eh;var Gh=1/0,Nc=nt?nt.prototype:void 0,Lc=Nc?Nc.toString:void 0;function Oc(n){if(typeof n=="string")return n;if(Me(n))return Mi(n,Oc)+"";if(vo(n))return Lc?Lc.call(n):"";var t=n+"";return t=="0"&&1/n==-Gh?"-0":t}var Pc=Oc;function Rh(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var ze=Rh;function Fh(n){return n}var Di=Fh;var Vh="[object AsyncFunction]",zh="[object Function]",Uh="[object GeneratorFunction]",kh="[object Proxy]";function jh(n){if(!ze(n))return!1;var t=yt(n);return t==zh||t==Uh||t==Vh||t==kh}var bo=jh;var Hh=Fe["__core-js_shared__"],Bi=Hh;var Ic=function(){var n=/[^.]+$/.exec(Bi&&Bi.keys&&Bi.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Wh(n){return!!Ic&&Ic in n}var Mc=Wh;var qh=Function.prototype,$h=qh.toString;function Xh(n){if(n!=null){try{return $h.call(n)}catch{}try{return n+""}catch{}}return""}var fr=Xh;var Yh=/[\\^$.*+?()[\]{}|]/g,Kh=/^\[object .+?Constructor\]$/,Qh=Function.prototype,Zh=Object.prototype,Jh=Qh.toString,eg=Zh.hasOwnProperty,tg=RegExp("^"+Jh.call(eg).replace(Yh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function rg(n){if(!ze(n)||Mc(n))return!1;var t=bo(n)?tg:Kh;return t.test(fr(n))}var Dc=rg;function og(n,t){return n?.[t]}var Bc=og;function ng(n,t){var e=Bc(n,t);return Dc(e)?e:void 0}var ut=ng;var ig=ut(Fe,"WeakMap"),Ei=ig;var Ec=Object.create,sg=function(){function n(){}return function(t){if(!ze(t))return{};if(Ec)return Ec(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Gc=sg;function ag(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 Rc=ag;function lg(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Gi=lg;var cg=800,ug=16,pg=Date.now;function dg(n){var t=0,e=0;return function(){var r=pg(),o=ug-(r-e);if(e=r,o>0){if(++t>=cg)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Fc=dg;function mg(n){return function(){return n}}var Vc=mg;var fg=function(){try{var n=ut(Object,"defineProperty");return n({},"",{}),n}catch{}}(),_o=fg;var hg=_o?function(n,t){return _o(n,"toString",{configurable:!0,enumerable:!1,value:Vc(t),writable:!0})}:Di,zc=hg;var gg=Fc(zc),Ri=gg;function yg(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Uc=yg;var xg=9007199254740991,vg=/^(?:0|[1-9]\d*)$/;function bg(n,t){var e=typeof n;return t=t??xg,!!t&&(e=="number"||e!="symbol"&&vg.test(n))&&n>-1&&n%1==0&&n<t}var Nr=bg;function _g(n,t,e){t=="__proto__"&&_o?_o(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var So=_g;function Sg(n,t){return n===t||n!==n&&t!==t}var Lr=Sg;var wg=Object.prototype,Tg=wg.hasOwnProperty;function Ag(n,t,e){var r=n[t];(!(Tg.call(n,t)&&Lr(r,e))||e===void 0&&!(t in n))&&So(n,t,e)}var wo=Ag;function Cg(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var a=t[i],c=r?r(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?So(e,a,c):wo(e,a,c)}return e}var St=Cg;var kc=Math.max;function Ng(n,t,e){return t=kc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=kc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Rc(n,this,a)}}var Fi=Ng;function Lg(n,t){return Ri(Fi(n,t,Di),n+"")}var jc=Lg;var Og=9007199254740991;function Pg(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Og}var To=Pg;function Ig(n){return n!=null&&To(n.length)&&!bo(n)}var Or=Ig;function Mg(n,t,e){if(!ze(e))return!1;var r=typeof t;return(r=="number"?Or(e)&&Nr(t,e.length):r=="string"&&t in e)?Lr(e[t],n):!1}var Hc=Mg;function Dg(n){return jc(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&Hc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var a=e[r];a&&n(t,a,r,i)}return t})}var Wc=Dg;var Bg=Object.prototype;function Eg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Bg;return n===e}var Ao=Eg;function Gg(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var qc=Gg;var Rg="[object Arguments]";function Fg(n){return et(n)&&yt(n)==Rg}var Aa=Fg;var $c=Object.prototype,Vg=$c.hasOwnProperty,zg=$c.propertyIsEnumerable,Ug=Aa(function(){return arguments}())?Aa:function(n){return et(n)&&Vg.call(n,"callee")&&!zg.call(n,"callee")},hr=Ug;function kg(){return!1}var Xc=kg;var Qc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Yc=Qc&&typeof module=="object"&&module&&!module.nodeType&&module,jg=Yc&&Yc.exports===Qc,Kc=jg?Fe.Buffer:void 0,Hg=Kc?Kc.isBuffer:void 0,Wg=Hg||Xc,Co=Wg;var qg="[object Arguments]",$g="[object Array]",Xg="[object Boolean]",Yg="[object Date]",Kg="[object Error]",Qg="[object Function]",Zg="[object Map]",Jg="[object Number]",ey="[object Object]",ty="[object RegExp]",ry="[object Set]",oy="[object String]",ny="[object WeakMap]",iy="[object ArrayBuffer]",sy="[object DataView]",ay="[object Float32Array]",ly="[object Float64Array]",cy="[object Int8Array]",uy="[object Int16Array]",py="[object Int32Array]",dy="[object Uint8Array]",my="[object Uint8ClampedArray]",fy="[object Uint16Array]",hy="[object Uint32Array]",Ne={};Ne[ay]=Ne[ly]=Ne[cy]=Ne[uy]=Ne[py]=Ne[dy]=Ne[my]=Ne[fy]=Ne[hy]=!0;Ne[qg]=Ne[$g]=Ne[iy]=Ne[Xg]=Ne[sy]=Ne[Yg]=Ne[Kg]=Ne[Qg]=Ne[Zg]=Ne[Jg]=Ne[ey]=Ne[ty]=Ne[ry]=Ne[oy]=Ne[ny]=!1;function gy(n){return et(n)&&To(n.length)&&!!Ne[yt(n)]}var Zc=gy;function yy(n){return function(t){return n(t)}}var No=yy;var Jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,On=Jc&&typeof module=="object"&&module&&!module.nodeType&&module,xy=On&&On.exports===Jc,Ca=xy&&Ii.process,vy=function(){try{var n=On&&On.require&&On.require("util").types;return n||Ca&&Ca.binding&&Ca.binding("util")}catch{}}(),gr=vy;var eu=gr&&gr.isTypedArray,by=eu?No(eu):Zc,Vi=by;var _y=Object.prototype,Sy=_y.hasOwnProperty;function wy(n,t){var e=Me(n),r=!e&&hr(n),o=!e&&!r&&Co(n),i=!e&&!r&&!o&&Vi(n),s=e||r||o||i,a=s?qc(n.length,String):[],c=a.length;for(var p in n)(t||Sy.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Nr(p,c)))&&a.push(p);return a}var zi=wy;function Ty(n,t){return function(e){return n(t(e))}}var Ui=Ty;var Ay=Ui(Object.keys,Object),tu=Ay;var Cy=Object.prototype,Ny=Cy.hasOwnProperty;function Ly(n){if(!Ao(n))return tu(n);var t=[];for(var e in Object(n))Ny.call(n,e)&&e!="constructor"&&t.push(e);return t}var ru=Ly;function Oy(n){return Or(n)?zi(n):ru(n)}var Lo=Oy;function Py(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var ou=Py;var Iy=Object.prototype,My=Iy.hasOwnProperty;function Dy(n){if(!ze(n))return ou(n);var t=Ao(n),e=[];for(var r in n)r=="constructor"&&(t||!My.call(n,r))||e.push(r);return e}var nu=Dy;function By(n){return Or(n)?zi(n,!0):nu(n)}var jt=By;var Ey=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Gy=/^\w*$/;function Ry(n,t){if(Me(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||vo(n)?!0:Gy.test(n)||!Ey.test(n)||t!=null&&n in Object(t)}var iu=Ry;var Fy=ut(Object,"create"),yr=Fy;function Vy(){this.__data__=yr?yr(null):{},this.size=0}var su=Vy;function zy(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var au=zy;var Uy="__lodash_hash_undefined__",ky=Object.prototype,jy=ky.hasOwnProperty;function Hy(n){var t=this.__data__;if(yr){var e=t[n];return e===Uy?void 0:e}return jy.call(t,n)?t[n]:void 0}var lu=Hy;var Wy=Object.prototype,qy=Wy.hasOwnProperty;function $y(n){var t=this.__data__;return yr?t[n]!==void 0:qy.call(t,n)}var cu=$y;var Xy="__lodash_hash_undefined__";function Yy(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=yr&&t===void 0?Xy:t,this}var uu=Yy;function Oo(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])}}Oo.prototype.clear=su;Oo.prototype.delete=au;Oo.prototype.get=lu;Oo.prototype.has=cu;Oo.prototype.set=uu;var Na=Oo;function Ky(){this.__data__=[],this.size=0}var pu=Ky;function Qy(n,t){for(var e=n.length;e--;)if(Lr(n[e][0],t))return e;return-1}var Pr=Qy;var Zy=Array.prototype,Jy=Zy.splice;function e0(n){var t=this.__data__,e=Pr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Jy.call(t,e,1),--this.size,!0}var du=e0;function t0(n){var t=this.__data__,e=Pr(t,n);return e<0?void 0:t[e][1]}var mu=t0;function r0(n){return Pr(this.__data__,n)>-1}var fu=r0;function o0(n,t){var e=this.__data__,r=Pr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var hu=o0;function Po(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])}}Po.prototype.clear=pu;Po.prototype.delete=du;Po.prototype.get=mu;Po.prototype.has=fu;Po.prototype.set=hu;var Ir=Po;var n0=ut(Fe,"Map"),Mr=n0;function i0(){this.size=0,this.__data__={hash:new Na,map:new(Mr||Ir),string:new Na}}var gu=i0;function s0(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var yu=s0;function a0(n,t){var e=n.__data__;return yu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Dr=a0;function l0(n){var t=Dr(this,n).delete(n);return this.size-=t?1:0,t}var xu=l0;function c0(n){return Dr(this,n).get(n)}var vu=c0;function u0(n){return Dr(this,n).has(n)}var bu=u0;function p0(n,t){var e=Dr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var _u=p0;function Io(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])}}Io.prototype.clear=gu;Io.prototype.delete=xu;Io.prototype.get=vu;Io.prototype.has=bu;Io.prototype.set=_u;var Pn=Io;var d0="Expected a function";function La(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(d0);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 s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(La.Cache||Pn),e}La.Cache=Pn;var Su=La;var m0=500;function f0(n){var t=Su(n,function(r){return e.size===m0&&e.clear(),r}),e=t.cache;return t}var wu=f0;var h0=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,g0=/\\(\\)?/g,y0=wu(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(h0,function(e,r,o,i){t.push(o?i.replace(g0,"$1"):r||e)}),t}),Tu=y0;function x0(n){return n==null?"":Pc(n)}var Au=x0;function v0(n,t){return Me(n)?n:iu(n,t)?[n]:Tu(Au(n))}var wt=v0;var b0=1/0;function _0(n){if(typeof n=="string"||vo(n))return n;var t=n+"";return t=="0"&&1/n==-b0?"-0":t}var Br=_0;function S0(n,t){t=wt(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Br(t[e++])];return e&&e==r?n:void 0}var ki=S0;function w0(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Mo=w0;var Cu=nt?nt.isConcatSpreadable:void 0;function T0(n){return Me(n)||hr(n)||!!(Cu&&n&&n[Cu])}var Nu=T0;function Lu(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Nu),o||(o=[]);++i<s;){var a=n[i];t>0&&e(a)?t>1?Lu(a,t-1,e,r,o):Mo(o,a):r||(o[o.length]=a)}return o}var Ou=Lu;function A0(n){var t=n==null?0:n.length;return t?Ou(n,1):[]}var Pu=A0;function C0(n){return Ri(Fi(n,void 0,Pu),n+"")}var ji=C0;var N0=Ui(Object.getPrototypeOf,Object),Do=N0;var L0="[object Object]",O0=Function.prototype,P0=Object.prototype,Iu=O0.toString,I0=P0.hasOwnProperty,M0=Iu.call(Object);function D0(n){if(!et(n)||yt(n)!=L0)return!1;var t=Do(n);if(t===null)return!0;var e=I0.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Iu.call(e)==M0}var Hi=D0;function B0(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 Mu=B0;function E0(){this.__data__=new Ir,this.size=0}var Du=E0;function G0(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Bu=G0;function R0(n){return this.__data__.get(n)}var Eu=R0;function F0(n){return this.__data__.has(n)}var Gu=F0;var V0=200;function z0(n,t){var e=this.__data__;if(e instanceof Ir){var r=e.__data__;if(!Mr||r.length<V0-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Pn(r)}return e.set(n,t),this.size=e.size,this}var Ru=z0;function Bo(n){var t=this.__data__=new Ir(n);this.size=t.size}Bo.prototype.clear=Du;Bo.prototype.delete=Bu;Bo.prototype.get=Eu;Bo.prototype.has=Gu;Bo.prototype.set=Ru;var Wi=Bo;function U0(n,t){return n&&St(t,Lo(t),n)}var Fu=U0;function k0(n,t){return n&&St(t,jt(t),n)}var Vu=k0;var ju=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zu=ju&&typeof module=="object"&&module&&!module.nodeType&&module,j0=zu&&zu.exports===ju,Uu=j0?Fe.Buffer:void 0,ku=Uu?Uu.allocUnsafe:void 0;function H0(n,t){if(t)return n.slice();var e=n.length,r=ku?ku(e):new n.constructor(e);return n.copy(r),r}var qi=H0;function W0(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var Hu=W0;function q0(){return[]}var $i=q0;var $0=Object.prototype,X0=$0.propertyIsEnumerable,Wu=Object.getOwnPropertySymbols,Y0=Wu?function(n){return n==null?[]:(n=Object(n),Hu(Wu(n),function(t){return X0.call(n,t)}))}:$i,Eo=Y0;function K0(n,t){return St(n,Eo(n),t)}var qu=K0;var Q0=Object.getOwnPropertySymbols,Z0=Q0?function(n){for(var t=[];n;)Mo(t,Eo(n)),n=Do(n);return t}:$i,Xi=Z0;function J0(n,t){return St(n,Xi(n),t)}var $u=J0;function ex(n,t,e){var r=t(n);return Me(n)?r:Mo(r,e(n))}var Yi=ex;function tx(n){return Yi(n,Lo,Eo)}var Xu=tx;function rx(n){return Yi(n,jt,Xi)}var Ki=rx;var ox=ut(Fe,"DataView"),Qi=ox;var nx=ut(Fe,"Promise"),Zi=nx;var ix=ut(Fe,"Set"),Ji=ix;var Yu="[object Map]",sx="[object Object]",Ku="[object Promise]",Qu="[object Set]",Zu="[object WeakMap]",Ju="[object DataView]",ax=fr(Qi),lx=fr(Mr),cx=fr(Zi),ux=fr(Ji),px=fr(Ei),Jr=yt;(Qi&&Jr(new Qi(new ArrayBuffer(1)))!=Ju||Mr&&Jr(new Mr)!=Yu||Zi&&Jr(Zi.resolve())!=Ku||Ji&&Jr(new Ji)!=Qu||Ei&&Jr(new Ei)!=Zu)&&(Jr=function(n){var t=yt(n),e=t==sx?n.constructor:void 0,r=e?fr(e):"";if(r)switch(r){case ax:return Ju;case lx:return Yu;case cx:return Ku;case ux:return Qu;case px:return Zu}return t});var Go=Jr;var dx=Object.prototype,mx=dx.hasOwnProperty;function fx(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&mx.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var ep=fx;var hx=Fe.Uint8Array,Oa=hx;function gx(n){var t=new n.constructor(n.byteLength);return new Oa(t).set(new Oa(n)),t}var Ro=gx;function yx(n,t){var e=t?Ro(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var tp=yx;var xx=/\w*$/;function vx(n){var t=new n.constructor(n.source,xx.exec(n));return t.lastIndex=n.lastIndex,t}var rp=vx;var op=nt?nt.prototype:void 0,np=op?op.valueOf:void 0;function bx(n){return np?Object(np.call(n)):{}}var ip=bx;function _x(n,t){var e=t?Ro(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var es=_x;var Sx="[object Boolean]",wx="[object Date]",Tx="[object Map]",Ax="[object Number]",Cx="[object RegExp]",Nx="[object Set]",Lx="[object String]",Ox="[object Symbol]",Px="[object ArrayBuffer]",Ix="[object DataView]",Mx="[object Float32Array]",Dx="[object Float64Array]",Bx="[object Int8Array]",Ex="[object Int16Array]",Gx="[object Int32Array]",Rx="[object Uint8Array]",Fx="[object Uint8ClampedArray]",Vx="[object Uint16Array]",zx="[object Uint32Array]";function Ux(n,t,e){var r=n.constructor;switch(t){case Px:return Ro(n);case Sx:case wx:return new r(+n);case Ix:return tp(n,e);case Mx:case Dx:case Bx:case Ex:case Gx:case Rx:case Fx:case Vx:case zx:return es(n,e);case Tx:return new r;case Ax:case Lx:return new r(n);case Cx:return rp(n);case Nx:return new r;case Ox:return ip(n)}}var sp=Ux;function kx(n){return typeof n.constructor=="function"&&!Ao(n)?Gc(Do(n)):{}}var ts=kx;var jx="[object Map]";function Hx(n){return et(n)&&Go(n)==jx}var ap=Hx;var lp=gr&&gr.isMap,Wx=lp?No(lp):ap,cp=Wx;var qx="[object Set]";function $x(n){return et(n)&&Go(n)==qx}var up=$x;var pp=gr&&gr.isSet,Xx=pp?No(pp):up,dp=Xx;var Yx=1,Kx=2,Qx=4,mp="[object Arguments]",Zx="[object Array]",Jx="[object Boolean]",ev="[object Date]",tv="[object Error]",fp="[object Function]",rv="[object GeneratorFunction]",ov="[object Map]",nv="[object Number]",hp="[object Object]",iv="[object RegExp]",sv="[object Set]",av="[object String]",lv="[object Symbol]",cv="[object WeakMap]",uv="[object ArrayBuffer]",pv="[object DataView]",dv="[object Float32Array]",mv="[object Float64Array]",fv="[object Int8Array]",hv="[object Int16Array]",gv="[object Int32Array]",yv="[object Uint8Array]",xv="[object Uint8ClampedArray]",vv="[object Uint16Array]",bv="[object Uint32Array]",Ce={};Ce[mp]=Ce[Zx]=Ce[uv]=Ce[pv]=Ce[Jx]=Ce[ev]=Ce[dv]=Ce[mv]=Ce[fv]=Ce[hv]=Ce[gv]=Ce[ov]=Ce[nv]=Ce[hp]=Ce[iv]=Ce[sv]=Ce[av]=Ce[lv]=Ce[yv]=Ce[xv]=Ce[vv]=Ce[bv]=!0;Ce[tv]=Ce[fp]=Ce[cv]=!1;function rs(n,t,e,r,o,i){var s,a=t&Yx,c=t&Kx,p=t&Qx;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!ze(n))return n;var l=Me(n);if(l){if(s=ep(n),!a)return Gi(n,s)}else{var u=Go(n),d=u==fp||u==rv;if(Co(n))return qi(n,a);if(u==hp||u==mp||d&&!o){if(s=c||d?{}:ts(n),!a)return c?$u(n,Vu(s,n)):qu(n,Fu(s,n))}else{if(!Ce[u])return o?n:{};s=sp(n,u,a)}}i||(i=new Wi);var m=i.get(n);if(m)return m;i.set(n,s),dp(n)?n.forEach(function(g){s.add(rs(g,t,e,g,n,i))}):cp(n)&&n.forEach(function(g,x){s.set(x,rs(g,t,e,x,n,i))});var f=p?c?Ki:Xu:c?jt:Lo,h=l?void 0:f(n);return Uc(h||n,function(g,x){h&&(x=g,g=n[x]),wo(s,x,rs(g,t,e,x,n,i))}),s}var os=rs;var _v=1,Sv=4;function wv(n){return os(n,_v|Sv)}var In=wv;function Tv(n,t){return n!=null&&t in Object(n)}var gp=Tv;function Av(n,t,e){t=wt(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Br(t[r]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&To(o)&&Nr(s,o)&&(Me(n)||hr(n)))}var yp=Av;function Cv(n,t){return n!=null&&yp(n,t,gp)}var xp=Cv;function Nv(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),a=s.length;a--;){var c=s[n?a:++o];if(e(i[c],c,i)===!1)break}return t}}var vp=Nv;var Lv=vp(),bp=Lv;function Ov(n,t,e){(e!==void 0&&!Lr(n[t],e)||e===void 0&&!(t in n))&&So(n,t,e)}var Mn=Ov;function Pv(n){return et(n)&&Or(n)}var _p=Pv;function Iv(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Dn=Iv;function Mv(n){return St(n,jt(n))}var Sp=Mv;function Dv(n,t,e,r,o,i,s){var a=Dn(n,e),c=Dn(t,e),p=s.get(c);if(p){Mn(n,e,p);return}var l=i?i(a,c,e+"",n,t,s):void 0,u=l===void 0;if(u){var d=Me(c),m=!d&&Co(c),f=!d&&!m&&Vi(c);l=c,d||m||f?Me(a)?l=a:_p(a)?l=Gi(a):m?(u=!1,l=qi(c,!0)):f?(u=!1,l=es(c,!0)):l=[]:Hi(c)||hr(c)?(l=a,hr(a)?l=Sp(a):(!ze(a)||bo(a))&&(l=ts(c))):u=!1}u&&(s.set(c,l),o(l,c,r,i,s),s.delete(c)),Mn(n,e,l)}var wp=Dv;function Tp(n,t,e,r,o){n!==t&&bp(t,function(i,s){if(o||(o=new Wi),ze(i))wp(n,t,s,e,Tp,r,o);else{var a=r?r(Dn(n,s),i,s+"",n,t,o):void 0;a===void 0&&(a=i),Mn(n,s,a)}},jt)}var Ap=Tp;function Bv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Cp=Bv;function Ev(n,t){return t.length<2?n:ki(n,Mu(t,0,-1))}var Np=Ev;var Gv=Wc(function(n,t,e){Ap(n,t,e)}),eo=Gv;function Rv(n,t){return t=wt(t,n),n=Np(n,t),n==null||delete n[Br(Cp(t))]}var Lp=Rv;function Fv(n){return Hi(n)?void 0:n}var Op=Fv;var Vv=1,zv=2,Uv=4,kv=ji(function(n,t){var e={};if(n==null)return e;var r=!1;t=Mi(t,function(i){return i=wt(i,n),r||(r=i.length>1),i}),St(n,Ki(n),e),r&&(e=os(e,Vv|zv|Uv,Op));for(var o=t.length;o--;)Lp(e,t[o]);return e}),Fo=kv;function jv(n,t,e,r){if(!ze(n))return n;t=wt(t,n);for(var o=-1,i=t.length,s=i-1,a=n;a!=null&&++o<i;){var c=Br(t[o]),p=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var l=a[c];p=r?r(l,c,a):void 0,p===void 0&&(p=ze(l)?l:Nr(t[o+1])?[]:{})}wo(a,c,p),a=a[c]}return n}var Pp=jv;function Hv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],a=ki(n,s);e(a,s)&&Pp(i,wt(s,n),a)}return i}var Ip=Hv;function Wv(n,t){return Ip(n,t,function(e,r){return xp(n,r)})}var Mp=Wv;var qv=ji(function(n,t){return n==null?{}:Mp(n,t)}),Pa=qv;var Vo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Vo||(Vo={}));var to;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,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})(to||(to={}));var Dp;(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})(Dp||(Dp={}));var zo;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,a){return[i[0]+(s[0]-i[0])*a,i[1]+(s[1]-i[1])*a,i[2]+(s[2]-i[2])*a]}o.lerp=r})(zo||(zo={}));var Bp;(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})(Bp||(Bp={}));var Er;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,s){let a=s.slice(0);for(var c=0,p=s.length;c<p;c+=3){let l=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];a[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/l,a[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/l,a[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/l}return a}o.applyMatrix4=r})(Er||(Er={}));var xt;(c=>{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 r(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:1}}c.toRgb255a1=r;function o(p){return{r:p.r,g:p.g,b:p.b}}c.clone=o;function i(p){return p=Math.floor(p),{r:(p>>16&255)/255,g:(p>>8&255)/255,b:(p&255)/255}}c.fromHex=i;function s(p,l){return p.r===l.r&&p.g===l.g&&p.b===l.b}c.equals=s;function a(p,l,u){return{r:p.r+(l.r-p.r)*u,g:p.g+(l.g-p.g)*u,b:p.b+(l.b-p.b)*u}}c.lerp=a})(xt||(xt={}));var vt;(s=>{s.white={...xt.white,a:1};function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,c){return{...xt.fromHex(a),a:c}}s.fromHexAndA=e;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=r;function o(a,c){return xt.equals(a,c)&&a.a===c.a}s.equals=o;function i(a,c,p){return{r:a.r+(c.r-a.r)*p,g:a.g+(c.g-a.g)*p,b:a.b+(c.b-a.b)*p,a:a.a+(c.a-a.a)*p}}s.lerp=i})(vt||(vt={}));var ns;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ns||(ns={}));var Ep;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ep||(Ep={}));var Gp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Gp||(Gp={}));var is;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(is||(is={}));var Oe=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,Oe.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:s}=t,a={...e,[i]:s};return Object.setPrototypeOf(a,Oe.prototype),{data:a,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,Oe.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Bn(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"&&Bn(r)}return Object.freeze(n)}function Rp(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 ss=class extends Error{};function Ht(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 s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function as(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 Fp(){return typeof process<"u"}function Vp(n,t){for(let e of n)t(e.id,e.data),Vp(e.children,t)}function zp(n,t){t(n.id,n.data);for(let e of n.children)zp(e,t)}var Tt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Tt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Bn(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)]}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&&zp(o,r)}}traverse(e){Vp(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),s=this.childrenArray(i),a=s.findIndex(l=>l.id===e);if(a<0)throw new Error("not expected");let c=s[a];return s=[...s],s[a]={...c,data:r},this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let a=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let p=i.findIndex(l=>l.id===c);if(p<0)throw new Error;i=[...i],i[p]={...i[p],children:a}}Object.setPrototypeOf(i,Tt.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}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:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),l={fi:o,id:i,data:s,children:a};return p=[...p,l],p.sort((d,m)=>d.fi-m.fi),e.localIndex=p.indexOf(l),{data:this.modifyArrayBy(c,p),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),s=i.findIndex(p=>p.id===r);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...a,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 m=r;for(;m!==null;){if(m===void 0)throw new Error;if(m===i)throw new ss("cyclic tree");m=this.parent(m)}}let s=this.parent(i);if(s===void 0)return null;let a=s,c=this.childrenArray(s),p=c.findIndex(m=>m.id===i);c=[...c];let l=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((m,f)=>m.fi-f.fi),e.localIndex=c.indexOf(l),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:a,fi:d,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(s=>s.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(s=>s.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)=>Rp(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),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...s,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 Ht(0,o,o);{let s=i[0].fi;return Ht(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=i.find(c=>c.fi>s.fi);if(a===void 0){let c=i[i.length-1].fi;return Ht(c,c+o,o)}else return Ht(s.fi,a.fi,o)}}};var ls;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],a=!1;if(o)for(let c of Object.keys(o)){let p=parseInt(c);if(isNaN(p))throw new Error("wrong index");i[c]=s[p],s[p]=o[c],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s={...e},a=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let p=o[c];p===void 0?delete s[c]:s[c]=p,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(ls||(ls={}));var Pe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Pe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Bn(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,s=i.findIndex(p=>p.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]={...a,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Pe.prototype);let r=e;return Fp()||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)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,a={fi:r,id:o,data:i};return s=[...s,a],s.sort((p,l)=>p.fi-l.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(c=>c.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let s=i.findIndex(l=>l.id===o);if(s===-1)return null;let a=i[s].fi,c={...i[s],fi:r};return i[s]=c,i.sort((l,u)=>l.fi-u.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,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 Ht(0,r,r);{let i=o[0].fi;return Ht(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return Ht(a,a+r,r)}else return Ht(i.fi,s.fi,r)}}};var Up=Symbol(),us=Symbol(),Uo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof cs);){let i=r._path,s=r._current;if(i!==""&&o.splice(0,0,i),r=r._parent,r===null)return;r.update(i,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[us];r&&r(),delete this._children[t]}}}},Ma=class extends Uo{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,ls.runOp(this._current,t))}},Da=class extends Uo{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,Oe.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},kp={get(n,t){if(t===us)return()=>{n._parent=null};if(t===Up)return n._current;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],s=ps(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):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]}}},$v={...kp,set(n,t,e){let r={type:0,props:{[t]:Gr(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}},Xv={...kp,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}},ko=class extends Uo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[us]=()=>{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,s=ps(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):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 s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}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)}},jo=class extends Uo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[us]=()=>{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;t(this.data(this._current[r].id),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,s=ps(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):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 Ia(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&ds.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var cs=class{constructor(t){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){Ia(this.ts,e,t),Ia(this.actual,r,t),Ia(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ps(n,t,e){return e instanceof Tt?new ko(n,t,e):e instanceof Pe?new jo(n,t,e):e instanceof Oe?new Proxy(new Da(n,t,e),Xv):e!==null&&typeof e=="object"?as(e)?e:new Proxy(new Ma(n,t,e),$v):e}function Ba(n){let t=new cs(n);return[ps(t,"",n),t]}function Ea(n,t){let[e,r]=Ba(n);return t(e),r.result()}function Gr(n){return n instanceof ko||n instanceof jo?n._current:n!==null&&typeof n=="object"?n[Up]:n}var ds;(r=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(o,i,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let c={...i};return Object.keys(a).forEach(p=>{delete c[p]}),c}else return i}r.removeOverridden=t;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof Tt||o instanceof ko)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Pe||o instanceof jo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}r.zoom=e})(ds||(ds={}));var ms=class{},En=class extends ms{constructor(e){super();this.id=e}},Gn=class extends ms{constructor(e){super();this.data=e}};var Ra;try{Ra=new TextDecoder}catch{}var te,Fr,w=0;var Kp=[],Fa=Kp,Va=0,pt={},xe,Rr,At=0,Wt=0,bt,xr,it=[],we,jp={useRecords:!1,mapsAsObjects:!0},Rn=class{},Ua=new Rn;Ua.name="MessagePack 0xC1";var Ho=!1,qt=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(te)return td(()=>(hs(),this?this.unpack(t,e):qt.prototype.unpack.call(jp,t,e)));Fr=e>-1?e:t.length,w=0,Va=0,Wt=0,Rr=null,Fa=Kp,bt=null,te=t;try{we=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=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 qt){if(pt=this,this.structures)return xe=this.structures,fs();(!xe||xe.length>0)&&(xe=[])}else pt=jp,(!xe||xe.length>0)&&(xe=[]);return fs()}unpackMultiple(t,e){let r,o=0;try{Ho=!0;let i=t.length,s=this?this.unpack(t,i):xs.unpack(t,i);if(e){for(e(s);w<i;)if(o=w,e(fs())===!1)return}else{for(r=[s];w<i;)o=w,r.push(fs());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Ho=!1,hs()}}_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 fs(){try{if(!pt.trusted&&!Ho){let t=xe.sharedLength||0;t<xe.length&&(xe.length=t)}let n=De();if(w==Fr)xe.restoreStructures&&Hp(),xe=null,te=null,xr&&(xr=null);else if(w>Fr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ho)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw xe.restoreStructures&&Hp(),hs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Hp(){for(let n in xe.restoreStructures)xe[n]=xe.restoreStructures[n];xe.restoreStructures=null}function De(){let n=te[w++];if(n<160)if(n<128){if(n<64)return n;{let t=xe[n&63]||pt.getStructures&&Qp()[n&63];return t?(t.read||(t.read=ka(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,pt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Jp()]=De();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(De(),De());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=De();return t}else if(n<192){let t=n-160;if(Wt>=w)return Rr.slice(w-At,(w+=t)-At);if(Wt==0&&Fr<140){let e=t<16?ja(t):Zp(t);if(e!=null)return e}return za(t)}else{let t;switch(n){case 192:return null;case 193:return bt?(t=De(),t>0?bt[1].slice(bt.position1,bt.position1+=t):bt[0].slice(bt.position0,bt.position0-=t)):Ua;case 194:return!1;case 195:return!0;case 196:return Ga(te[w++]);case 197:return t=we.getUint16(w),w+=2,Ga(t);case 198:return t=we.getUint32(w),w+=4,Ga(t);case 199:return ro(te[w++]);case 200:return t=we.getUint16(w),w+=2,ro(t);case 201:return t=we.getUint32(w),w+=4,ro(t);case 202:if(t=we.getFloat32(w),pt.useFloat32>2){let e=ys[(te[w]&127)<<1|te[w+1]>>7];return w+=4,(e*t+(t>0?.5:-.5)>>0)/e}return w+=4,t;case 203:return t=we.getFloat64(w),w+=8,t;case 204:return te[w++];case 205:return t=we.getUint16(w),w+=2,t;case 206:return t=we.getUint32(w),w+=4,t;case 207:return pt.int64AsNumber?(t=we.getUint32(w)*4294967296,t+=we.getUint32(w+4)):t=we.getBigUint64(w),w+=8,t;case 208:return we.getInt8(w++);case 209:return t=we.getInt16(w),w+=2,t;case 210:return t=we.getInt32(w),w+=4,t;case 211:return pt.int64AsNumber?(t=we.getInt32(w)*4294967296,t+=we.getUint32(w+4)):t=we.getBigInt64(w),w+=8,t;case 212:if(t=te[w++],t==114)return Yp(te[w++]&63);{let e=it[t];if(e)return e.read?(w++,e.read(De())):e.noBuffer?(w++,e()):e(te.subarray(w,++w));throw new Error("Unknown extension "+t)}case 213:return t=te[w],t==114?(w++,Yp(te[w++]&63,te[w++])):ro(2);case 214:return ro(4);case 215:return ro(8);case 216:return ro(16);case 217:return t=te[w++],Wt>=w?Rr.slice(w-At,(w+=t)-At):Kv(t);case 218:return t=we.getUint16(w),w+=2,Wt>=w?Rr.slice(w-At,(w+=t)-At):Qv(t);case 219:return t=we.getUint32(w),w+=4,Wt>=w?Rr.slice(w-At,(w+=t)-At):Zv(t);case 220:return t=we.getUint16(w),w+=2,qp(t);case 221:return t=we.getUint32(w),w+=4,qp(t);case 222:return t=we.getUint16(w),w+=2,$p(t);case 223:return t=we.getUint32(w),w+=4,$p(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 Yv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ka(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Yv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(De);return n.highByte===0&&(n.read=Wp(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=De()}return r}return e.count=0,n.highByte===0?Wp(t,e):e}var Wp=(n,t)=>function(){let e=te[w++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=xe[r]||Qp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=ka(o,n)),o.read()};function Qp(){let n=td(()=>(te=null,pt.getStructures()));return xe=pt._mergeStructures(n,xe)}var za=gs,Kv=gs,Qv=gs,Zv=gs;function gs(n){let t;if(n<16&&(t=ja(n)))return t;if(n>64&&Ra)return Ra.decode(te.subarray(w,w+=n));let e=w+n,r=[];for(t="";w<e;){let o=te[w++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=te[w++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=te[w++]&63,s=te[w++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=te[w++]&63,s=te[w++]&63,a=te[w++]&63,c=(o&7)<<18|i<<12|s<<6|a;c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|c&1023),r.push(c)}else r.push(o);r.length>=4096&&(t+=$e.apply(String,r),r.length=0)}return r.length>0&&(t+=$e.apply(String,r)),t}function qp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=De();return t}function $p(n){if(pt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Jp()]=De();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(De(),De());return t}}var $e=String.fromCharCode;function Zp(n){let t=w,e=new Array(n);for(let r=0;r<n;r++){let o=te[w++];if((o&128)>0){w=t;return}e[r]=o}return $e.apply(String,e)}function ja(n){if(n<4)if(n<2){if(n===0)return"";{let t=te[w++];if((t&128)>1){w-=1;return}return $e(t)}}else{let t=te[w++],e=te[w++];if((t&128)>0||(e&128)>0){w-=2;return}if(n<3)return $e(t,e);let r=te[w++];if((r&128)>0){w-=3;return}return $e(t,e,r)}else{let t=te[w++],e=te[w++],r=te[w++],o=te[w++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){w-=4;return}if(n<6){if(n===4)return $e(t,e,r,o);{let i=te[w++];if((i&128)>0){w-=5;return}return $e(t,e,r,o,i)}}else if(n<8){let i=te[w++],s=te[w++];if((i&128)>0||(s&128)>0){w-=6;return}if(n<7)return $e(t,e,r,o,i,s);let a=te[w++];if((a&128)>0){w-=7;return}return $e(t,e,r,o,i,s,a)}else{let i=te[w++],s=te[w++],a=te[w++],c=te[w++];if((i&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){w-=8;return}if(n<10){if(n===8)return $e(t,e,r,o,i,s,a,c);{let p=te[w++];if((p&128)>0){w-=9;return}return $e(t,e,r,o,i,s,a,c,p)}}else if(n<12){let p=te[w++],l=te[w++];if((p&128)>0||(l&128)>0){w-=10;return}if(n<11)return $e(t,e,r,o,i,s,a,c,p,l);let u=te[w++];if((u&128)>0){w-=11;return}return $e(t,e,r,o,i,s,a,c,p,l,u)}else{let p=te[w++],l=te[w++],u=te[w++],d=te[w++];if((p&128)>0||(l&128)>0||(u&128)>0||(d&128)>0){w-=12;return}if(n<14){if(n===12)return $e(t,e,r,o,i,s,a,c,p,l,u,d);{let m=te[w++];if((m&128)>0){w-=13;return}return $e(t,e,r,o,i,s,a,c,p,l,u,d,m)}}else{let m=te[w++],f=te[w++];if((m&128)>0||(f&128)>0){w-=14;return}if(n<15)return $e(t,e,r,o,i,s,a,c,p,l,u,d,m,f);let h=te[w++];if((h&128)>0){w-=15;return}return $e(t,e,r,o,i,s,a,c,p,l,u,d,m,f,h)}}}}}function Ga(n){return pt.copyBuffers?Uint8Array.prototype.slice.call(te,w,w+=n):te.subarray(w,w+=n)}function ro(n){let t=te[w++];if(it[t])return it[t](te.subarray(w,w+=n));throw new Error("Unknown extension type "+t)}var Xp=new Array(4096);function Jp(){let n=te[w++];if(n>=160&&n<192){if(n=n-160,Wt>=w)return Rr.slice(w-At,(w+=n)-At);if(!(Wt==0&&Fr<180))return za(n)}else return w--,De();let t=(n<<5^(n>1?we.getUint16(w):n>0?te[w]:0))&4095,e=Xp[t],r=w,o=w+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=we.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=te[r++],i!=e[s++]){r=1879048192;break}if(r===o)return w=r,e.string;o-=3,r=w}for(e=[],Xp[t]=e,e.bytes=n;r<o;)i=we.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=te[r++],e.push(i);let a=n<16?ja(n):Zp(n);return a!=null?e.string=a:e.string=za(n)}var Yp=(n,t)=>{var e=De();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=xe[n];return o&&o.isShared&&((xe.restoreStructures||(xe.restoreStructures=[]))[n]=o),xe[n]=e,e.read=ka(e,r),e.read()},ed=typeof self=="object"?self:global;it[0]=()=>{};it[0].noBuffer=!0;it[101]=()=>{let n=De();return(ed[n[0]]||Error)(n[1])};it[105]=n=>{let t=we.getUint32(w-4);xr||(xr=new Map);let e=te[w],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};xr.set(t,o);let i=De();return o.used?Object.assign(r,i):(o.target=i,i)};it[112]=n=>{let t=we.getUint32(w-4),e=xr.get(t);return e.used=!0,e.target};it[115]=()=>new Set(De());var Ha=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");it[116]=n=>{let t=n[0],e=Ha[t];if(!e)throw new Error("Could not find typed array for code "+t);return new ed[e](Uint8Array.prototype.slice.call(n,1).buffer)};it[120]=()=>{let n=De();return new RegExp(n[0],n[1])};it[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=w;w+=t-4,bt=[De(),De()],bt.position0=0,bt.position1=0;let r=w;w=e;try{return De()}finally{w=r}};it[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 td(n){let t=Fr,e=w,r=Va,o=At,i=Wt,s=Rr,a=Fa,c=xr,p=bt,l=new Uint8Array(te.slice(0,Fr)),u=xe,d=xe.slice(0,xe.length),m=pt,f=Ho,h=n();return Fr=t,w=e,Va=r,At=o,Wt=i,Rr=s,Fa=a,xr=c,bt=p,te=l,Ho=f,xe=u,xe.splice(0,xe.length,...d),pt=m,we=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function hs(){te=null,xr=null,xe=null}function rd(n){n.unpack?it[n.type]=n.unpack:it[n.type]=n}var ys=new Array(147);for(let n=0;n<256;n++)ys[n]=+("1e"+Math.floor(45.15-n*.30103));var xs=new qt({useRecords:!1}),Jv=xs.unpack,eb=xs.unpackMultiple,tb=xs.unpack,vs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},rb=new Float32Array(1),L3=new Uint8Array(rb.buffer,0,4);var bs;try{bs=new TextEncoder}catch{}var _s,qa,Ss=typeof Buffer<"u",Wa=Ss?Buffer.allocUnsafeSlow:Uint8Array,sd=Ss?Buffer:Uint8Array,od=Ss?4294967296:2144337920,R,Ee,L=0,$t,Xt=null,ob=/[\u0080-\uFFFF]/,Fn=Symbol("record-id"),oo=class extends qt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,a,c=0,p=sd.prototype.utf8Write?function(y,P,T){return R.utf8Write(y,P,T)}:bs&&bs.encodeInto?function(y,P){return bs.encodeInto(y,R.subarray(P)).written}:!1,l=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,m=t.maxSharedStructures;if(m==null&&(m=d?32:0),m>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=m>32||f+m>64,g=m+64,x=m+f+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,_=0;this.pack=this.encode=function(y,P){if(R||(R=new Wa(8192),Ee=new DataView(R.buffer,0,8192),L=0),$t=R.length-10,$t-L<2048?(R=new Wa(R.length),Ee=new DataView(R.buffer,0,R.length),$t=R.length-10,L=0):L=L+7&2147483640,r=L,a=l.structuredClone?new Map:null,l.bundleStrings?(Xt=["",""],R[L++]=214,R[L++]=98,Xt.position=L-r,L+=4):Xt=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let T=o.sharedLength||0;if(T>m)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 O=0;O<T;O++){let C=o[O];if(!C)continue;let N,j=o.transitions;for(let W=0,oe=C.length;W<oe;W++){let ce=C[W];N=j[ce],N||(N=j[ce]=Object.create(null)),j=N}j[Fn]=O+64}c=T}u||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(b(y),Xt){Ee.setUint32(Xt.position+r,L-Xt.position-r);let T=Xt;Xt=null,b(T[0]),b(T[1])}if(l.offset=L,a&&a.idsToInsert){L+=a.idsToInsert.length*6,L>$t&&S(L),l.offset=L;let T=ib(R.subarray(r,L),a.idsToInsert);return a=null,T}return P&ld?(R.start=r,R.end=L,R):R.subarray(r,L)}finally{if(o){if(_<10&&_++,A>1e4)o.transitions=null,_=0,A=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let T=0,O=v.length;T<O;T++)v[T][Fn]=0;v=[]}if(i&&l.saveStructures){let T=o.sharedLength||m;o.length>T&&(o=o.slice(0,T));let O=R.subarray(r,L);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(y)):(c=T,O)}}P&db&&(L=r)}};let b=y=>{L>$t&&(R=S(L));var P=typeof y,T;if(P==="string"){let O=y.length;if(Xt&&O>=8&&O<4096){let j=ob.test(y);Xt[j?0:1]+=y,R[L++]=193,b(j?-O:O);return}let C;O<32?C=1:O<256?C=2:O<65536?C=3:C=5;let N=O*3;if(L+N>$t&&(R=S(L+N)),O<64||!p){let j,W,oe,ce=L+C;for(j=0;j<O;j++)W=y.charCodeAt(j),W<128?R[ce++]=W:W<2048?(R[ce++]=W>>6|192,R[ce++]=W&63|128):(W&64512)===55296&&((oe=y.charCodeAt(j+1))&64512)===56320?(W=65536+((W&1023)<<10)+(oe&1023),j++,R[ce++]=W>>18|240,R[ce++]=W>>12&63|128,R[ce++]=W>>6&63|128,R[ce++]=W&63|128):(R[ce++]=W>>12|224,R[ce++]=W>>6&63|128,R[ce++]=W&63|128);T=ce-L-C}else T=p(y,L+C,N);T<32?R[L++]=160|T:T<256?(C<2&&R.copyWithin(L+2,L+1,L+1+T),R[L++]=217,R[L++]=T):T<65536?(C<3&&R.copyWithin(L+3,L+2,L+2+T),R[L++]=218,R[L++]=T>>8,R[L++]=T&255):(C<5&&R.copyWithin(L+5,L+3,L+3+T),R[L++]=219,Ee.setUint32(L,T),L+=4),L+=T}else if(P==="number")if(y>>>0===y)y<64?R[L++]=y:y<256?(R[L++]=204,R[L++]=y):y<65536?(R[L++]=205,R[L++]=y>>8,R[L++]=y&255):(R[L++]=206,Ee.setUint32(L,y),L+=4);else if(y>>0===y)y>=-32?R[L++]=256+y:y>=-128?(R[L++]=208,R[L++]=y+256):y>=-32768?(R[L++]=209,Ee.setInt16(L,y),L+=2):(R[L++]=210,Ee.setInt32(L,y),L+=4);else{let O;if((O=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[L++]=202,Ee.setFloat32(L,y);let C;if(O<4||(C=y*ys[(R[L]&127)<<1|R[L+1]>>7])>>0===C){L+=4;return}else L--}R[L++]=203,Ee.setFloat64(L,y),L+=8}else if(P==="object")if(!y)R[L++]=192;else{if(a){let C=a.get(y);if(C){if(!C.id){let N=a.idsToInsert||(a.idsToInsert=[]);C.id=N.push(C)}R[L++]=214,R[L++]=112,Ee.setUint32(L,C.id),L+=4;return}else a.set(y,{offset:L-r})}let O=y.constructor;if(O===Object)D(y,!0);else if(O===Array){T=y.length,T<16?R[L++]=144|T:T<65536?(R[L++]=220,R[L++]=T>>8,R[L++]=T&255):(R[L++]=221,Ee.setUint32(L,T),L+=4);for(let C=0;C<T;C++)b(y[C])}else if(O===Map){T=y.size,T<16?R[L++]=128|T:T<65536?(R[L++]=222,R[L++]=T>>8,R[L++]=T&255):(R[L++]=223,Ee.setUint32(L,T),L+=4);for(let[C,N]of y)b(C),b(N)}else{for(let C=0,N=_s.length;C<N;C++){let j=qa[C];if(y instanceof j){let W=_s[C];if(W.write){W.type&&(R[L++]=212,R[L++]=W.type,R[L++]=0),b(W.write.call(this,y));return}let oe=R,ce=Ee,ie=L;R=null;let K;try{K=W.pack.call(this,y,U=>(R=oe,oe=null,L+=U,L>$t&&S(L),{target:R,targetView:Ee,position:L-U}),b)}finally{oe&&(R=oe,Ee=ce,L=ie,$t=R.length-10)}K&&(K.length+L>$t&&S(K.length+L),L=nb(K,R,L,W.type));return}}D(y,!y.hasOwnProperty)}}else if(P==="boolean")R[L++]=y?195:194;else if(P==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[L++]=211,Ee.setBigInt64(L,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[L++]=207,Ee.setBigUint64(L,y);else if(this.largeBigIntToFloat)R[L++]=203,Ee.setFloat64(L,Number(y));else throw new RangeError(y+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");L+=8}else if(P==="undefined")this.encodeUndefinedAsNil?R[L++]=192:(R[L++]=212,R[L++]=0,R[L++]=0);else if(P==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+P)},D=this.useRecords===!1?this.variableMapSize?y=>{let P=Object.keys(y),T=P.length;T<16?R[L++]=128|T:T<65536?(R[L++]=222,R[L++]=T>>8,R[L++]=T&255):(R[L++]=223,Ee.setUint32(L,T),L+=4);let O;for(let C=0;C<T;C++)b(O=P[C]),b(y[O])}:(y,P)=>{R[L++]=222;let T=L-r;L+=2;let O=0;for(let C in y)(P||y.hasOwnProperty(C))&&(b(C),b(y[C]),O++);R[T+++r]=O>>8,R[T+r]=O&255}:y=>{let P=Object.keys(y),T,O=s.transitions||(s.transitions=Object.create(null)),C=0;for(let j=0,W=P.length;j<W;j++){let oe=P[j];T=O[oe],T||(T=O[oe]=Object.create(null),C++),O=T}let N=O[Fn];if(N)N>=96&&h?(R[L++]=((N-=96)&31)+96,R[L++]=N>>5):R[L++]=N;else{N=s.nextId,N||(N=64),N<g&&this.shouldShareStructure&&!this.shouldShareStructure(P)?(N=s.nextOwnId,N<x||(N=g),s.nextOwnId=N+1):(N>=x&&(N=g),s.nextId=N+1);let j=P.highByte=N>=96&&h?N-96>>5:-1;O[Fn]=N,s[N-64]=P,N<g?(P.isShared=!0,s.sharedLength=N-63,i=!0,j>=0?(R[L++]=(N&31)+96,R[L++]=j):R[L++]=N):(j>=0?(R[L++]=213,R[L++]=114,R[L++]=(N&31)+96,R[L++]=j):(R[L++]=212,R[L++]=114,R[L++]=N),C&&(A+=_*C),v.length>=f&&(v.shift()[Fn]=0),v.push(O),b(P))}for(let j=0,W=P.length;j<W;j++)b(y[P[j]])},S=y=>{let P;if(y>16777216){if(y-r>od)throw new Error("Packed buffer would be larger than maximum buffer size");P=Math.min(od,Math.round(Math.max((y-r)*(y>67108864?1.25:2),4194304)/4096)*4096)}else P=(Math.max(y-r<<2,R.length-1)>>12)+1<<12;let T=new Wa(P);return Ee=new DataView(T.buffer,0,P),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),L-=r,r=0,$t=T.length-10,R=T}}useBuffer(t){R=t,Ee=new DataView(R.buffer,R.byteOffset,R.byteLength),L=0}};qa=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Rn];_s=[{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:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+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?nd(n,16,t):id(Ss?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==sd&&this.structuredClone?nd(n,Ha.indexOf(e.name),t):id(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function nd(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function id(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 nb(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 ib(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let a=i+r;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function no(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)");qa.unshift(n.Class),_s.unshift(n)}rd(n)}var ad=new oo({useRecords:!1}),sb=ad.pack,ab=ad.pack;var{NEVER:lb,ALWAYS:cb,DECIMAL_ROUND:ub,DECIMAL_FIT:pb}=vs,ld=512,db=1024;var cd=new oo({structuredClone:!0});no({Class:Oe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Oe.prototype),n}});no({Class:Pe.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Pe.prototype),n}});no({Class:Tt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Tt.prototype),n}});no({Class:En.prototype.constructor,type:4,write(n){return n.id},read(n){return new En(n)}});no({Class:Gn.prototype.constructor,type:5,write(n){return n.data},read(n){return new Gn(n)}});function mb(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 $a(n){if(as(n))return n;if(Array.isArray(n))return n.map($a);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=$a(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var ws;(r=>{function n(o){return cd.pack(o)}r.serialize=n;function t(o){return cd.unpack(o)}r.deserialize=t;function e(o){return mb(n($a(o))).toString()}r.checksum=e})(ws||(ws={}));var Ts;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Ts||(Ts={}));var As;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:vt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(As||(As={}));var Xa;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Xa||(Xa={}));var Ya;(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})(Ya||(Ya={}));var Cs;(t=>t.defaultData={...Ya.defaultData,...Xa.defaultData,cloner:null,booleanExclude:null})(Cs||(Cs={}));var Ka=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(Ka||{}),Qa=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(Qa||{}),Za=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(Za||{}),Ns;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:vt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Ns||(Ns={}));var ud=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],pd=["wrapping","image"],Vr;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:xt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,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],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,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{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...xt.fromHex(6710886),a:1},colorB:{...xt.fromHex(6710886),a:1},colorC:{...xt.fromHex(16777215),a:1},colorD:{...xt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:vt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,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:vt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:vt.fromHexAndA(0,1),contourColor:vt.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{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Vr||(Vr={}));var vr;(a=>{function n(c){return!c.layers.some(l=>{if(l.data.type==="texture"&&l.data.projection!==0||l.data.type==="depth"&&!l.data.isWorldSpace||l.data.type==="noise"||l.data.type==="displace")return!0})&&!e(c)}a.isMergable=n;function t(c){let p="";return c.layers.forEach(l=>{Object.entries(l.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(m=>p+=`${m}`):typeof d=="object"?Object.values(d).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${d}`})}),p}a.getHash=t;function e(c){let p=0;for(let l of c.layers)"alpha"in l.data&&l.data.type!=="light"&&l.data.type!=="fresnel"&&(p+=(1-p)*l.data.alpha);return p<1}a.isTransparent=e;function r(){return{layers:new Pe}}a.defaultEmptyData=r;function o(c="layer1",p="layer2"){return i("phong",c,p)}a.defaultData=o;function i(c,p="layer1",l="layer2"){let u=new Pe;return u.push({fi:0,data:Vr.defaultData("light",c),id:p}),u.push({fi:1,data:Vr.defaultData("color"),id:l}),{layers:u}}a.defaultTwoLayerData=i;function s(c,p="basic",l="layer1",u="layer2"){let d=Vr.defaultData("texture");Object.assign(d.texture,{image:c});let m=new Pe;return m.push({fi:0,data:d,id:l}),m.push({fi:1,data:Vr.defaultData("light",p),id:u}),{layers:m}}a.defaultTwoLayerTextureData=s})(vr||(vr={}));var Wo;(t=>{function n(){return{points:new Pe,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Wo||(Wo={}));var Ls;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Ls||(Ls={}));var Vn;(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==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Wo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=n})(Vn||(Vn={}));var zn;(o=>{o.identity={...ns.identity,hiddenMatrix:Er.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:zo.isEqual(i.position,s.position)?null:s.position,rotation:zo.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:zo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Er.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(zn||(zn={}));var br;(t=>t.defaultData={states:new Pe,events:new Pe,visible:!0,raycastLock:!1,...zn.identity})(br||(br={}));var dd;(t=>t.defaultData={type:"Empty",...br.defaultData})(dd||(dd={}));var Os;(t=>t.defaultData={type:"Mesh",...br.defaultData,...Cs.defaultData})(Os||(Os={}));var md;(t=>t.defaultData={type:"TextFrame",...br.defaultData,...Ns.defaultData})(md||(md={}));var Ps;(t=>t.defaultData={...br.defaultData,...zn.identity,...to.defaultData})(Ps||(Ps={}));var fd;(t=>{function n(e){return{...br.defaultData,...As.defaultData(e)}}t.defaultData=n})(fd||(fd={}));var hd;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Er.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Pe,events:new Pe,...to.defaultData},r.defaultMeshObject={name:"Rectangle",...br.defaultData,...Os.defaultData,geometry:Vn.defaultData("RectangleGeometry"),material:vr.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...br.defaultData,...Os.defaultData,geometry:Vn.defaultData("BooleanGeometry"),material:vr.defaultTwoLayerData("phong","layer1","layer2")}))(hd||(hd={}));var gd;(e=>{function n(r,o){if(o===void 0)return r;let i={...r};return"material"in i&&"material"in o&&o.material&&(i.material=Ea(i.material,s=>{if(typeof s!="string")for(let[a,c]of Object.entries(o.material.layers)){let p=s.layers.data(a);p&&eo(p,c)}}).data),i.materials&&o.materials&&(i.materials=Ea(i.materials,s=>{for(let a=0;a<i.materials.length;a++){let c=o.materials[a];if(typeof c!="string")for(let[p,l]of Object.entries(c.layers)){let u=s[a]?.layers?.data(p);u&&eo(u,l)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,zn.merge(i,o)),Vo.is(r.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let s=o;s.orthographic?.zoom!==void 0&&(i.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(i.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(i.targetOffset=s.targetOffset)}else if(r.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=n(i,o);else if(Ts.is(r.type)){let s=o;s.intensity!==void 0&&(i.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?i.color=s.color:i.color=xt.clone(s.color))}return i}e.patch=t})(gd||(gd={}));var Is;(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,preventScroll:!1,isTouchZoom:!0,orbitTouches:2,panTouches:3})(Is||(Is={}));var fb={Bell:"/_assets/_audios/CC0/bell_1.mp3","Bell 2":"/_assets/_audios/CC0/bell_2.wav",Bubble:"/_assets/_audios/CC0/bubble.wav",Click:"/_assets/_audios/CC0/click.mp3",Jump:"/_assets/_audios/CC0/jump.wav",Pop:"/_assets/_audios/CC0/pop.mp3","Pop 2":"/_assets/_audios/CC0/pop_2.mp3","Pop Double":"/_assets/_audios/CC0/pop_double_1.mp3","Pop Double 2":"/_assets/_audios/CC0/pop_double_2.mp3",Success:"/_assets/_audios/CC0/success.mp3",Suction:"/_assets/_audios/CC0/suction.wav",Tip:"/_assets/_audios/CC0/tip.mp3",Water:"/_assets/_audios/CC0/water.wav"},hb={"Bells 01":"/_assets/_audios/Originals/spe_bells_01.mp3","Bells 02":"/_assets/_audios/Originals/spe_bells_02.mp3","Bells 03":"/_assets/_audios/Originals/spe_bells_03.mp3","Book Closing 01":"/_assets/_audios/Originals/spe_book_closing_01.mp3","Book Closing 02":"/_assets/_audios/Originals/spe_book_closing_02.mp3","Book Opening 01":"/_assets/_audios/Originals/spe_book_opening_01.mp3","Book Opening 02":"/_assets/_audios/Originals/spe_book_opening_02.mp3","Breathing Strange":"/_assets/_audios/Originals/spe_breathing_strange.mp3",Bubble:"/_assets/_audios/Originals/spe_bubble.mp3","Bubble Double":"/_assets/_audios/Originals/spe_bubble_double.mp3","Cards 01":"/_assets/_audios/Originals/spe_cards_01.mp3","Cards 02":"/_assets/_audios/Originals/spe_cards_02.mp3","Ceramic 01":"/_assets/_audios/Originals/spe_ceramic_01.mp3","Ceramic 02":"/_assets/_audios/Originals/spe_ceramic_02.mp3","Ceramic 03":"/_assets/_audios/Originals/spe_ceramic_03.mp3","Ceramic 04":"/_assets/_audios/Originals/spe_ceramic_04.mp3","Ceramic 05":"/_assets/_audios/Originals/spe_ceramic_05.mp3","Ceramic 06":"/_assets/_audios/Originals/spe_ceramic_06.mp3","Ceramic 07":"/_assets/_audios/Originals/spe_ceramic_07.mp3","Click 01":"/_assets/_audios/Originals/spe_click_01.mp3","Click 02":"/_assets/_audios/Originals/spe_click_02.mp3","Click 03":"/_assets/_audios/Originals/spe_click_03.mp3","Click 04":"/_assets/_audios/Originals/spe_click_04.mp3","Click 05":"/_assets/_audios/Originals/spe_click_05.mp3","Click Double":"/_assets/_audios/Originals/spe_click_double_1.mp3","Device Close 01":"/_assets/_audios/Originals/spe_device_close_01.mp3","Device Open 01":"/_assets/_audios/Originals/spe_device_open_01.mp3","Door Closing":"/_assets/_audios/Originals/spe_door_closing.mp3","Door Garage":"/_assets/_audios/Originals/spe_door_garage.mp3","Door Opening":"/_assets/_audios/Originals/spe_door_opening.mp3","Drop 01":"/_assets/_audios/Originals/spe_drop_01.mp3","Drop 02":"/_assets/_audios/Originals/spe_drop_02.mp3","Drop 03":"/_assets/_audios/Originals/spe_drop_03.mp3","Drop 04":"/_assets/_audios/Originals/spe_drop_04.mp3","Drop 05":"/_assets/_audios/Originals/spe_drop_05.mp3","Face Slap 01":"/_assets/_audios/Originals/spe_face_slap_01.mp3","Face Slap 02":"/_assets/_audios/Originals/spe_face_slap_02.mp3","Falling Bounce":"/_assets/_audios/Originals/spe_falling_bounce.mp3","Falling Box":"/_assets/_audios/Originals/spe_falling_box.mp3","Finger Snap 01":"/_assets/_audios/Originals/spe_finger_snap_01.mp3","Finger Snap 02":"/_assets/_audios/Originals/spe_finger_snap_02.mp3","Finger Snap 03":"/_assets/_audios/Originals/spe_finger_snap_03.mp3","Finger Snap 04":"/_assets/_audios/Originals/spe_finger_snap_04.mp3","Jump 01":"/_assets/_audios/Originals/spe_jump_01.mp3","Jump 02":"/_assets/_audios/Originals/spe_jump_02.mp3","Key Press":"/_assets/_audios/Originals/spe_key_press.mp3","Key Press 02":"/_assets/_audios/Originals/spe_key_press_02.mp3","Key Press 03":"/_assets/_audios/Originals/spe_key_press_03.mp3","Key Press 04":"/_assets/_audios/Originals/spe_key_press_04.mp3","Key Press 05":"/_assets/_audios/Originals/spe_key_press_05.mp3","Key Press 06":"/_assets/_audios/Originals/spe_key_press_06.mp3","Key Typing 01":"/_assets/_audios/Originals/spe_key_typing_01.mp3","Knock Knock":"/_assets/_audios/Originals/spe_knock_knock.mp3","Marker 01":"/_assets/_audios/Originals/spe_marker_01.mp3","Marker 02":"/_assets/_audios/Originals/spe_marker_02.mp3","Marker 03":"/_assets/_audios/Originals/spe_marker_03.mp3","Marker 04":"/_assets/_audios/Originals/spe_marker_04.mp3","Match 01":"/_assets/_audios/Originals/spe_match_01.mp3","Measure Close 01":"/_assets/_audios/Originals/spe_measure_close_01.mp3","Measure Close 02":"/_assets/_audios/Originals/spe_measure_close_02.mp3","Measure Open 01":"/_assets/_audios/Originals/spe_measure_open_01.mp3","Measure Open 02":"/_assets/_audios/Originals/spe_measure_open_02.mp3","Metal Rolling":"/_assets/_audios/Originals/spe_metal_rolling.mp3","Motor 01":"/_assets/_audios/Originals/spe_motor_01.mp3","Motor 02":"/_assets/_audios/Originals/spe_motor_02.mp3","Noise 01":"/_assets/_audios/Originals/spe_noise_01.mp3","Notch 01":"/_assets/_audios/Originals/spe_notch_01.mp3","Notch 02":"/_assets/_audios/Originals/spe_notch_02.mp3","Paper Cut 01":"/_assets/_audios/Originals/spe_paper_cut_01.mp3","Paper Cut 02":"/_assets/_audios/Originals/spe_paper_cut_02.mp3","Paper Folding":"/_assets/_audios/Originals/spe_paper_folding.mp3","Paper Scratch 01":"/_assets/_audios/Originals/spe_paper_scratch_01.mp3","Paper Scratch 02":"/_assets/_audios/Originals/spe_paper_scratch_02.mp3","Paper Scratch 03":"/_assets/_audios/Originals/spe_paper_scratch_03.mp3","Pen 01":"/_assets/_audios/Originals/spe_pen_01.mp3","Pen 02":"/_assets/_audios/Originals/spe_pen_02.mp3","Punch 01":"/_assets/_audios/Originals/spe_punch_01.mp3","Punch 02":"/_assets/_audios/Originals/spe_punch_02.mp3","Punch Deep":"/_assets/_audios/Originals/spe_punch_deep.mp3","Radio Noise 01":"/_assets/_audios/Originals/spe_radio_noise_01.mp3","Radio Noise 02":"/_assets/_audios/Originals/spe_radio_noise_02.mp3","Radio Noise 03":"/_assets/_audios/Originals/spe_radio_noise_03.mp3","Rain 01":"/_assets/_audios/Originals/spe_rain_01.mp3","Rain 02":"/_assets/_audios/Originals/spe_rain_02.mp3","Scratch 01":"/_assets/_audios/Originals/spe_scratch_01.mp3","Scratch 02":"/_assets/_audios/Originals/spe_scratch_02.mp3","Scratch 03":"/_assets/_audios/Originals/spe_scratch_03.mp3","Seeds Shaking 01":"/_assets/_audios/Originals/spe_seeds_shaking_01.mp3","Seeds Shaking 02":"/_assets/_audios/Originals/spe_seeds_shaking_02.mp3","Song Scifi 01":"/_assets/_audios/Originals/spe_song_scifi_01.mp3",Spinner:"/_assets/_audios/Originals/spe_spinner.mp3","Spray Body":"/_assets/_audios/Originals/spe_spray_body.mp3","Suction 01":"/_assets/_audios/Originals/spe_suction_01.mp3","Suction 02":"/_assets/_audios/Originals/spe_suction_02.mp3","Suction 03":"/_assets/_audios/Originals/spe_suction_03.mp3","Suction 04":"/_assets/_audios/Originals/spe_suction_04.mp3","Switch 01":"/_assets/_audios/Originals/spe_switch_01.mp3","Switch 02":"/_assets/_audios/Originals/spe_switch_02.mp3","Switch 03":"/_assets/_audios/Originals/spe_switch_03.mp3","Switch 04":"/_assets/_audios/Originals/spe_switch_04.mp3","Switch 05":"/_assets/_audios/Originals/spe_switch_05.mp3","Switch 06":"/_assets/_audios/Originals/spe_switch_06.mp3","Switch 07":"/_assets/_audios/Originals/spe_switch_07.mp3","Switch 08":"/_assets/_audios/Originals/spe_switch_08.mp3","Switch 09":"/_assets/_audios/Originals/spe_switch_09.mp3","Switch 10":"/_assets/_audios/Originals/spe_switch_10.mp3","Swoosh 01":"/_assets/_audios/Originals/spe_swoosh_01.mp3","Swoosh 02":"/_assets/_audios/Originals/spe_swoosh_02.mp3","Swoosh 03":"/_assets/_audios/Originals/spe_swoosh_03.mp3","Swoosh 04":"/_assets/_audios/Originals/spe_swoosh_04.mp3","Tap Ceramic 01":"/_assets/_audios/Originals/spe_tap_ceramic_01.mp3","Tap Ceramic 02":"/_assets/_audios/Originals/spe_tap_ceramic_02.mp3","Tap Metal":"/_assets/_audios/Originals/spe_tap_metal_1.mp3","Tap Metal 2":"/_assets/_audios/Originals/spe_tap_metal_2.mp3","Tap Metal 3":"/_assets/_audios/Originals/spe_tap_metal_3.mp3","Tap Metal 4":"/_assets/_audios/Originals/spe_tap_metal_4.mp3","Tap Plastic":"/_assets/_audios/Originals/spe_tap_plastic.mp3","Tap Wood 01":"/_assets/_audios/Originals/spe_tap_wood_01.mp3","Tap Wood 02":"/_assets/_audios/Originals/spe_tap_wood_02.mp3","Trumbling 01":"/_assets/_audios/Originals/spe_trumbling_01.mp3","Trumbling 02":"/_assets/_audios/Originals/spe_trumbling_02.mp3","Voice Ouch":"/_assets/_audios/Originals/spe_voice_ouch.mp3","Voice Surprise 01":"/_assets/_audios/Originals/spe_voice_surprise_01.mp3","Voice Surprise 02":"/_assets/_audios/Originals/spe_voice_surprise_02.mp3","Walk Steps 01":"/_assets/_audios/Originals/spe_walk_steps_01.mp3","Walk Steps 02":"/_assets/_audios/Originals/spe_walk_steps_02.mp3","Walk Steps 03":"/_assets/_audios/Originals/spe_walk_steps_03.mp3","Water 01":"/_assets/_audios/Originals/spe_water_01.mp3","Water 02":"/_assets/_audios/Originals/spe_water_02.mp3","Water 03":"/_assets/_audios/Originals/spe_water_03.mp3","Water Bath":"/_assets/_audios/Originals/spe_water_bath.mp3","Water Drops":"/_assets/_audios/Originals/spe_water_drops.mp3",Wc:"/_assets/_audios/Originals/spe_wc.mp3","Xylophone Note A":"/_assets/_audios/Originals/spe_xylophone_note_a.mp3","Xylophone Note B":"/_assets/_audios/Originals/spe_xylophone_note_b.mp3","Xylophone Note C":"/_assets/_audios/Originals/spe_xylophone_note_c.mp3","Xylophone Note C Minor":"/_assets/_audios/Originals/spe_xylophone_note_c_minor.mp3","Xylophone Note D":"/_assets/_audios/Originals/spe_xylophone_note_d.mp3","Xylophone Note E":"/_assets/_audios/Originals/spe_xylophone_note_e.mp3","Xylophone Note F":"/_assets/_audios/Originals/spe_xylophone_note_f.mp3","Xylophone Note G":"/_assets/_audios/Originals/spe_xylophone_note_g.mp3","Xylophone Notes All 01":"/_assets/_audios/Originals/spe_xylophone_notes_all_01.mp3","Xylophone Notes All 02":"/_assets/_audios/Originals/spe_xylophone_notes_all_02.mp3"},Ms={CC0:fb,Originals:hb};var qo;(c=>{let n=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],t=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function e(){let p={},l=0;for(let u of n)p[`image_${l}`]={data:u,name:`Image ${l}`,asset:!1},l++;l=0;for(let u of t)p[`matcap_${l}`]={data:u,name:`Matcap ${l}`,asset:!1},l++;return p}c.defaultImages=e;function r(){let p={};return p["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},p}c.defaultColors=r;function o(){let p={},l={...Ms.CC0,...Ms.Originals},u=0;for(let[d,m]of Object.entries(l)){let f=m.split("/").pop()??"unknown",h=m.split(".").pop(),g="";if(h==="mp3")g="audio/mpeg";else if(h==="wav")g="audio/wav";else continue;p[`audio_${u}`]={name:d,filename:f,data:m,mimeType:g,asset:!1,free:d in Ms.CC0},u++}return p}c.defaultAudios=o,c.defaultAudio={name:"Untitled Audio",data:"/_assets/_audios/CC0/success.mp3",filename:"success.mp3",mimeType:"audio/mpeg",asset:!0};function s(){return{materials:new Oe,images:new Oe,colors:new Oe,audios:new Oe,penumbraSize:[.5,.5,.5]}}c.emptyData=s;function a(){return{materials:new Oe,images:xo(e(),Oe.prototype),colors:xo(r(),Oe.prototype),audios:xo(o(),Oe.prototype),penumbraSize:new Array(5).fill(.5)}}c.defaultData=a})(qo||(qo={}));function tl(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 a=2;a<10;a++)o.push(o[1]),i.push(1);let s={...Pa(Gr(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,s)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...Gr(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function gb(n){Object.values(n.shared.materials).forEach(t=>tl(t))}function yb(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&tl(r)}):"material"in e&&typeof e.material!="string"&&tl(e.material)})}function xb(n){Object.assign(n.scene.publish,{orbitControls:{...Is.defaultData,...Gr(n.scene.publish.orbitControls)}})}function vb(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((ud.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,a]of Object.entries(i))(pd.includes(s)||typeof a=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(s=>{t(s)})})})}function bb(n){n.scene.publish.withBackground=!0}function _b(n){n.scene.publish.settings.web={compress:!0,preset:1}}function Sb(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 wb(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 Tb(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.parent(t);e.type==="Mesh"&&(!r||n.scene.objects.data(r).geometry?.type!=="BooleanGeometry")&&(e.booleanExclude=null)})}function el(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={...Gr(t),colors:e,steps:r};Object.assign(t,o)}})}function Ab(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function yd(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&el(r)}):"material"in e&&typeof e.material!="string"&&el(e.material)}),Object.values(n.shared.materials).forEach(t=>el(t))}function Cb(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 Nb(n){n.shared.audios=xo(qo.defaultAudios(),Oe.prototype)}var xd=13;function vd(n){let t=n.schema??0;t!==xd&&(console.warn("updating from ",t,"to ",xd),t<1&&(yb(n),gb(n),n.schema=1),t<2&&(xb(n),n.schema=2),t<3&&(vb(n),n.schema=3),t<4&&(bb(n),n.schema=4),t<5&&(_b(n),n.schema=5),t<6&&(Sb(n),n.schema=6),t<7&&(wb(n),n.schema=7),t<8&&(Tb(n),n.schema=8),t<9&&(yd(n),n.schema=9),t<10&&(Ab(n),n.schema=10),t<11&&(Cb(n),n.schema=11),t<12&&(yd(n),n.schema=12),t<13&&(Nb(n),n.schema=13))}var Ds;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})(Ds||(Ds={}));import{Color as Lb}from"three";var Ze=class extends Lb{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)}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}};import{ConeBufferGeometry as Ib}from"three";import{BufferGeometry as Ob,CylinderBufferGeometry as Pb,Float32BufferAttribute as rl,Vector2 as Mt,Vector3 as Bs}from"three";var _d=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:0,cornerSegments:8,hollow:0},n.parameters),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:s,thetaStart:a,thetaLength:c,radiusTop:p,radiusBottom:l,cornerRadius:u,cornerSegments:d,hollow:m}=n.parameters,f;return u||m?f=new Un(p,l,r,o,i,s,a,c*Math.PI/180,u,u,d,m):f=new Pb(p,l,r,o,i,s,a,c*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function zr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function bd(n){return new Mt(n.y,-n.x)}var Un=class extends Ob{constructor(t,e,r,o,i,s,a,c,p,l,u,d,m=!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,s=s!==void 0?s:!1,a=a!==void 0?a:0,c=c!==void 0?c:Math.PI*2,s&&(p=0,l=0);let f=[],h=[],g=[],x=[],v=0,A=r/2,_=new Bs,b=new Bs;m&&t==0&&(t=p),m&&e==0&&(e=l);let D=new Mt(t,A),S=new Mt(e,-A),y=null,P=null,T=null,O=null,C=D.clone().sub(S),N=0,j=0,W=0;d>0&&(N=Math.min(t,e)*(1-d),j=t-N,W=e-N);let oe=D.clone();oe.x-=N;let ce=Math.PI-C.angle(),ie=C.angle(),K=Math.tan(ie/2),U=Math.tan(ce/2),F=K+U,E=d?F:U,B=d?F:K;if(p=Math.min(p,(t-j)/E,C.length()/F),l=Math.min(l,(e-W)/B,C.length()/F),p>0){let z=p/K;y=D.clone().sub(new Mt(z,p)),d&&(T=y.clone(),T.x-=N-F*p),D.sub(C.clone().setLength(z))}if(l>0){let z=l/U;P=S.clone().sub(new Mt(z,-l)),S.add(C.clone().setLength(z)),d&&(O=P.clone(),O.x-=N-F*l,oe.sub(C.clone().setLength(z)))}C=D.clone().sub(S);let I=C.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+a,ee=new Mt(Math.sin(J),Math.cos(J));O&&P?(Q(M,q,ee,ce,l,O,-1,!0),Q(M,q,ee,ie,l,P,-1,!1)):P?(k(M,ee,P.x,0,-1),Q(M,q,ee,ie,l,P,-1,!1)):s||k(M,ee,e,W,-1);let H=bd(C).normalize();if(zr(H,ee,_),!I)for(let Z=0;Z<=i;Z++){let $=Z/i,re=C.clone().multiplyScalar($).add(S);zr(re,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Q(M,q,ee,ce,p,y,1,!1),Q(M,q,ee,ie,p,T,1,!0)):y?(Q(M,q,ee,ce,p,y,1,!1),k(M,ee,y.x,0,1)):s||k(M,ee,t,j,1),d&&!I){let Z=bd(C).multiplyScalar(-1).normalize();zr(Z,ee,_);for(let $=0;$<=i;$++){let re=$/i,le=C.clone().multiplyScalar(-re).add(oe);zr(le,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.z),x.push(q,.5+b.y/r),M.push(v++)}}d&&!s&&M.push(M[0]),G.push(M)}for(let z=0;z<G.length-1;z++)for(let M=0;M<G[0].length-1;M++){if(s&&d&&M==i)continue;let q=G[z][M],J=G[z+1][M],ee=G[z+1][M+1],H=G[z][M+1],Z=h[ee*3+0],$=h[ee*3+2];f.push(q,J,H),(Z!=0||$!=0)&&f.push(J,ee,H)}c<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+c)),this.setIndex(f),this.setAttribute("position",new rl(h,3)),this.setAttribute("normal",new rl(g,3)),this.setAttribute("uv",new rl(x,2));function Q(z,M,q,J,ee,H,Z,$){for(let re=0;re<u+1;re++){let le=re/u,ne=Z<0?le:1-le;$&&(ne-=1),ne*=J;let me=new Mt(Math.sin(ne),Math.cos(ne)*Z),Ie=me.clone().multiplyScalar(ee).add(H);zr(Ie,q,b),h.push(b.x,b.y,b.z),zr(me,q,_),g.push(_.x,_.y,_.z),x.push(M,.5+b.y/r),z.push(v++)}}function k(z,M,q,J,ee){let H=new Bs,Z=new Mt,$=[q,J];ee<0&&$.reverse();for(let re of $)Z.set(re,A*ee),zr(Z,M,H),h.push(H.x,H.y,H.z),g.push(0,ee,0),x.push(.5,.5),z.push(v++)}function V(z,M,q){let J=new Mt(Math.sin(q),Math.cos(q)),ee=new Mt(-Math.cos(q),Math.sin(q)),H=new Bs,Z=z<0?(le,ne,me)=>f.push(le,ne,me):(le,ne,me)=>f.push(le,me,ne),$=new Mt((t+e+j+W)/4,0);zr($,J,H),h.push(H.x,H.y,H.z),g.push(ee.x,0,ee.y),x.push(.5,.5);let re=v++;for(let le of M){let ne=h.slice(le*3,le*3+3);h.push(...ne),g.push(ee.x,0,ee.y);let me=x.slice(le*2,le*2+2);x.push(...me),v++}for(let le=re+1;le<v-1;le++)Z(re,le,le+1);Z(re,v-1,re+1)}}};var Sd=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:0,cornerRadiusBottom:0,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,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:l,cornerSegments:u}=n.parameters,d;return p>0||l>0||c<360?d=new Un(0,t/2,r,o,i,s,a,c*Math.PI/180,p,l,u,0,!0):d=new Ib(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxBufferGeometry as Mb,BufferGeometry as Db,Float32BufferAttribute as ol,Vector3 as kn}from"three";var wd=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:0,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:s,cornerRadius:a,cornerSegments:c}=n.parameters,p;return a==0?p=new Mb(t,e,r,o,i,s):p=new il(t,e,r,o,i,s,a,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},nl=Math.PI/2,il=class extends Db{constructor(t=1,e=1,r=1,o=1,i=1,s=1,a=0,c=4){super(),this.type="BoxBufferGeometry";let p=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),a=Math.min(a,t/2,e/2,r/2);let l=[],u=[],d=[],m=[],f=0,h=0;g("z","y","x",-1,-1,r,e,t,s,i,0),g("z","y","x",1,-1,r,e,-t,s,i,1),g("x","z","y",1,1,t,r,e,o,s,2),g("x","z","y",1,-1,t,r,-e,o,s,3),g("x","y","z",1,-1,t,e,r,o,i,4),g("x","y","z",-1,-1,t,e,-r,o,i,5),a>0&&(x("z","y","x",-1,-1,1,r,e,t,s,0),x("z","y","x",1,-1,-1,r,e,t,s,1),x("z","y","x",-1,1,-1,r,e,t,s,1),x("z","y","x",1,1,1,r,e,t,s,0),x("x","y","z",-1,-1,-1,t,e,r,o,0),x("x","y","z",1,-1,1,t,e,r,o,1),x("x","y","z",-1,1,1,t,e,r,o,0),x("x","y","z",1,1,-1,t,e,r,o,1),x("y","x","z",-1,-1,1,e,t,r,i,0),x("y","x","z",1,-1,-1,e,t,r,i,1),x("y","x","z",1,1,1,e,t,r,i,1),x("y","x","z",-1,1,-1,e,t,r,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new ol(u,3)),this.setAttribute("normal",new ol(d,3)),this.setAttribute("uv",new ol(m,2));function g(A,_,b,D,S,y,P,T,O,C,N){let j=(y-2*a)/O,W=(P-2*a)/C,oe=y/2-a,ce=P/2-a,ie=T/2,K=O+1,U=C+1,F=0,E=0,B=new kn;for(let I=0;I<U;I++){let G=I*W-ce;for(let Q=0;Q<K;Q++){let k=Q*j-oe;B[A]=k*D,B[_]=G*S,B[b]=ie,u.push(B.x,B.y,B.z),B[A]=0,B[_]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),m.push(Q/O),m.push(1-I/C),F+=1}}for(let I=0;I<C;I++)for(let G=0;G<O;G++){let Q=f+G+K*I,k=f+G+K*(I+1),V=f+(G+1)+K*(I+1),z=f+(G+1)+K*I;l.push(Q,k,z),l.push(k,V,z),E+=6}p.addGroup(h,E,N),h+=E,f+=F}function x(A,_,b,D,S,y,P,T,O,C,N){let j=(P-2*a)/C,W=P/2-a,oe=T/2-a,ce=O/2,ie=C+1,K=0,U=0,F=new kn,E=new kn;for(let B=0;B<c+1;B++){let I=B/c*nl,G=Math.sin(I)*a,Q=(1-Math.cos(I))*a,k=Math.sin(I),V=Math.cos(I);F[_]=(oe+G)*S,F[b]=(ce-Q)*y,E[A]=0,E[_]=k*Math.sign(F[_]),E[b]=V*Math.sign(F[b]);for(let z=0;z<ie;z++){let M=z*j-W;F[A]=M*D,u.push(F.x,F.y,F.z),d.push(E.x,E.y,E.z),m.push(z/C),m.push(0),K+=1}}for(let B=0;B<c;B++)for(let I=0;I<C;I++){let G=f+I+ie*B,Q=f+I+ie*(B+1),k=f+(I+1)+ie*(B+1),V=f+(I+1)+ie*B;l.push(G,Q,V),l.push(Q,k,V),U+=6}p.addGroup(h,U,N),h+=U,f+=K}function v(A,_,b){let D=new kn,S=new kn(t/2,e/2,r/2);S.subScalar(a);let y=[],P=A*_*b>0?(O,C,N)=>l.push(O,C,N):(O,C,N)=>l.push(O,N,C);for(let O=0;O<=c;O++){let C=[],N=nl*(1-O/c),j=Math.cos(N),W=Math.sin(N),oe=0;for(let ce=0;ce<=O;ce++){let ie=Math.cos(oe),K=Math.sin(oe);D.x=j*ie,D.y=W,D.z=j*K;let U=S.clone().addScaledVector(D,a);u.push(A*U.x,_*U.y,b*U.z),d.push(A*D.x,_*D.y,b*D.z),m.push(0,0),C.push(f++),oe+=nl/O}y.push(C)}let T=y.length-1;for(let O=0;O<T;O++){let C=y[O],N=y[O+1],j=C.length-1;P(C[0],N[1],N[0]);for(let W=1;W<=j;W++)P(C[W-1],C[W],N[W]),P(C[W],N[W+1],N[W])}}}};import{BufferGeometry as Bb,Float32BufferAttribute as sl,Triangle as Eb,Vector3 as _r,Vector2 as al}from"three";var Ur=class extends Bb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],p=[];l(),u(),this.setAttribute("position",new sl(a,3)),this.setAttribute("normal",new sl(p,3)),this.setAttribute("uv",new sl(c,2));return;function l(){i=Math.min(1-1e-5,i),i==0&&(s=0);let m={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new _r,h=f.clone(),g=new Eb,x=i*o,v=o-x,A=s+1,_=new _r,b=(K,U)=>_.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),S=D(t.length/3,(K,U)=>new _r().fromArray(t,U*3).setLength(o)),y=[],P=1e6;for(let K=0;K<S.length;K++){let U=S[K],F=[],E,B,I,G=1e10,Q=-1;for(;(Q=e.indexOf(K,Q+1))!=-1;){let M=Q-Q%3;E=e[M+(Q+1)%3],B=e[M+(Q+2)%3],I=U.distanceToSquared(S[E]),G=Math.min(G,I),F.push([E,B,I])}G+=1e-6;let k=[],V=0,z=F.length;for(let M=0;M<z;M++){[E,B,I]=F[V];let q=y[E]?.includes(K)==!0;I<=G&&k.push(E+ +q*P),V=F.findIndex(J=>J[0]==B)}y.push(k)}let T=[];{let K=0,U=0,F,E,B=m==3;for(let I=0;I<=s;I++){F=I*(I+1)/2,E=(I+1)*(I+2)/2;for(let G=0;G<s-I;G++)[K,U]=[F+G+I+2,E+G+I+3],T.push(F,E,...B?[U,F]:[K,E],U,K),[F,E]=[K,U];T.push(F,E,F+s+2)}}let O=f.clone(),C=f.clone(),N=f.clone(),j=f.clone(),W=f.clone(),oe=[],ce=D(S.length,()=>D(m,()=>f.clone()));for(let K=0;K<S.length;K++){f.copy(S[K]).normalize(),O.copy(f).multiplyScalar(v);let U=y[K];for(let k=0;k<U.length;k++){let V=U[k],z=U[(k+1)%m];g.setFromPointsAndIndices(S,K,V%P,z%P),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(O,ce[K][k])}let F=[],E=[],B=[],I=new _r;s==0&&[...ce[K]].reduce((k,V)=>k.add(V),I).multiplyScalar(1/m);for(let k=0;k<m;k++){let V=[],z=(k-1+m)%m,M=ce[K][z],q=ce[K][k];f.copy(M).sub(O),h.copy(q).sub(O);let J=O.angleTo(f),ee=f.angleTo(h),H=Math.cos(J)*x;s==0?C.copy(I):C.copy(O).setLength(v+H),E.push(H);let Z=[C,M,q];for(let $=0;$<2;$++){let re=Z[$],le=Z[$+1];j.subVectors(re,O),W.subVectors(le,O),N.crossVectors(j,W).normalize();for(let ne=0;ne<A;ne++){let me=[J,ee][$]*ne/A;f.copy(j).applyAxisAngle(N,me).add(O),F.push(f.clone()),$&&(b(f,O),V.push([ne==0?re:f.clone(),_.clone()]))}$&&(b(le,O),V.push([le,_.clone()]))}B.push(V)}oe.push(B);let G=2*A,Q=2;for(let k=0;k<m;k++){let V=G*k,z=G*((k+1)%m),M=[F[V]];for(let J=1;J<A;J++){j=F[V+J],W=F[z+J],M.push(j);for(let ee=1,H=J-Q+1;ee<=H;ee++)f.lerpVectors(j,W,ee/(H+1)),f.sub(O).setLength(E[k]).add(O),M.push(f.clone());M.push(W)}for(let J=0;J<A;J++)M.push(F[J+A+V]);M.push(F[z+A]);let q=T.map(J=>M[J]);a.push(...q.map(J=>[J.x,J.y,J.z]).flat()),p.push(...q.map(J=>(b(J,O),[_.x,_.y,_.z])).flat())}}let ie=[];for(let K=0;K<y.length;K++)for(let U=0;U<m;U++){let F=y[K][U];if(F<P){let E=y[F].findIndex(G=>G%P==K),B=oe[K][U],I=oe[F][E];for(let G=0;G<A;G++){let Q=B[G],k=I[A-G],V=B[G+1],z=I[A-(G+1)];[Q,k,V,V,k,z].forEach(M=>{a.push(M[0].x,M[0].y,M[0].z),p.push(M[1].x,M[1].y,M[1].z)})}ie.push(B[0][0],I[A][0],B[A][0],I[0][0])}}for(;ie.length;){let K,U,F,E;[K,U]=ie.splice(0,2);let B=[K];for(;K!=U;)B.push(U),F=ie.indexOf(U),E=F%2,U=ie.splice(F-E,2)[1-E];_.subVectors(B[0],B[1]).cross(f.subVectors(B[0],B[2])).normalize();let I=_.dot(B[0])<0;I&&_.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +I],B[G+1-+I],B[0]].forEach(Q=>{a.push(Q.x,Q.y,Q.z),p.push(_.x,_.y,_.z)})}}function u(){let d=new _r;for(let S=0;S<a.length;S+=3){d.x=a[S+0],d.y=a[S+1],d.z=a[S+2];let y=b(d)/2/Math.PI+.5,P=D(d)/Math.PI+.5;c.push(y,1-P)}let m=new _r,f=new _r,h=new _r,g=new _r,x=new al,v=new al,A=new al,_=(S,y,P,T)=>{T<0&&S.x===1&&(c[y]=S.x-1),P.x===0&&P.z===0&&(c[y]=T/2/Math.PI+.5)};for(let S=0,y=0;S<a.length;S+=9,y+=6){m.set(a[S+0],a[S+1],a[S+2]),f.set(a[S+3],a[S+4],a[S+5]),h.set(a[S+6],a[S+7],a[S+8]),x.set(c[y+0],c[y+1]),v.set(c[y+2],c[y+3]),A.set(c[y+4],c[y+5]),g.copy(m).add(f).add(h).divideScalar(3);let P=b(g);_(x,y+0,m,P),_(v,y+2,f,P),_(A,y+4,h,P)}for(let S=0;S<c.length;S+=6){let y=c[S+0],P=c[S+2],T=c[S+4],O=Math.max(y,P,T),C=Math.min(y,P,T);O>.9&&C<.1&&(y<.2&&(c[S+0]+=1),P<.2&&(c[S+2]+=1),T<.2&&(c[S+4]+=1))}function b(S){return Math.atan2(S.z,-S.x)}function D(S){return Math.atan2(-S.y,Math.sqrt(S.x*S.x+S.z*S.z))}}}static fromJSON(t){return new Ur(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as Gb}from"three";var Td=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:s}=n.parameters,a=o===0&&i!==0?new jn(t*.5,i,s):new Gb(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},jn=class extends Ur{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-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],a=[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],c="DodecahedronGeometry";super(s,a,c,t,e,r),this.type=c}static fromJSON(t){return new jn(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as $b,Plane as Xb,Shape as Vd,Vector2 as Sr,Vector3 as Yb,MathUtils as fl,LineCurve as hl,QuadraticBezierCurve as zd,CubicBezierCurve as Fs}from"three";import{CubicBezierCurve as Es,EllipseCurve as Rb,LineCurve as Gs,LineCurve3 as Fb,MathUtils as Vb,QuadraticBezierCurve as cl,SplineCurve as zb,Vector2 as tt,Vector3 as Nd}from"three";var Hn=1e-12,$o=class{constructor(t){this.position=new tt;this.startPosition=new tt;this.uuid=Vb.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 $o(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Xo=class extends $o{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Xo(this.parent).copy(this)}},Dt=class extends $o{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Xo(this),new Xo(this))}static create(e,r){let o=new Dt(e,new tt(...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 s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.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 Dt(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 tt,r=new tt){let[o,i]=this.computeTangents();return o&&i&&(Ad(o,e),Ad(i,r)),[e,r]}computeTangent(e=new tt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new tt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Ad(n,t=new tt){let e=n.length();return t.set(-n.y/e,n.x/e)}var ul=n=>n,Yo=new tt,Rs=new tt,Ub=new tt,kb=new tt,jb=new tt,Hb=new tt,Ld=new Nd,Od=new Nd;function Pd(n){let t=new tt;t.addVectors(n.v0,Yo.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new tt;return e.addVectors(n.v2,Rs.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Es(n.v0,t,e,n.v2)}function Wn(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Wb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function qb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function pl(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 Id(n,t,e){return Cd(n,t)&&Cd(t,e)&&ll(n.position,t.position,e.position)}function ll(n,t,e){return Yo.copy(t).sub(n).cross(Rs.copy(e).sub(n))===0}function Md(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,a=(n.x+t.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,p=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(a+c,s+p),o.set(a-c,s-p),[r,o]}function Dd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Bd(n,t,e,r,o,i){let s=t.x-n.x,a=t.y-n.y,c=e.x-n.x,p=e.y-n.y,l=Math.sqrt((s+c)*(s+c)+(a+p)*(a+p)),u;return pl(t,n,e)>Math.PI&&(l*=-1),Wn(p,a)?u=(a+p)*(r/l-.5)*8/3/(s-c):u=(s+c)*(r/l-.5)*8/3/(p-a),o.set(t.x-u*a,t.y+u*s),i.set(e.x+u*p,e.y-u*c),[o,i]}function dl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Cd(n,t){return ll(n.position,n.controls[1].position,t.position)&&ll(n.position,t.controls[0].position,t.position)}function Ed(n,t,e,r,o=.5){let i=Yo.subVectors(t,n).multiplyScalar(o).add(n),s=Rs.subVectors(e,t).multiplyScalar(o).add(t),a=Ub.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=kb.subVectors(s,i).multiplyScalar(o).add(i),l=jb.subVectors(a,s).multiplyScalar(o).add(s),u=a,d=Hb.subVectors(l,p).multiplyScalar(o).add(p);return[n.x,n.y,c.x,c.y,p.x,p.y,d.x,d.y,l.x,l.y,u.x,u.y,r.x,r.y]}function Gd(n,t,e=12,r=!0){let o=Od.set(0,0,0),i,s=0,a=[];for(let c=0;c<t.length;c++){let p=ul(t[c]),l=Yo,u=kr(p,e);a.push(u);for(let d=0;d<=u;d++)if(p instanceof Es||p instanceof cl||p instanceof Gs){if(p.getPoint(d/u,l),o.set(l.x,l.y,0),i!==void 0&&qb(i,o))continue;i===void 0&&(i=Ld),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Rd(n,t,e,r=12,o=!0){let i=Od.set(0,0,0),s=0,a=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,l=ul(t[c]),u=Yo,d=kr(l,r);a.push(d);for(let m=0;m<=d;m++)if(l instanceof Es||l instanceof cl||l instanceof Gs){if(l.getPoint(m/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Ld:(n.setXYZ(s,p.x,p.y,p.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),p.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function ml(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let c=kr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=kr(s.curveAfter,t)),r.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=kr(n[0].roundedCurveCorner,t)*.5),r}function kr(n,t=12){return n&&n instanceof Rb?t*2:n&&(n instanceof Gs||n instanceof Fb)?1:n&&n instanceof zb?t*n.points.length:t}function Fd(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let a=ul(t[s]),c=kr(a,e),p=Yo;for(let l=0;l<=c;l++)if(a instanceof Es||a instanceof cl||a instanceof Gs){if(a.getPoint(l/c,p),o!==void 0&&Wb(o,p,Hn))continue;o===void 0&&(o=Rs),o.copy(p),n.push(p.x,p.y),i++}}return Wn(n[0],n[n.length-2],Hn)&&Wn(n[1],n[n.length-1],Hn)&&(n.pop(),n.pop()),r&&i>1&&!(Wn(n[i-1],n[1],Hn)&&Wn(n[i-2],n[0],Hn))&&(n.push(n[0],n[1]),i++),n}var gl=new Sr,Kb=new Sr,Qb=new Sr,Zb=new Sr,Jb=new Sr,e_=new Sr,_e=class extends Vd{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new $b;this.plane=new Xb(new Yb(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=fl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new _e;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Dt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>_e.createFromState(s)),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 s=0,a=this.shapeHoles.length;s<a;s++){let c=this.shapeHoles[s],p=c.points.length-1,l=c.getPointIndexById(e);if(l<0)i+=p;else return l+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)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}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 s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return r+a;r+=s.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=gl.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=fl.generateUUID()){let i;e instanceof Sr?i=e:i=new Sr(e,r);let s=new Dt(o,i);return s.roundness=this.roundness,s}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 s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}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(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Gd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=ml(this.points,e,!1),this.roundedCurveDivisions=ml(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Rd(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Fd(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,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=kr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((c,p)=>c+p,0));for(let c=0,p=i.length;c<p;c++){let l=i[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,c=a[e];if(dl(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(gl.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=a[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){dl(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(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i],c=this.points[i-1]??this.points[this.points.length-1],p=this.points[i+1]??this.points[0],l=a.roundness,u=c&&p&&Id(c,a,p);if(!a.controlsMoved()&&l>0&&!u){let d=a.curveBefore,m=a.curveAfter;if(d===void 0||m===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,g=d.getLength(),x=m.getLength(),v=Math.min(l,g*.499),A=Math.min(l,x*.499),_=Math.min(v,A),b=1-_/g,D=_/x,S=d.getPointAt(b,gl),y=m.getPointAt(D,Kb);this._subSplitCurve(d,f,b,S,void 0),this._subSplitCurve(m,h,D,void 0,y);let P;if(this.useCubicForRoundedCorners){let T=pl(S,a.position,y)/2,O=Math.tan(T)*S.distanceTo(a.position),[C,N]=Md(S,y,O,Qb,Zb),j=Dd(C,N,a.position),[W,oe]=Bd(j,S,y,O,Jb,e_);P=new Fs(S.clone(),W.clone(),oe.clone(),y.clone())}else P=new zd(S.clone(),a.position.clone(),y.clone());a.roundedCurveCorner=P,this.roundedCurves.splice(i+o,0,P),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof hl)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let a=e,c=r,p=a.getUtoTmapping(o,0),l=Ed(a.v0,a.v1,a.v2,a.v3,p);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),s!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return r}clone(){let e=new _e(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,s=e.points[i+0],a=e.points[i+1],c=e.points[i+2],p=e.points[i+3],l=e.points[i+4],u=e.points[i+5],d=e.points[i+6],m=new Dt(fl.generateUUID(),new Sr(s,a));m.controls[0].position.set(c,p),m.controls[1].position.set(l,u),m.roundness=d,this.points.push(m)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new _e;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof Fs&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,c;for(a=0,c=i.length;a<c;a++)i[a]instanceof zd&&(i[a]=Pd(i[a]));for(a=0,c=i.length;a<c;a++){let u=i[a],d=a>0?i[a-1]:null,m;u instanceof Fs?(m=this.createPoint(u.v0),m.controls[1].position.copy(u.v1)):u instanceof hl&&(m=this.createPoint(u.v1)),m!==void 0&&(d!==null&&r(m,d),s.push(m))}let p=i[i.length-1],l=!1;return p instanceof Fs?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),l=!0):p instanceof hl&&p.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof Vd&&(this.shapeHoles=e.holes.map(i=>{let s=new _e;return s.fromShape(i),s})),this.update(),this}};var xl=Math.PI*2;function yl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function t_(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),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Ud(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 r_(n,t,e,r,o,i,s,a,c,p){let l=Math.pow(o,2),u=Math.pow(i,2),d=Math.pow(s,2),m=Math.pow(a,2),f=l*u-l*m-u*d;f<0&&(f=0),f/=l*m+u*d,f=Math.sqrt(f)*(c===p?-1:1);let h=f*o/i*a,g=f*-i/o*s,x=h+(n+e)/2,v=g+(t+r)/2,A=(s-h)/o,_=(a-g)/i,b=(-s-h)/o,D=(-a-g)/i,S=Ud(1,0,A,_),y=Ud(A,_,b,D);return!p&&y>0&&(y-=xl),p&&y<0&&(y+=xl),{centerx:x,centery:v,ang1:S,ang2:y}}function kd({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||i===0)return[];let p=(n-e)/2,l=(t-r)/2;if(p===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let d=r_(n,t,e,r,o,i,p,l,s,a),{ang1:m,ang2:f}=d,{centerx:h,centery:g}=d,x=Math.abs(f)/(xl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);f/=v;for(let A=0;A<v;A++)c.push(t_(m,f)),m+=f;return c.map(A=>{let{x:_,y:b}=yl(A[0],o,i,h,g),{x:D,y:S}=yl(A[1],o,i,h,g),{x:y,y:P}=yl(A[2],o,i,h,g);return{x1:_,y1:b,x2:D,y2:S,x:y,y:P}})}import{BufferAttribute as zs,BufferGeometry as a_}from"three";var Le;(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"})(Le||(Le={}));var Ue;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ue||(Ue={}));function ue(n,t){if(!n)throw t||"Assertion Failed!"}var se=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){ue(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){ue(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){ue(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){ue(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 s,a,c;n.vertLeq(t,e)||(c=t,t=e,e=c),n.vertLeq(r,o)||(c=r,r=o,o=c),n.vertLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.vertLeq(r,e)?n.vertLeq(e,o)?(s=n.edgeEval(t,r,e),a=n.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,e.s)):(s=n.edgeSign(t,r,e),a=-n.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(c=t,t=e,e=c),n.transLeq(r,o)||(c=r,r=o,o=c),n.transLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.transLeq(r,e)?n.transLeq(e,o)?(s=n.transEval(t,r,e),a=n.transEval(r,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,e.t)):(s=n.transSign(t,r,e),a=-n.transSign(t,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,o.t)):i.t=(r.t+e.t)/2},n}(),qn=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}(),Vs=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}(),Ko=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}(),jd=function(){function n(){var t=new Ko,e=new qn,r=new Vs(0),o=new Vs(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 Vs(0),r=new Vs(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;ue(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 s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ue(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 s=e;do s.Lface=o,s=s.Lnext;while(s!==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,s=t.next;s.prev=i,i.next=s},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,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new Ko,e=new Ko,r=new qn,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 Ko;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new qn;this.makeFace_(s,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 qn;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 Ko;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 s=new qn;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,a;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);s=t.prev,a=t.next,a.prev=s,s.next=a},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,s,a,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),a+c-2<=t&&se.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&se.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,a,c,p;for(i=t,i=t;(o=i.next)!==t;i=o){ue(o.prev===i),c=o.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){ue(s.prev===a),c=s.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ue(s.prev===a&&s.anEdge===null),p=r,p=r;(c=p.next)!==r;p=c)ue(c.Sym.next===p.Sym),ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Org!==null),ue(c.Dst!==null),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c);ue(c.Sym.next===p.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),Hd=function(){function n(){this.handle=null}return n}(),Wd=function(){function n(){this.key=null,this.node=0}return n}(),o_=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 Hd,this.handles[r]=new Wd;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,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>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=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===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=s}},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 Hd;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Wd}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;ue(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}(),vl=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}(),qd=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),n_=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new qd,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 qd;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}(),i_=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,s=r.eUp;if(i.Dst===o)return s.Dst===o?se.vertLeq(i.Org,s.Org)?se.edgeSign(s.Dst,i.Org,s.Org)<=0:se.edgeSign(i.Dst,s.Org,i.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(i.Dst,o,i.Org)>=0;var a=se.edgeEval(i.Dst,o,i.Org),c=se.edgeEval(s.Dst,o,s.Org);return a>=c},n.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ue(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 vl;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 Le.ODD:return(e&1)!==0;case Le.NONZERO:return e!==0;case Le.POSITIVE:return e>0;case Le.NEGATIVE:return e<0;case Le.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,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),n.finishRegion(t,s),a=i.eUp,s=i}return a},n.addRightEdges=function(t,e,r,o,i,s){var a,c,p,l,u=!0;p=r;do ue(se.vertLeq(p.Org,p.Dst)),n.addRegionBelow(t,e,p.Sym),p=p.Onext;while(p!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,l=i;a=n.regionBelow(c),p=a.eUp.Sym,p.Org===l.Org;)p.Onext!==l&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(l.Oprev,p)),a.windingNumber=c.windingNumber-p.winding,a.inside=n.isWindingInside(t,a.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(t,c)&&(n.addWinding(p,l),n.deleteRegion(t,c),t.mesh.delete(l)),u=!1,c=a,l=p;c.dirty=!0,ue(c.windingNumber-p.winding===a.windingNumber),s&&n.walkDirtyRegions(t,c)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=se.vertL1dist(e,t),i=se.vertL1dist(r,t),s=.5*i/(o+i),a=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(se.vertLeq(o.Org,i.Org)){if(se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;se.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(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(se.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,s;if(ue(!se.vertEq(o.Dst,i.Dst)),se.vertLeq(o.Dst,i.Dst)){if(se.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(se.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,a=i.Org,c=o.Dst,p=i.Dst,l,u,d=new Ko,m,f;if(ue(!se.vertEq(p,c)),ue(se.edgeSign(c,t.event,s)<=0),ue(se.edgeSign(p,t.event,a)>=0),ue(s!==t.event&&a!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),u=Math.max(a.t,p.t),l>u))return!1;if(se.vertLeq(s,a)){if(se.edgeSign(p,s,a)>0)return!1}else if(se.edgeSign(c,a,s)<0)return!1;return n.debugEvent(t),se.intersect(c,s,p,a,d),ue(Math.min(s.t,c.t)<=d.t),ue(d.t<=Math.max(a.t,p.t)),ue(Math.min(p.s,c.s)<=d.s),ue(d.s<=Math.max(a.s,s.s)),se.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),m=se.vertLeq(s,a)?s:a,se.vertLeq(m,d)&&(d.s=m.s,d.t=m.t),se.vertEq(d,s)||se.vertEq(d,a)?(n.checkForRightSplice(t,e),!1):!se.vertEq(c,t.event)&&se.edgeSign(c,t.event,d)>=0||!se.vertEq(p,t.event)&&se.edgeSign(p,t.event,d)<=0?p===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):c===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,f,!0),!0):(se.edgeSign(c,t.event,d)>=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),se.edgeSign(p,t.event,d)<=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=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,c,a,p),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,s=n.regionBelow(e),a=e.eUp,c=s.eUp,p=!1;if(a.Dst!==c.Dst&&n.checkForIntersect(t,e),se.vertEq(a.Org,t.event)&&(t.mesh.splice(i.Oprev,a),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),p=!0),se.vertEq(c.Org,t.event)&&(t.mesh.splice(r,c.Oprev),r=n.finishLeftRegions(t,s,null),p=!0),p){n.addRightEdges(t,e,r.Onext,i,i,!0);return}se.vertLeq(c.Org,a.Org)?o=c.Oprev:o=a,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,s,a,c;if(o=e.eUp,se.vertEq(o.Org,r)){ue(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!se.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}ue(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=a=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(t,c),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),se.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,a,c,p=new vl;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=se.vertLeq(a.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=t.mesh.connect(a.Dnext,e.anEdge);c=l.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,c):n.computeWinding(t,n.addRegionBelow(t,r,c)),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);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(t,i,null);a.Onext===s?n.connectRightVertex(t,o,a):n.addRightEdges(t,o,a.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new vl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,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 n_(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,s=t.bmin[1]-r,a=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,a)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(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,se.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 o_(i,se.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,ue(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||!se.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}(),s_=function(){function n(){this.mesh=new jd,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=Le.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,s,a,c=[0,0,0],p=[0,0,0],l=[0,0,0],u=[0,0,0],d=[0,0,0],m=[null,null,null],f=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)i=e.coords[g],p[g]=i,f[g]=e,c[g]=i,m[g]=e;for(e=h.next;e!==h;e=e.next)for(var x=0;x<3;++x)i=e.coords[x],i<p[x]&&(p[x]=i,f[x]=e),i>c[x]&&(c[x]=i,m[x]=e);var v=0;if(c[1]-p[1]>c[0]-p[0]&&(v=1),c[2]-p[2]>c[v]-p[v]&&(v=2),p[v]>=c[v]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[v],o=m[v],l[0]=r.coords[0]-o.coords[0],l[1]=r.coords[1]-o.coords[1],l[2]=r.coords[2]-o.coords[2],e=h.next;e!==h;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],d[0]=l[1]*u[2]-l[2]*u[1],d[1]=l[2]*u[0]-l[0]*u[2],d[2]=l[0]*u[1]-l[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>a&&(a=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.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 s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var c=!0,p=t.next;p!==t;p=p.next)c?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,c=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.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(;se.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;se.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(se.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(se.edgeGoesLeft(o.Lnext)||se.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&&(se.edgeGoesRight(r.Lprev)||se.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,s=0,a=0,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var p=i.Org;p.n===-1&&(p.n=a,a++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>r)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===Ue.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var p=t.vHead.next;p!==t.vHead;p=p.next)if(p.n!==-1){var u=p.n*o;this.vertices[u+0]=p.coords[0],this.vertices[u+1]=p.coords[1],o>2&&(this.vertices[u+2]=p.coords[2]),this.vertexIndices[p.n]=p.idx}for(var d=0,l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var p=i.Org;this.elements[d++]=p.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1;if(e===Ue.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.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 c=0,p=0,l=0;i=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.anEdge;do this.vertices[c++]=r.Org.coords[0],this.vertices[c++]=r.Org.coords[1],e>2&&(this.vertices[c++]=r.Org.coords[2]),this.vertexIndices[p++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[l++]=i,this.elements[l++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new jd),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,s){if(t===void 0&&(t=Le.ODD),e===void 0&&(e=Ue.POLYGONS),s===void 0&&(s=!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_(),i_.computeInterior(this,s);var a=this.mesh;return e===Ue.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ue.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},n}();function io(n){var t=n.windingRule,e=t===void 0?Le.ODD:t,r=n.elementType,o=r===void 0?Ue.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,c=a===void 0?2:a,p=n.normal,l=p===void 0?[0,0,1]:p,u=n.contours,d=u===void 0?[]:u,m=n.strict,f=m===void 0?!0:m,h=n.debug,g=h===void 0?!1:h;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var x=new s_;n.edgeCreateCallback&&(x.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(x.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)x.addContour(c||2,d[v]);return x.tesselate(e,o,s,c,l,f),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var G2=Le.ODD,R2=Le.NONZERO,F2=Le.POSITIVE,V2=Le.NEGATIVE,z2=Le.ABS_GEQ_TWO,U2=Ue.POLYGONS,k2=Ue.CONNECTED_POLYGONS,j2=Ue.BOUNDARY_CONTOURS;var Qo=class extends a_{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Le.ODD;this.elementType=Ue.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Le.ODD,elementType:Ue.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),a,c=!0,p=!0,l,u;for(let f=0,h=i.length/2;f<h;f++){let g=f*2,x=i[g+0],v=i[g+1];if(l!==void 0&&x!==l&&(c=!1),u!==void 0&&v!==u&&(p=!1),l=x,u=v,!c&&!p)break}!c&&!p&&(a=io({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=a?.vertexCount??1,m=a?.elementCount??1;if(this._positionAttribute=new zs(new Float32Array(d*3),3),this._normalAttribute=new zs(new Float32Array(d*3),3),this._uvAttribute=new zs(new Float32Array(d*2),2),this._indexAttribute=new zs(new Uint32Array(m*3),1),a){let f=1/0,h=-1/0,g=1/0,x=-1/0;for(let _=0,b=d;_<b;_++){let D=_*2,S=a.vertices[D+0],y=a.vertices[D+1];S<f&&(f=S),S>h&&(h=S),y<g&&(g=y),y>x&&(x=y)}let v=h-f,A=x-g;for(let _=0,b=d;_<b;_++){let D=_*2,S=a.vertices[D+0],y=a.vertices[D+1],P=(S-f)/v,T=(y-g)/A;this._positionAttribute.setXYZ(_,S,y,0),this._normalAttribute.setXYZ(_,0,0,1),this._uvAttribute.setXY(_,P,T)}for(let _=0,b=m;_<b;_++){let D=_*3,S=a.elements[D+0],y=a.elements[D+1],P=a.elements[D+2];this._indexAttribute.setX(D+0,S),this._indexAttribute.setX(D+1,y),this._indexAttribute.setX(D+2,P)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new Qo(this._shape,this._curveSegments);return e.userData=In(this.userData),e}};import{BufferAttribute as ks,BufferGeometry as l_}from"three";var Us=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*Us.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*Us.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,3*t);s+=3*t;let p=new Float32Array(o,s*i,2*t);a.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),p.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=c,this.uvs=p,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)}},$n=Us;$n.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var bl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Zo=class extends l_{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(S=>{let y=S.extractShapePointsToFlatArray([],i),P=[];for(let T=y.length-1;T>=1;T-=2){let O=y[T-1],C=y[T-0];P.push(O,C)}return P}),p=io({windingRule:Le.ODD,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),l=io({windingRule:Le.ODD,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]});if(!p)throw new Error("error generating geometry");let u=p.elementCount;if(l){p.elementCount+=l.elementCount;for(let S=0;S<l.elements.length;S++){let y=l.elements[S],P=S%2===0?p.vertexCount:0;p.elements.push(y+P)}for(let S=0;S<l.vertexIndices.length;S++){let y=l.vertexIndices[S],P=p.vertexCount;p.vertexIndices.push(y+P)}for(let S=0;S<l.vertices.length;S++){let y=l.vertices[S];p.vertices.push(y)}}let d=1/0,m=-1/0,f=1/0,h=-1/0;for(let S=0,y=p.vertexCount;S<y;S++){let P=S*2,T=p.vertices[P+0],O=p.vertices[P+1];T<d&&(d=T),T>m&&(m=T),O<f&&(f=O),O>h&&(h=O)}this._minX=d,this._minY=f,this._width=m-d,this._height=h-f;let g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new $n(g);let x=[],v=[];for(let S=p.elementCount-1;S>=0;S--){let y=S>=u,P=S*2,T=p.elements[P+0],O=p.elements[P+1],C=T+O,N={start:T,count:O,normals:[],continuous:[],concave:[]},j=T,W=C-1,oe=T+1,ce=this._shape.roundedCurves.length;do{let F=j-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],I=p.vertices[j*2+0],G=p.vertices[j*2+1],Q=p.vertices[oe*2+0],k=p.vertices[oe*2+1],V=I-E,z=G-B,M=Math.sqrt(V*V+z*z);V/=M,z/=M;let q=I-Q,J=G-k,ee=Math.sqrt(q*q+J*J);q/=ee,J/=ee,N.normals[F*2+0]=-J,N.normals[F*2+1]=q,N.concave[F]=V*J-z*q>0;let H=p.vertexIndices[j];if(Array.isArray(H))N.continuous[F]=!1;else{let[Z,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)N.continuous[F]=!0;else{let re=$===1?Z+1:Z-1;re=(re+ce)%ce;let le=$===1?0:1,ne=this._shape.roundedCurves[Z].getTangent($),me=this._shape.roundedCurves[re].getTangent(le);N.continuous[F]=ne.dot(me)>.95}}y&&(N.normals[F*2+0]*=-1,N.normals[F*2+1]*=-1),[W,j,oe]=[j,oe,oe+1],oe>=C&&(oe-=O)}while(oe!==T+1);let ie=[];ie.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,C*2),vertexCount:O,vertexIndices:new Array(O).fill(!0).map((F,E)=>[E,E]),elements:[0,O],elementCount:1,mesh:null},reverseMap:[],insetPoints:p.vertices.slice(T*2,C*2)});for(let F=1;F<=this._bevelSegments;F++){let E=F/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,I=[],G=[],Q=[],k=[],V=0;for(let M=0;M<O;M++){let q=M*2,J=(M-1+O)%O*2,ee=p.vertices[N.start*2+q+0],H=p.vertices[N.start*2+q+1],Z=-N.normals[J+0]*B,$=-N.normals[J+1]*B,re=-N.normals[q+0]*B,le=-N.normals[q+1]*B;if(N.concave[M]||!N.concave[M]&&y){let ne=Math.atan2($,Z),me=Math.atan2(le,re);me>ne&&(me-=Math.PI*2);let Ie=me-ne;if(N.continuous[M]||y){let fe=ne+Ie/2,Re=Math.cos(fe)*B,be=Math.sin(fe)*B;I[2*V+0]=ee+Re*(y?-1:1),I[2*V+1]=H+be*(y?-1:1),k[V]=M,V++}else{let fe=Math.max(1,Math.floor(i/4*Math.abs(Ie)/Math.PI));for(let Re=0;Re<=fe;Re++){let be=ne+Ie*(Re/fe),lt=Math.cos(be)*B,_t=Math.sin(be)*B;I[2*V+0]=ee+lt,I[2*V+1]=H+_t,k[V]=M,V++}}}else I[2*V+0]=ee+Z,I[2*V+1]=H+$,k[V]=M,G[M]=V,V++,I[2*V+0]=ee,I[2*V+1]=H,k[V]=M,V++,I[2*V+0]=ee+re,I[2*V+1]=H+le,k[V]=M,Q[M]=V,V++}let z=io({windingRule:Le.POSITIVE,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[I],edgeCreateCallback:M=>{let J=M.Org.idx,ee=k[J],H=k[(J+1)%k.length];M.idx=[ee,H],M.Sym.idx=[H,ee]},vertexIdCallback:M=>{let q=M.Lprev.idx;return[q?q[1]:0,M.idx[0]]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${F}'th loop`);if(!z.vertexCount)break;for(let M=0;M<z.vertexIndices.length;M++){let[q,J]=z.vertexIndices[M];if(q===J)continue;let ee=J;J<q&&(ee+=O);for(let H=q;H<ee;H++){let Z=H%O,$=(H+1)%O;if(!N.continuous[Z]||!N.continuous[$]){z.vertexIndices[M]=[q,Z],z.vertexIndices.splice(M+1,0,[$,J]),z.vertices.splice((M+1)*2,0,z.vertices[M*2],z.vertices[M*2+1]);break}}}ie.push({bevelI:F,angle:E,size:B,boundary:z,reverseMap:k,insetPoints:I})}let K=(F,E,B)=>{let I=0,G=F.boundary.vertexIndices.length;for(;I<G&&B(F.boundary.vertexIndices[E]);)E=(E+1)%G,I++;return I},U=x.length;for(let F=1;F<ie.length;F++){let E=ie[F-1],B=ie[F],I=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!I||!G)break;let Q=N.concave.length,k=0,V=bl(k,O);for(;!E.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)k++,V=bl(k,O);let z=E.boundary.vertexIndices.findIndex(V),M=B.boundary.vertexIndices.findIndex(V);do z=(z+1)%I;while(V(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(V(B.boundary.vertexIndices[M]));k=(k+1)%O;let q=k,J=this.buildBevelVert(N,E,(z-1+I)%I),ee=this.buildBevelVert(N,B,(M-1+G)%G),H=J,Z=ee,$,re,le=!1;do{V=bl(k,O);let ne=K(E,z,V),me=K(B,M,V),Ie=le;if(le=!1,ne&&!me){for(let fe=0;fe<ne;fe++)$=this.buildBevelVert(N,E,(z+fe)%I,fe/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$;le=!0}else if(!ne&&me)for(let fe=0;fe<me;fe++)re=this.buildBevelVert(N,B,(M+fe)%G,fe/(me-1)),x.push(Z.topN,H.topP,re.topP),x.push(H.bottomP,Z.bottomN,re.bottomP),Z=re;else if(ne&&me)if($=this.buildBevelVert(N,E,z,0),re=this.buildBevelVert(N,B,M,0),Ie?(x.push(H.topN,re.topP,Z.topN),x.push(H.topN,$.topP,re.topP),x.push(re.bottomP,H.bottomN,Z.bottomN),x.push(re.bottomP,$.bottomP,H.bottomN)):(x.push(Z.topN,H.topN,$.topP),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP)),H=$,Z=re,ne===me)for(let fe=1;fe<ne;fe++)$=this.buildBevelVert(N,E,(z+fe)%I,fe/(ne-1)),re=this.buildBevelVert(N,B,(M+fe)%G,fe/(me-1)),x.push(H.topN,$.topP,Z.topN),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP),H=$,Z=re;else if(ne>me){let fe=ne/me,Re=0;for(let be=1;be<ne;be++)$=this.buildBevelVert(N,E,(z+be)%I,be/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$,be>(Re+1)*fe&&(Re++,re=this.buildBevelVert(N,B,(M+Re)%G,Re/(me-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re)}else{let fe=me/ne,Re=0;for(let be=1;be<me;be++)re=this.buildBevelVert(N,B,(M+be)%G,be/(me-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re,be>(Re+1)*fe&&(Re++,$=this.buildBevelVert(N,E,(z+Re)%I,Re/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$)}z=(z+ne)%I,M=(M+me)%G,k=(k+1)%Q}while(k!==q)}{let F=ie[0];for(let E=0,B=F.boundary.vertexCount;E<B;E++){let I=this.buildBevelVert(N,F,E),G=this.buildBevelVert(N,F,(E+1)%B);x.push(G.topP,I.topN,I.bottomN),x.push(G.topP,I.bottomN,G.bottomP)}}if(y){let F=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],I=x[E-1],G=x[E-0];F.push(G,I,B)}x.splice(U,x.length-U,...F)}if(y){let F=[];for(let E=ie[ie.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=ie[ie.length-1].boundary.vertices[E-1],I=ie[ie.length-1].boundary.vertices[E-0];F.push(B,I)}v.push(F)}if(!y){let F=ie[ie.length-1],E=io({windingRule:ie.length>1?Le.POSITIVE:Le.ODD,elementType:Ue.POLYGONS,vertexSize:2,strict:!0,contours:[F.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");c.length===0&&Object.assign(this,{capStartIndex:x.length});for(let B=0;B<E.elementCount*3;B+=3){let I=this.buildSurfaceVert(E,E.elements[B+0]),G=this.buildSurfaceVert(E,E.elements[B+1]),Q=this.buildSurfaceVert(E,E.elements[B+2]);x.push(I.top,G.top,Q.top),x.push(Q.bottom,G.bottom,I.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new ks(Uint32Array.from(x),1),_=new ks(this._buffer.positions,3),b=new ks(this._buffer.normals,3),D=new ks(this._buffer.uvs,2);_.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",_),this.setAttribute("normal",b),this.setAttribute("uv",D),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(i-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),l=p*3,u=p*2,d={top:p+0,bottom:p+1};return this._buffer.positions[l+0]=i,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[u+0]=a,this._buffer.uvs[u+1]=c,this._buffer.positions[l+3]=i,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[u+2]=a,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,c]=r.boundary.vertexIndices[o],p,l,u,d;a!==c?(l=a,p=c,d=!1,u=e.continuous[l]&&e.continuous[p]):(p=a,l=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let m=Math.cos(r.angle),f=Math.sin(r.angle),h=o*2,g=p*2,x=l*2,v=r.boundary.vertices[h+0],A=r.boundary.vertices[h+1],_=(1-f)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,S=e.normals[g+0],y=e.normals[g+1],P=e.normals[x+0],T=e.normals[x+1];if(d){let W=P-S,oe=T-y;S=S+W*(1-i),y=y+oe*(1-i);let ce=Math.sqrt(S*S+y*y);S/=ce,y/=ce}let O=this._buffer.get(u?2:4),C=O*3,N=O*2,j={i:o,fi:p,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1};return this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=S*m,this._buffer.normals[C+1]=y*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=S*m,this._buffer.normals[C+4]=y*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b,u||(O+=2,C+=6,N+=4,j.topP=O+0,j.bottomP=O+1,this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=P*m,this._buffer.normals[C+1]=T*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=P*m,this._buffer.normals[C+4]=T*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b),this.vertexCache[s]=j,j}clone(){let e=new Zo(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=In(this.userData),e}};var st=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},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof _e?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new _e(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new _e(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:a}),shape:c}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new Qo(n.shape,o):s=new Zo(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Xd,Vector2 as Yd}from"three";var Kd=Math.PI*2,Qd=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{shape:n.shape&&n.shape instanceof _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,p=n.shape,l=t*.5,u=e*.5,d=c_(p,l,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let m=st.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(m,{userData:{...n,type:"EllipseGeometry"}})}};function c_(n,t,e,r,o,i){if(r>=Kd)return o>30||o%4===0?(p_(n,t,e,i),Math.round(o/4)):$d(n,r,o,t,e,i);let s={x:0,y:e},a=r+Math.PI*.5,c={x:Math.cos(a)*t,y:Math.sin(a)*e},p=kd({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%p.length===0?u_(n,s.x,s.y,p,o,t,e,i):$d(n,r,o,t,e,i)}function u_(n,t,e,r,o,i,s,a){let c=Math.round(o/r.length);n.addPoint(Jo(t,e));for(let p=0,l=r.length;p<l;p++){let u=r[p],d=n.points[p],m=Jo(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),m.controls[0].position.set(u.x2,u.y2),n.addPoint(m)}return a>0?Zd(n,i,s,a):n.addPoint(Jo(0,0)),c}function $d(n,t,e,r,o,i){let s=-t/e;for(let a=0;a<=e;a++){let c=s*a,p=Math.sin(c)*r,l=Math.cos(c)*o;n.addPoint(Jo(p,l))}return t<Kd?i>0?Zd(n,r,o,i):n.addPoint(Jo(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Jd(n,r,o,i)),1}function p_(n,t,e,r=0,o=0,i=0){let s=.5522847498,a=t*s,c=e*s;n.addPoint(js(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(js(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(js(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(js(o,i-e,o+a,i-e,o-a,i-e)),r>0&&Jd(n,t,e,r)}function Jo(n,t){return new Dt(Xd.generateUUID(),new Yd(n,t))}function js(n,t,e,r,o,i){let s=Jo(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Zd(n,t,e,r){em(n,t,e,r).forEach(i=>n.addPoint(i))}function Jd(n,t,e,r){let o=em(n,t,e,r),i=new _e;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function em(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new Yd(o/t,i/e),a=n.points.map(c=>{let p=c.clone();return p.uuid=Xd.generateUUID(),p}).reverse();return a.forEach(c=>{c.position.multiply(s);let p=c.controls[0].position.clone().multiply(s),l=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(l),c.controls[1].position.copy(p)}),a}import{BufferGeometry as d_,Float32BufferAttribute as _l,Vector3 as tm}from"three";var rm=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),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,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:s,pathRadius:a,pathType:c,pathSegments:p,cornerRadius:l,cornerSegments:u}=n.parameters,d=new Xn(!1,t,e,r,o,i,s,a,c,p,l,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Xn=class extends d_{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,a=1,c=1,p=1,l=1,u=1,d=1){super();let m=t&&s===1;m&&(d=0),u>100&&(u=100);let f=()=>new tm,h=new tm,g=f(),x=f(),v=f(),A,_,b,D,S,y,P,T,O=f(),C=f(),N=f(),j=f(),W=f(),oe=f(),ce=f(),ie=f(),K=r-2*c+.001,U=K/s,F=Math.ceil(a*s),E=F+1,B=K/F,I=-K/2,G=l+1,Q=2*Math.PI/l,k=Math.PI/2/d,V=.01,z=Math.min((1-u/100)*c,c-V),M=c-z,q=0,J=2,ee=d*J+J,H=G*ee/J,Z=H+G*E,$=G*(E+ee),[re,le,ne]=[3,3,2].map(Be=>Array($*Be).fill(0)),me=[],Ie=i-c;function fe(Be,gt){let kt=Math.PI/2;y=gt*B,T=2*Math.PI*(y%U)/U+kt,y+=I,P=Math.sin(T)*Ie,S=Math.cos(T)*Ie,t?Be.set(S,P,y):Be.set(S,y,P)}fe(h,-1e-10),fe(g,0),O.copy(h),fe(h,1);let Re=h.distanceTo(g),be=M+z,lt=Re*F+2*be,_t=z,go=lt-be;for(let Be=0;Be<=F;Be++){fe(x,Be),ie.subVectors(x,O).normalize(),O.copy(x),oe.copy(x).setComponent(+t+1,0).normalize(),ce.crossVectors(ie,oe).normalize();let gt=Be===0,kt=Be===F,nh=gt?3*Math.PI/2:k,ih=gt?_t:go,sh=gt?G:Z,ah=gt?0:$-G,lh=ie.clone().multiplyScalar(gt?-M:M).add(x),ch=ie.clone().multiplyScalar(gt?-1:1).normalize();for(let mr=0;mr<G;mr++){let vc=mr*Q;if(C.addVectors(h.copy(oe).multiplyScalar(c*Math.cos(vc)),g.copy(ce).multiplyScalar(c*Math.sin(vc))),N.copy(C).normalize(),gt||kt){m||(q=ah+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=lh.getComponent(ct),le[q*3+ct]=ch.getComponent(ct)}),ne[q*2]=+kt,ne[q*2+1]=mr/l),g.copy(N).multiplyScalar(z),v.addVectors(x,g);for(let ct=0;ct<d;ct++){let wa=ct*k+nh;j.addVectors(h.copy(ie).multiplyScalar(M*Math.sin(wa)),g.copy(N).multiplyScalar(M*Math.cos(wa))),W.copy(j).normalize(),g.addVectors(v,j),j.normalize(),q=sh+ct*G+mr,[0,1,2].forEach(Pi=>{re[q*3+Pi]=g.getComponent(Pi),le[q*3+Pi]=W.getComponent(Pi)});let uh=+gt+Math.sin(wa);ne[q*2]=(ih+M*uh)/lt,ne[q*2+1]=mr/l}}g.addVectors(x,C),q=H+Be*G+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=g.getComponent(ct),le[q*3+ct]=N.getComponent(ct)}),ne[q*2]=(be+Be*Re)/lt,ne[q*2+1]=mr/l}}let ht=E+2*d+J,yo=1,[Li,Oi]=m?[yo,yo+E-1]:[0,ht-1];for(let Be=Li;Be<=Oi-1;Be++){let gt=m&&Be===Oi-1;for(let kt=0;kt<G-1;kt++)A=Be*G+kt,_=A+1,b=(gt?kt:A)+G,D=(gt?kt+1:_)+G,Be===0?me.push(_,D,b):Be===ht-2?me.push(A,_,b):me.push(A,_,b,_,D,b)}this.setIndex(me),this.setAttribute("position",new _l(re,3)),this.setAttribute("normal",new _l(le,3)),this.setAttribute("uv",new _l(ne,2))}};import{IcosahedronBufferGeometry as m_}from"three";var om=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:s}=n.parameters,a=o===0&&i!==0?new Yn(t*.5,i,s):new m_(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},Yn=class extends Ur{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],s=[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],a="IcosahedronGeometry";super(i,s,a,t,e,r),this.type=a}static fromJSON(t){return new Yn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as f_,Shape as h_}from"three";var nm=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 h_;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 f_(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as um,BufferGeometryLoader as A_,Vector3 as C_,BoxBufferGeometry as pm}from"three";import{BufferGeometry as __,Vector2 as Tl,Vector3 as cm}from"three";import{Box3 as g_,BufferAttribute as Kn,BufferGeometry as im,Color as am,EventDispatcher as y_,Float32BufferAttribute as en,Matrix3 as sm,Matrix4 as lm,MathUtils as x_,Object3D as v_,Sphere as b_,Vector2 as Ct,Vector3 as rt}from"three";var Kt=new lm,Sl=new v_,Hs=new rt,jr=class extends y_{constructor(){super(),this.uuid=x_.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 sm().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 s=0,a=i.vertexNormals.length;s<a;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return Kt.makeRotationX(t),this.applyMatrix4(Kt),this}rotateY(t){return Kt.makeRotationY(t),this.applyMatrix4(Kt),this}rotateZ(t){return Kt.makeRotationZ(t),this.applyMatrix4(Kt),this}translate(t,e,r){return Kt.makeTranslation(t,e,r),this.applyMatrix4(Kt),this}scale(t,e,r){return Kt.makeScale(t,e,r),this.applyMatrix4(Kt),this}lookAt(t){return Sl.lookAt(t),Sl.updateMatrix(),this.applyMatrix4(Sl.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,s=o.normal,a=o.color,c=o.uv,p=o.uv2;p!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new rt().fromBufferAttribute(i,d)),a!==void 0&&e.colors.push(new am().fromBufferAttribute(a,d));function l(d,m,f,h){let g=a===void 0?[]:[e.colors[d].clone(),e.colors[m].clone(),e.colors[f].clone()],x=s===void 0?[]:[new rt().fromBufferAttribute(s,d),new rt().fromBufferAttribute(s,m),new rt().fromBufferAttribute(s,f)],v=new tn(d,m,f,x,g,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Ct().fromBufferAttribute(c,d),new Ct().fromBufferAttribute(c,m),new Ct().fromBufferAttribute(c,f)]),p!==void 0&&e.faceVertexUvs[1].push([new Ct().fromBufferAttribute(p,d),new Ct().fromBufferAttribute(p,m),new Ct().fromBufferAttribute(p,f)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let m=u[d],f=m.start,h=m.count;for(let g=f,x=f+h;g<x;g+=3)r!==void 0?l(r.getX(g),r.getX(g+1),r.getX(g+2),m.materialIndex):l(g,g+1,g+2,m.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)l(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)l(d,d+1,d+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(Hs).negate(),this.translate(Hs.x,Hs.y,Hs.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new lm;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 rt,e=new rt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=this.vertices[i.a],a=this.vertices[i.b],c=this.vertices[i.c];t.subVectors(c,a),e.subVectors(s,a),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 rt;if(t){let r=new rt,o=new rt;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=this.vertices[a.a],p=this.vertices[a.b],l=this.vertices[a.c];r.subVectors(l,p),o.subVectors(c,p),r.cross(o),e[a.a].add(r),e[a.b].add(r),e[a.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],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[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,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new jr;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,s=this.morphNormals[e].vertexNormals;for(let a=0,c=this.faces.length;a<c;a++){let p=new rt,l={a:new rt,b:new rt,c:new rt};i.push(p),s.push(l)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=o.faceNormals[i],p=o.vertexNormals[i];c.copy(a.normal),p.a.copy(a.vertexNormals[0]),p.b.copy(a.vertexNormals[1]),p.c.copy(a.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 g_),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new b_),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,s=this.vertices,a=t.vertices,c=this.faces,p=t.faces,l=this.colors,u=t.colors;e!==void 0&&(o=new sm().getNormalMatrix(e));for(let d=0,m=a.length;d<m;d++){let h=a[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,m=u.length;d<m;d++)l.push(u[d].clone());for(let d=0,m=p.length;d<m;d++){let f=p[d],h,g,x=f.vertexNormals,v=f.vertexColors,A=new tn(f.a+i,f.b+i,f.c+i);A.normal.copy(f.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let _=0,b=x.length;_<b;_++)h=x[_].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(f.color);for(let _=0,b=v.length;_<b;_++)g=v[_],A.vertexColors.push(g.clone());A.materialIndex=f.materialIndex+r,c.push(A)}for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;A++)v.push(x[A].clone());this.faceVertexUvs[d].push(v)}}}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 c=0,p=this.vertices.length;c<p;c++){let l=this.vertices[c],u=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.z*i);e[u]===void 0?(e[u]=c,r.push(this.vertices[c]),o[c]=r.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,p=this.faces.length;c<p;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let u=[l.a,l.b,l.c];for(let d=0;d<3;d++)if(u[d]===u[(d+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let p=s[c];this.faces.splice(p,1);for(let l=0,u=this.faceVertexUvs.length;l<u;l++)this.faceVertexUvs[l].splice(p,1)}let a=this.vertices.length-r.length;return this.vertices=r,a}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let c=0;c<e;c++)t[c]._id=c;function r(c,p){return c.materialIndex-p.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),a&&a.push(i[p])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}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 f=this.parameters;for(let h in f)f[h]!==void 0&&(t[h]=f[h]);return t}let e=[];for(let f=0;f<this.vertices.length;f++){let h=this.vertices[f];e.push(h.x,h.y,h.z)}let r=[],o=[],i={},s=[],a={},c=[],p={};for(let f=0;f<this.faces.length;f++){let h=this.faces[f],g=!0,x=!1,v=this.faceVertexUvs[0][f]!==void 0,A=h.normal.length()>0,_=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,S=0;if(S=l(S,0,0),S=l(S,1,g),S=l(S,2,x),S=l(S,3,v),S=l(S,4,A),S=l(S,5,_),S=l(S,6,b),S=l(S,7,D),r.push(S),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let y=this.faceVertexUvs[0][f];r.push(m(y[0]),m(y[1]),m(y[2]))}if(A&&r.push(u(h.normal)),_){let y=h.vertexNormals;r.push(u(y[0]),u(y[1]),u(y[2]))}if(b&&r.push(d(h.color)),D){let y=h.vertexColors;r.push(d(y[0]),d(y[1]),d(y[2]))}}function l(f,h,g){return g?f|1<<h:f&~(1<<h)}function u(f){let h=f.x.toString()+f.y.toString()+f.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(f.x,f.y,f.z)),i[h]}function d(f){let h=f.r.toString()+f.g.toString()+f.b.toString();return a[h]!==void 0||(a[h]=s.length,s.push(f.getHex())),a[h]}function m(f){let h=f.x.toString()+f.y.toString();return p[h]!==void 0||(p[h]=c.length/2,c.push(f.x,f.y)),p[h]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),c.length>0&&(t.data.uvs=[c]),t.data.faces=r,t}clone(){return new jr().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 d=0,m=e.length;d<m;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,m=r.length;d<m;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,m=o.length;d<m;d++)this.faces.push(o[d].clone());for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let i=t.morphTargets;for(let d=0,m=i.length;d<m;d++){let f={};if(f.name=i[d].name,i[d].vertices!==void 0){f.vertices=[];for(let h=0,g=i[d].vertices.length;h<g;h++)f.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){f.normals=[];for(let h=0,g=i[d].normals.length;h<g;h++)f.normals.push(i[d].normals[h].clone())}this.morphTargets.push(f)}let s=t.morphNormals;for(let d=0,m=s.length;d<m;d++){let f={};if(s[d].vertexNormals!==void 0){f.vertexNormals=[];for(let h=0,g=s[d].vertexNormals.length;h<g;h++){let x=s[d].vertexNormals[h],v={};v.a=x.a.clone(),v.b=x.b.clone(),v.c=x.c.clone(),f.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){f.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)f.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(f)}let a=t.skinWeights;for(let d=0,m=a.length;d<m;d++)this.skinWeights.push(a[d].clone());let c=t.skinIndices;for(let d=0,m=c.length;d<m;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,m=p.length;d<m;d++)this.lineDistances.push(p[d]);let l=t.boundingBox;l!==null&&(this.boundingBox=l.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 wl().fromGeometry(this),e=new im,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new Kn(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new Kn(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new Kn(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new Kn(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new Kn(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let p=s[a],l=new en(p.data.length*3,3);l.name=p.name,i.push(l.copyVector3sArray(p.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new en(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new en(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(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 im,r=t.geometry;if(t.isPoints||t.isLine){let o=new en(r.vertices.length*3,3),i=new en(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",i.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new en(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(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}};jr.prototype.isGeometry=!0;var wl=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,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.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,s=o[1]&&o[1].length>0,a=t.morphTargets,c=a.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:a[x].name,data:[]};this.morphTargets.position=p}let l=t.morphNormals,u=l.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:l[x].name,data:[]};this.morphTargets.normal=d}let m=t.skinIndices,f=t.skinWeights,h=m.length===r.length,g=f.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let x=0;x<e.length;x++){let v=e[x];this.vertices.push(r[v.a],r[v.b],r[v.c]);let A=v.vertexNormals;if(A.length===3)this.normals.push(A[0],A[1],A[2]);else{let b=v.normal;this.normals.push(b,b,b)}let _=v.vertexColors;if(_.length===3)this.colors.push(_[0],_[1],_[2]);else{let b=v.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][x];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",x),this.uvs.push(new Ct,new Ct,new Ct))}if(s===!0){let b=o[1][x];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",x),this.uvs2.push(new Ct,new Ct,new Ct))}for(let b=0;b<c;b++){let D=a[b].vertices;p[b].data.push(D[v.a],D[v.b],D[v.c])}for(let b=0;b<u;b++){let D=l[b].vertexNormals[x];d[b].data.push(D.a,D.b,D.c)}h&&this.skinIndices.push(m[v.a],m[v.b],m[v.c]),g&&this.skinWeights.push(f[v.a],f[v.b],f[v.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}},tn=class{constructor(t,e,r,o,i,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new am,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}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}};var S_=["a","b","c"];function w_(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Al(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Cl(n,t,e,r,o,i){let s=Math.min(n,t),a=Math.max(n,t),c=s+"_"+a,p;if(r.has(c))p=r.get(c);else{let l=e[s],u=e[a];p={a:l,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),i[n].edges.push(p),i[t].edges.push(p)}function T_(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],Cl(s.a,s.b,n,r,s,e),Cl(s.b,s.c,n,r,s,e),Cl(s.c,s.a,n,r,s,e)}function Ws(n,t,e,r,o){n.push(new tn(t,e,r,void 0,void 0,o))}function rn(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function qs(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var $s=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof __?t=new jr().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 cm,r,o,i,s,a,c=t.vertices,p=t.faces,l=t.faceVertexUvs[0],u=l!==void 0&&l.length>0,d=[],m=new Map;T_(c,p,d,m);let f=[],h,g,x,v,A,_,b;for(let V of Array.from(m.keys())){for(g=m.get(V),x=new cm,A=3/8,_=1/8,b=g.faces.length,b!=2&&(A=.5,_=0,b!=1),x.addVectors(g.a,g.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(v=g.faces[s],a=0;a<3&&(h=c[w_(v,S_[a])],!(h!==g.a&&h!==g.b));a++);h&&e.add(h)}e.multiplyScalar(_),x.add(e),g.newEdge=f.length,f.push(x)}let D,S,y,P,T,O,C,N=[];for(o=0,i=c.length;o<i;o++){for(O=c[o],T=d[o].edges,r=T.length,r==3?D=3/16:r>3&&(D=3/(8*r)),S=1-r*Number(D),y=D,r<=2&&(r==2?(S=3/4,y=1/8):r==1||r==0),C=O.clone().multiplyScalar(S),e.set(0,0,0),s=0;s<r;s++)P=T[s],h=P.a!==O?P.a:P.b,e.add(h);e.multiplyScalar(Number(y)),C.add(e),N.push(C)}let j=N.concat(f),W=N.length,oe,ce,ie,K=[],U=[],F,E,B,I,G=new Tl,Q=new Tl,k=new Tl;for(o=0,i=p.length;o<i;o++)v=p[o],oe=Number(Al(v.a,v.b,m).newEdge)+W,ce=Number(Al(v.b,v.c,m).newEdge)+W,ie=Number(Al(v.c,v.a,m).newEdge)+W,Ws(K,oe,ce,ie,v.materialIndex),Ws(K,v.a,oe,ie,v.materialIndex),Ws(K,v.b,ce,oe,v.materialIndex),Ws(K,v.c,ie,ce,v.materialIndex),u&&(F=l[o],E=F[0],B=F[1],I=F[2],G.set(rn(E.x,B.x),rn(E.y,B.y)),Q.set(rn(B.x,I.x),rn(B.y,I.y)),k.set(rn(E.x,I.x),rn(E.y,I.y)),qs(U,G,Q,k),qs(U,E,G,k),qs(U,B,Q,G),qs(U,I,k,Q));t.vertices=j,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var ke=new C_,dm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new um().copy(new pm(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ke),r={width:ke.x,height:ke.y,depth:ke.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 um().copy(new pm(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ke)):ke.set(s.width,s.height,s.depth),(t!==ke.x||e!==ke.y||r!==ke.z)&&i.scale(ke.x===0?1:t/ke.x,ke.y===0?1:e/ke.y,ke.z===0?1:r/ke.z);let a=i.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new $s(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new A_(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ke);let s=100/ke.x;Object.assign(i.parameters,{width:100,height:ke.y*s,depth:ke.z*s}),t(this.build(i))})}};var mm=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 _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}=n.parameters,c=n.shape,p=t*.5,l=e*.5,u=0,d=0,m=2*Math.PI/r;for(let h=0;h<r;h++){let g=m*h,x=u+Math.sin(g)*p,v=d+Math.cos(g)*l;c.addPoint(c.createPoint(x,v))}c.isClosed=!0;for(let h=0,g=c.points.length;h<g;h++)c.points[h].roundness=o;c.roundness=o,c.update();let f=st.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as N_,Float32BufferAttribute as Nl,Vector2 as Qt,Vector3 as Xe}from"three";var fm=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:s,cornerRadius:a,cornerSegments:c}=n.parameters,p=new Ol(t*.5,e,o,i,s,a,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function Qn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Ll(n,t,e,r,o,i){let s=t.clone().sub(n),a=e.clone().sub(n),c=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let p=s.add(a).normalize();i.copy(n).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(p)),i.addScaledVector(a,r/Math.sin(p))}}function L_(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Ol=class extends N_{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let c=[],p=[],l=[],u=[],d=0,m=e/2,f=Math.PI/r,h=t*Math.cos(Math.PI/r),g=2*Math.PI/r,x=(r-2)*Math.PI/r,v=Math.PI-x,A=new Xe(0,-m,0),_=new Xe(0,m,0),b=new Qt(t,-m),D=new Qt(h,-m),S=new Qt(0,_.y).sub(D),y=new Qt(0,_.y).sub(b),P=new Qt(S.y,-S.x).normalize(),T=new Qt(y.y,-y.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-S.angle())/2)-1e-8;s=Math.min(s,C);let N;{let U=new Xe(P.x,P.y,0),F=new Xe(Math.cos(g)*U.x,U.y,Math.sin(g)*U.x);N=U.angleTo(F)}let j=s/Math.tan((Math.PI-S.angle())/2),W=s/Math.tan((Math.PI-N)/2),oe=new Xe;if(!i){p.push(A.x,A.y,A.z),l.push(0,-1,0),u.push(0,0);let U=d++,F=[],E=b.clone(),B=j/Math.cos(Math.PI/r);E.x-=B;for(let I=0;I<r;I++){let G=I/r*Math.PI*2+f,Q=new Qt(Math.sin(G),Math.cos(G));Qn(E,Q,oe),p.push(oe.x,oe.y,oe.z),l.push(0,-1,0),u.push(0,0),F.push(d++)}for(let I=0;I<F.length;I++)c.push(F[I],U,F[(I+1)%F.length])}let ce=[];{let U=new Xe,F=new Xe,E=new Xe,B=new Xe,I=new Xe,G=new Xe;for(let Q=0;Q<r;Q++){let k=Q/r*Math.PI*2+f,V=(Q+.5)/r*Math.PI*2+f,z=(Q+1)/r*Math.PI*2+f,M=new Qt(Math.sin(k),Math.cos(k)),q=new Qt(Math.sin(V),Math.cos(V)),J=new Qt(Math.sin(z),Math.cos(z));Qn(b,M,F),Qn(b,J,E),Qn(P,q,U),Ll(_,F,E,W,W,B),p.push(B.x,B.y,B.z),Ll(F,_,E,W,j,I),p.push(I.x,I.y,I.z),Ll(E,F,_,j,W,G),p.push(G.x,G.y,G.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),u.push(0,0),u.push(0,0),u.push(0,0);let ee=d++,H=d++,Z=d++;if(c.push(ee,H,Z),s>0){{let le=F.clone().add(E).multiplyScalar(.5),ne=_.clone().sub(le).normalize(),Ie=A.clone().sub(le).normalize().add(ne).normalize().multiplyScalar(-1),fe=G.clone().sub(I);ie(le,fe,Ie,S.angle())}let $,re;{let le=new Xe;Qn(T,J,le);let ne=G.clone().add(B).multiplyScalar(.5);ne=L_(ne,E,_);let me=G.clone().sub(B);[$,re]=ie(ne,me,le,N,B.y)}{let le=$,ne=le.clone().setY(0).normalize(),me=new Xe(0,-1,0),Ie=ne.clone().cross(me);K(le,ne,me,Ie)}ce.concat(re);{let le=S.angle(),ne=Math.PI-le,me=_.clone();me.y-=s/Math.sin(le-Math.PI/2);let Ie=new Xe,fe=[];for(let be=0;be<a;be++){let lt=[],_t=Math.PI/2-ne*be/a,go=Math.cos(_t),ht=Math.sin(_t),yo=V;for(let Li=0;Li<=be;Li++){let Oi=Math.cos(yo),Be=Math.sin(yo);U.x=go*Be,U.y=ht,U.z=go*Oi,Ie.copy(me).addScaledVector(U,s),p.push(Ie.x,Ie.y,Ie.z),l.push(U.x,U.y,U.z),u.push(0,0),lt.push(d++),yo+=Math.PI*2/be/r}fe.push(lt)}re.reverse(),fe.push(re);let Re=fe.length-1;for(let be=0;be<Re;be++){let lt=fe[be],_t=fe[be+1],go=lt.length-1;c.push(_t[1],lt[0],_t[0]);for(let ht=1;ht<=go;ht++)c.push(lt[ht],lt[ht-1],_t[ht]),c.push(_t[ht+1],lt[ht],_t[ht])}}}}}this.setIndex(c),this.setAttribute("position",new Nl(p,3)),this.setAttribute("normal",new Nl(l,3)),this.setAttribute("uv",new Nl(u,2));function ie(U,F,E,B,I){let G=-B/2,Q=(Math.PI-B)/2,k=F.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let V=new Xe,z=new Xe,M=1,q=d,J=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*B;z.set(0,0,0),z.addScaledVector(k,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Z=0;Z<=M;Z++){let $=Z/M-.5;if(V.copy(U),V.addScaledVector(F,$),V.addScaledVector(z,s),I!=null){let re=Math.max(0,V.y-I);V.addScaledVector(F,-re/F.y)}p.push(V.x,V.y,V.z),l.push(z.x,z.y,z.z),u.push(0,0),Z===0&&J.push(d),d++}}for(let ee=0;ee<a;ee++)for(let H=0;H<M;H++){let Z=q+H+(M+1)*ee,$=Z+(M+1),re=$+1,le=Z+1;c.push(Z,$,le),c.push($,re,le)}return[U.clone().addScaledVector(F,.5),J]}function K(U,F,E,B){let I=Math.PI/2,G=y.angle()-I,Q=[],k=new Xe,V=new Xe;for(let M=0;M<=a;M++){let q=[],J=M/a;for(let ee=0;ee<=M;ee++){let Z=((M?ee/M:0)-.5)*v,$=Math.cos(Z),re=Math.sin(Z),le=Math.atan(Math.tan(G)*$),ne=(I+le)*J,me=Math.cos(ne),Ie=Math.sin(ne);k.set(0,0,0),k.addScaledVector(F,Ie*$),k.addScaledVector(E,me),k.addScaledVector(B,Ie*re),V.copy(U).addScaledVector(k,s),p.push(V.x,V.y,V.z),l.push(k.x,k.y,k.z),u.push(0,0),q.push(d++)}Q.push(q)}let z=Q.length-1;for(let M=0;M<z;M++){let q=Q[M],J=Q[M+1],ee=q.length-1;c.push(q[0],J[1],J[0]);for(let H=1;H<=ee;H++)c.push(q[H-1],q[H],J[H]),c.push(q[H],J[H+1],J[H])}}}};var hm=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 _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,p={x:e*.5,y:r*.5},l={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(_,b,D){return b>e&&D>r?Math.min(_*e/b,_*r/D):b>e?_*e/b:D>r?_*r/D:_}let m=[];m[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),m[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),m[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),m[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=l.x,h=u.x,g=u.y,x=l.y;t.addPoint(t.createPoint(f,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(f,x)),t.isClosed=!0;let v=!0;for(let _=0,b=t.points.length;_<b;_++)t.points[_].roundness=m[_],_>0&&m[_]!==m[_-1]&&(v=!1);v&&(t.roundness=m[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=st.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as O_}from"three";var gm=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:Math.PI},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=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:c,thetaLength:p}=n.parameters,l=new O_(.5*t,o,i,s,a,c,p);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as P_}from"three";var ym=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 I_,Float32BufferAttribute as Pl,Vector3 as M_}from"three";var xm=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:s}=n.parameters,a=new Il(t,e,r,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},Il=class extends I_{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],p=[],l=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let u=[],d=Math.PI/2,m=(V=0,z=0,M=0)=>new M_(V,z,M),f=m(),h=m(),[g,x,v]=[e/2,t/2,r/2],A=-x,_=+x,[b,D,S]=[m(A,-g,+v),m(A,-g,-v),m(A,+g,-v)],y=(V,z=!1)=>Math.sin(V-Math.PI/(1+ +z)),P=(V,z=!1)=>Math.cos(V-Math.PI/(1+ +z));S.y=Math.sin(o)*e-g;let T=Math.cos(o)*e-v,O=b.z-l;o<=d?(S.z=Math.min(T,O),S.z==O&&(S.y-=(T-O)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-l),f.subVectors(b,D),h.subVectors(S,D);let C=Math.min(f.length(),h.length())*i/100,N=C*Math.tan(o/2),j=C/Math.cos(o/2),W=f.clone().normalize().add(h.normalize()).setLength(j).add(D);f.set(0,y(o,!0),P(o,!0)),u.push([S,f.clone()]);let oe=(Math.PI-o)/s;for(let V=0;V<=s;V++){let z=d+o+V*oe;f.set(0,Math.sin(z)*N,Math.cos(z)*N),f.add(W),h.set(0,y(z),P(z)),u.push([f.clone(),h.clone()])}u.push([b,m(0,1,0)]);let ce=Math.sin(oe/2)*N*2,ie=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[ie-1][0].distanceTo(u[ie][0]),F=K+ce*s+U;u[0].push(1);for(let V=0;V<=s;V++)u[V+1].push(1-(K+V*ce)/F);u[ie].push(0);let[E,B,I]=u[0],G,Q,k;for(let V=1;V<u.length;V++)[G,Q,k]=u[V],a.push(A,E.y,E.z,A,G.y,G.z,_,E.y,E.z,_,E.y,E.z,A,G.y,G.z,_,G.y,G.z),c.push(0,B.y,B.z,0,Q.y,Q.z,0,B.y,B.z,0,B.y,B.z,0,Q.y,Q.z,0,Q.y,Q.z),p.push(0,I,0,k,1,I,1,I,0,k,1,k),[E,B,I]=[G,Q,k];this.setAttribute("position",new Pl(a,3)),this.setAttribute("normal",new Pl(c,3)),this.setAttribute("uv",new Pl(p,2))}};var vm=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 _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}=n.parameters,l=n.shape,u=t*.5,d=e*.5,m=0,f=0,h=s*Math.PI/360/o,g=Math.PI/2*3*-1,x=u*r/100,v=d*r/100;if(o===3&&r===50){h=2*Math.PI/o;for(let _=0;_<o;_++){let b=h*_,D=m+Math.sin(b)*u,S=f+Math.cos(b)*d;l.addPoint(l.createPoint(D,S))}}else for(let _=0;_<o;_++){let b=m+Math.cos(g)*u,D=f+Math.sin(g)*d;l.addPoint(l.createPoint(b,D)),g+=h,b=m+Math.cos(g)*x,D=f+Math.sin(g)*v,_<=o,l.addPoint(l.createPoint(b,D)),g+=h}l.isClosed=!0;for(let _=0,b=l.points.length;_<b;_++)l.points[_].roundness=i;l.roundness=i,l.update();let A=st.create({shape:l,parameters:{roundness:i,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...n,type:"StarGeometry"}})}};import{PlaneBufferGeometry as D_}from"three";var Xs=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 D_(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var bm=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:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=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:s,cornerRadius:a,cornerSegments:c}=n.parameters,p=B_(t,e,r,t*.5,s,i,0,0,o,a,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...n,type:"TorusGeometry"}})}};function B_(n,t,e,r,o,i,s,a,c,p,l){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new Xn(!0,n,t,e,r,o,i,s,a,c,p,l)}import{TorusKnotBufferGeometry as E_}from"three";var _m=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:s}=n.parameters,a=t*.5;a!==e&&(a-=e);let c=new E_(a,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Sm=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 _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:a}=n.parameters,c=n.shape,p=t*.5,l=e*.5;a?(c.addPoint(c.createPoint(-p,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))),c.isClosed=!0;for(let d=0,m=c.points.length;d<m;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=st.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{BufferGeometry as Rm,BufferAttribute as Fm,Uint32BufferAttribute as Vl,Float32BufferAttribute as zl,Matrix4 as oS,Vector3 as ta}from"three";var G_,Ys=new Promise(n=>{G_=n});import{BufferGeometryLoader as tS}from"three";import{EventDispatcher as Z_,Matrix3 as J_,Vector3 as Fl}from"three";import{Mesh as K_,Matrix4 as Q_}from"three";import{Matrix4 as Pm}from"three";import{Object3D as V_,Matrix4 as z_}from"three";import{HemisphereLight as wm}from"three";function Ve(n,t){return t.color(n)}var Ml=n=>"isEntity"in n,Zt=n=>"isAbstractMesh"in n,Jt=n=>n!==null&&n.objectType==="BooleanObject",Tm=n=>n.objectType==="CombinedCamera";var Ks=n=>"objectHelper"in n;function R_(n,t){let e=!1;t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray(t.hiddenMatrix??Er.identity)),e&&(n.updateMatrix(),Jt(n.parent)&&Zt(n)&&n.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function F_(n,t){R_(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function Am(n,t,e){F_(n,t),t.color!==void 0&&(n.color=Ve(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof wm)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof wm)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Cm(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 Qs=n=>class extends n{hasEntityChild(){return this.children.some(e=>Ml(e))}isDescendantOf(e){e instanceof V_&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new z_().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Ml(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};import{Box3 as Lm,Line3 as U_,Matrix4 as Dl,Vector3 as Nt}from"three";var on=new Lm,er=new Nt,tr=new Nt,nn=new Dl,Om=[new Nt(-1,1,1),new Nt(-1,-1,1),new Nt(1,-1,1),new Nt(1,1,1),new Nt(-1,1,-1),new Nt(-1,-1,-1),new Nt(1,-1,-1),new Nt(1,1,-1)],k_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],j_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function H_(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,a=-1/0,c=-1/0,p=-1/0;for(let l=e;l<r;l++){let u=t.getX(l),d=t.getY(l),m=t.getZ(l);u<o&&(o=u),d<i&&(i=d),m<s&&(s=m),u>a&&(a=u),d>c&&(c=d),m>p&&(p=m)}return n.min.set(o,i,s),n.max.set(a,c,p),n}var Nm=(n,t,e)=>{if(Zt(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?er.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(H_(on,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),on.getCenter(er)),n.forceComputeSize?on.getSize(tr).multiplyScalar(.5):tr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(Ks(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");on.setFromArray(r.array),on.getCenter(er),on.getSize(tr).multiplyScalar(.5)}else er.setScalar(0),tr.setScalar(0);nn.copy(t).multiply(n.matrixWorld),tr.x===0&&tr.y===0&&tr.z===0?e.push(new Nt(er.x,er.y,er.z).applyMatrix4(nn)):Om.forEach(r=>{e.push(r.clone().multiply(tr).add(er).applyMatrix4(nn))})},Zn=class extends Lm{constructor(){super(...arguments);this.matrix=new Dl;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 Dl().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&Nm(s,r,i)}):Nm(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(nn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(tr).multiplyScalar(.5),this.getCenter(er),nn.copy(this.matrix).setPosition(er),this.vertices=Om.map(e=>e.clone().multiply(tr).applyMatrix4(nn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=k_.map(([e,r])=>new U_(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Nt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=j_.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var rr=n=>"isEntity"in n,Im=n=>"isAbstractMesh"in n,Lt=n=>class extends Qs(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Pm;this._singleBBox=new Zn;this._recursiveBBox=new Zn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}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}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{rr(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)rr(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)rr(o)&&o.visible&&o.traverseVisibleEntity(r)}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 s of this.children)s.updateWorldMatrix(!1,!0)}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)rr(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Pm,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)rr(i)&&i.hiddenMatrix.premultiply(r)}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Fo(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Fo(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visible=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as q_,Vector3 as Jn,Euler as Mm,MathUtils as Hr}from"three";import{Object3D as W_}from"three";var Bl=class extends W_{},Zs=class extends Bl{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var so=class extends q_{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Jn),i=.1;this.parameters=is.defaultData(o.toArray(),i),eo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(e){this.parameters.hideBase=e}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)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=new Zs(this.object);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*Hr.DEG2RAD,i=r.end*Hr.DEG2RAD,s=o-i,a=new Mm(r.rotation[0]*Hr.DEG2RAD,r.rotation[1]*Hr.DEG2RAD,r.rotation[2]*Hr.DEG2RAD),c;switch(r.axis){case"z":c=new Jn(0,0,1);break;case"y":c=new Jn(0,1,0);break;default:case"x":c=new Jn(1,0,0);break}for(let[p,l]of this.children.entries()){l.scale.x=r.scale[0],l.scale.y=r.scale[1],l.scale.z=r.scale[2],l.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":l.rotation.set(0,u,0);break;case"y":l.rotation.set(0,0,u);break;case"z":l.rotation.set(u,0,0);break}l.translateOnAxis(c,r.radius),l.position.x+=r.position[0],l.position.y+=r.position[1],l.position.z+=r.position[2],r.alignment===!0?(l.rotation.x+=a.x,l.rotation.y+=a.y,l.rotation.z+=a.z):l.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Mm(r.rotation[0]*Hr.DEG2RAD,r.rotation[1]*Hr.DEG2RAD,r.rotation[2]*Hr.DEG2RAD);for(let[i,s]of this.children.entries())s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Jn(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let a=0;a<o.count[0];a++)for(let c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let l=this.children[r++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*a-s.x,l.position.y=o.size[1]*c-s.y,l.position.z=o.size[2]*p-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let c=this.children[r++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*i,c.position.y=-o.size[1]*s,c.position.z=-o.size[2]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),eo(this.parameters,e),this.update(),this}};import{MathUtils as El,BufferAttribute as $_,Vector3 as Gl,Float32BufferAttribute as Dm}from"three";function X_(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let t=new Map,e=n.geometry.attributes.position.array,r=n.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,a=new Gl(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new Gl})}t.forEach((i,s)=>{for(let a of i.normals)i.result.add(a);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,a=t.get(s)?.result;a&&(o[i]=a.x,o[i+1]=a.y,o[i+2]=a.z)}n.geometry.setAttribute("extrudeNormal",new Dm(o,3))}function Y_(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=new Gl;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;n.geometry.setAttribute("extrudeNormal",new Dm(e,3))}function Wr(n){if(n.objectType!=="TextFrame"){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?Y_(n):X_(n)}}function qr(n){if(!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(n.uuid.replace(/\D/g,"")),o=[El.seededRandom(r),El.seededRandom(r+1e4),El.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new $_(e,3))}var Ye=class extends Lt(K_){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Q_;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(e){}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=Rl[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),a=r.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),Wr(this),r.getAttribute("randomColor")&&qr(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=ei(r),i=this.material;return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new so(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new so(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Bt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Jt(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)Zt(e)&&(e.freeBooleanPointer(),Jt(e)&&e.invalidateUpstreamBooleanData())}};var eS=new Fl(0,0,1),Bm=new Fl,Em=new Fl,Gm=new J_,sn=class extends Ye{constructor(e=st.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Z_;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Gm.getNormalMatrix(this.matrixWorld),Bm.copy(eS).applyMatrix3(Gm).normalize(),Em.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Bm,Em)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=st.create(Object.assign({},i,{shape:r})),a=new sn(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){Ye.prototype.raycast.call(this,e,r)}};function Js(n,t){return rS(n)}function rS(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=_e.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new tS().parse(n));let e;try{e=ei(t)}catch(r){console.error(r)}if(!e){let r=_e.createFromState(Wo.defaultData(),100,100);t.shape=r,e=ei(t)}return e}var pe;Ys.then(n=>{pe=n});var Vm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),zm=new Uint32Array([0,1,2,3]),Um=new Uint8Array([4]),Ot=class{static build(n,t,e,r,o){let i,s,a,c=n?.phongAngle??t?.phongAngle??35;if(r===!1&&(c=-1),n.positionWASM!==void 0){e&&e!==0&&(pe.free_bvh(e),pe.free_subdivision_surface(e));try{i=Ot.allocate(n,o)}catch(p){console.error(p,n),i=Ot.allocate({positionWASM:Vm,indexWASM:zm,verticesPerFaceWASM:Um},o)}pe.set_destination_refinement_level(i,0),s=Ot.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Ot.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(pe.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?a=Ot.buildLevel(i,!1,c):a=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:Js(n),r,o,i,s;return{positions:r,triIndices:s}=Hl(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:i}=Wl(r,s,e),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=Vm,r=zm,o=Um);let a=e.length,c=r.length,p=o.length,l=e.length+i.length+s.length,u=r.length+o.length,d=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,m=l*Float32Array.BYTES_PER_ELEMENT,f=u*Uint32Array.BYTES_PER_ELEMENT,h=pe._malloc(d),g=new Float32Array(pe.HEAPF32.buffer,h,l),x=new Uint32Array(pe.HEAPU32.buffer,h+m,u);g.set(e,0),g.set(i,e.length),g.set(s,e.length+i.length),x.set(r,0),x.set(o,r.length);let v;n?.scaleBaked?.some(_=>_!==1)&&(v=new oS().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?pe.alloc_subdivision_surface2(h,a,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):pe.alloc_subdivision_surface(h,a,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return pe._free(h),A}static buildLevel(n,t,e,r,o){let i=o?pe.get_mesh_data2(n,t?pe.Level.CONTROL:pe.Level.REFINED,e,o.elements):pe.get_mesh_data(n,t?pe.Level.CONTROL:pe.Level.REFINED,e),s=8,a=pe.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(4,4+4),p=0,l=pe.HEAPU32[a[p]>>2],u=pe.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=pe.HEAPU32[a[p]>>2],m=pe.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=pe.HEAPU32[a[p]>>2],h=pe.HEAPU32.subarray(f>>2,(f>>2)+c[p]);p++;let g=pe.HEAPU32[a[p]>>2],x=pe.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new Rm;if(v.setIndex(new Vl(x,1)),v.setAttribute("position",new zl(u,3)),v.setAttribute("normal",new zl(m,3)),t){v.setAttribute("faceMap",new Vl(h,1));let A=new Float32Array(m.length/3*4).fill(0);v.setAttribute("color",new Fm(A,4))}return pe.free_mesh_data(i),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,pe.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=pe.get_wireframe_data_for_base_level(n),o=4,i=pe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),a=0,c=pe.HEAPU32[i[a]>>2],p=pe.HEAPF32.subarray(c>>2,(c>>2)+s[a]);a++;let l=pe.HEAPU32[i[a]>>2],u=pe.HEAPU32.subarray(l>>2,(l>>2)+s[a]);if(t===void 0){let d=new Rm;d.setAttribute("position",new zl(p,3));let m=new Float32Array(p.length);for(let f=0,h=p.length;f<h;)m[f++]=e.r,m[f++]=e.g,m[f++]=e.b;return d.setAttribute("color",new Fm(m,3)),d.setIndex(new Vl(u,1)),pe.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,pe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||pe.set_destination_refinement_level(n,t);let o=e?pe.get_topological_data2(n,r?pe.Level.CONTROL:pe.Level.REFINED,e.elements):pe.get_topological_data(n,r?pe.Level.CONTROL:pe.Level.REFINED),i=6,s=pe.HEAPU32.subarray(o>>2,(o>>2)+i),a=s.subarray(3,3+3),c=0,p=pe.HEAPU32[s[c]>>2],l=new Float32Array(pe.HEAPF32.subarray(p>>2,(p>>2)+a[c]));c++;let u=pe.HEAPU32[s[c]>>2],d=new Uint32Array(pe.HEAPU32.subarray(u>>2,(u>>2)+a[c]));c++;let m=pe.HEAPU32[s[c]>>2],f=new Uint8Array(pe.HEAPU32.subarray(m>>2,(m>>2)+a[c]));return pe.free_topological_data(o),{positions:l,indices:d,verticesPerFace:f}}};var km=["getX","getY","getZ"];function Hl(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],a=1e4;for(let p=0;p<r;p++){let l=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(n[km[d]](l)*a)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[km[d]](l));e[u]=o,i.push(o),o++}}let c=[];for(let p=0;p<i.length;p+=3)i[p]===i[p+1]||i[p]===i[p+2]||i[p+1]===i[p+2]||c.push(i[p],i[p+1],i[p+2]);return{positions:s,triIndices:c}}var ea=new ta,Ul=new ta,kl=new ta,jl=new ta;function Wl(n,t,e){let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let i=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let c=0;c<i.length;c+=2)s+=(i[c]-i[(c===0?i.length:c)-2])*(i[c+1]+i[(c===0?i.length:c)-1]);n.length=0;let a=0;if(s<0)for(let c=0;c<i.length;c+=2)n.push(i[c],i[c+1],0),r.push(a++);else for(let c=i.length-2;c>=0;c-=2)n.push(i[c],i[c+1],0),r.push(a++);return o.push(a),{indices:r,verticesPerFace:o}}for(let i=0,s=e.capStartIndex??t.length;i<s;)if(t[i+1]===t[i+3]&&t[i+2]===t[i+5]||t[i+0]===t[i+3]&&t[i+2]===t[i+4]){ea.set(n[t[i]*3],n[t[i]*3+1],n[t[i]*3+2]),Ul.set(n[t[i+1]*3],n[t[i+1]*3+1],n[t[i+1]*3+2]),kl.set(n[t[i+4]*3],n[t[i+4]*3+1],n[t[i+4]*3+2]),jl.set(n[t[i+5]*3],n[t[i+5]*3+1],n[t[i+5]*3+2]),Ul.sub(ea).normalize(),kl.sub(ea).normalize(),jl.sub(ea).normalize();let a=Ul.cross(kl).dot(jl);Math.abs(a)>.005?(r.push(t[i],t[i+1],t[i+2]),o.push(3),i+=3):(r.push(t[i],t[i+1],t[i+4],t[i+5]),o.push(4),i+=6)}else r.push(t[i],t[i+1],t[i+2]),o.push(3),i+=3;if(e.capStartIndex!==void 0){let i=[],s=[],a=0;for(let c=0,p=0;c<n.length;c+=3,p++)n[c+2]===0&&(i.push(p),a++),n[c+2]===e.userData.parameters.depth&&s.push(p);if(e.userData.parameters.extrudeBevelSize===0){let c=s[0];s[0]=s[1],s[1]=c}i.reverse(),r.push(...i,...s),o.push(a,a)}return{indices:r,verticesPerFace:o}}var Bt={};gh(Bt,{calcBoolean:()=>lS,calcBooleanTopological:()=>aS,freeMeshSet:()=>pS,getMeshSet:()=>cS,transformMeshSet:()=>uS});var nS,jm=new Promise(n=>{nS=n});import{Float32BufferAttribute as Hm,Sphere as iS}from"three";var he,an;jm.then(n=>he=n);function sS(n,t){let e,{positions:r,triIndices:o}=Hl(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:a}=Wl(r,o,n);i=a.length,e=[];for(let c=0,p=0;c<i;c++){e.push(a[c]);for(let l=0;l<a[c];l++)e.push(s[p++])}}else{let s=o.length;e=Array(s+s/3),i=0;for(let a=0,c=0;c<e.length;)e[c++]=3,i++,e[c++]=o[a++],e[c++]=o[a++],e[c++]=o[a++]}return{positions:r,faceIndices:e,nFaces:i}}function Wm(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=he._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(he.HEAPU32.buffer,i,t):new Float32Array(he.HEAPF32.buffer,i,t)).set(n,0),i}function qm(n){switch(n){case 0:return he.OP.UNION;case 1:return he.OP.INTERSECTION;case 2:return he.OP.A_MINUS_B;case 3:return he.OP.B_MINUS_A;case 4:return he.OP.SYMMETRIC_DIFFERENCE;case 5:return he.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function aS(n,t){an===void 0&&(an=he.init_csg());let e=Wm(n),r=he.csg_calc_topological(an,e,n.length,qm(t));he._free(e);let o=6,i=he.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,c=he.HEAPU32[i[a]>>2],p=new Float32Array(he.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=he.HEAPU32[i[a]>>2],u=new Uint32Array(he.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let d=he.HEAPU32[i[a]>>2],m=new Uint8Array(he.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return he.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:m}}function lS(n,t,e,r){an===void 0&&(an=he.init_csg());let o=Wm(n),i=he.csg_calc(an,o,n.length,r,qm(t));he._free(o);let s=5,a=he.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+3),p=0,l=he.HEAPU32[a[p]>>2],u=he.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=he.HEAPU32[a[p]>>2],m=he.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=c[p];e.setAttribute("position",new Hm(u,3)),e.setAttribute("normal",new Hm(m,3));let h=he.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new iS),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},he.free_mesh_data(i),f}function cS(n,t){if(he===void 0)return-1;let e,r,o;if(t&&n.userData.positions!==void 0){let h=n.userData;o=h.verticesPerFace.length,e=h.positions,r=Array(h.verticesPerFace.reduce((g,x)=>g+x,0)+o);for(let g=0,x=0,v=0;g<h.verticesPerFace.length;g++){r[v++]=h.verticesPerFace[g];for(let A=0;A<h.verticesPerFace[g];A++)r[v++]=h.indices[x++]}}else({positions:e,faceIndices:r,nFaces:o}=sS(n,t));let i=e.length,s=r.length,a=e.length,c=r.length,p=a*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,l=a*Float32Array.BYTES_PER_ELEMENT,u=c*Uint32Array.BYTES_PER_ELEMENT,d=he._malloc(p),m=new Float32Array(he.HEAPF32.buffer,d,a),f=new Uint32Array(he.HEAPU32.buffer,d+l,c);return m.set(e,0),f.set(r,0),he.get_csg_mesh(d,i,d+l,s,o)}function uS(n,t){he.transform_csg_mesh(n,t.elements)}function pS(n){he.free_csg_mesh(n)}var Rl={ConeGeometry:Sd,CubeGeometry:wd,CylinderGeometry:_d,DodecahedronGeometry:Td,EllipseGeometry:Qd,HelixGeometry:rm,IcosahedronGeometry:om,LatheGeometry:nm,NonParametricGeometry:dm,PolygonGeometry:mm,PyramidGeometry:fm,RectangleGeometry:hm,SphereGeometry:gm,PlaneGeometry:ym,BackdropGeometry:xm,StarGeometry:vm,TextFrameGeometry:Xs,TorusGeometry:bm,TorusKnotGeometry:_m,TriangleGeometry:Sm,VectorGeometry:st},ei=n=>Rl[n.type].create(n);import{BufferGeometry as $m,Matrix4 as dS}from"three";var Xm=new dS;var ra=class extends Ye{constructor(e=new $m,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.objectType="BooleanObject",this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.objectType="BooleanObject",this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];Jt(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Im(i)&&i.booleanExclude===!1&&i.geometry.attributes.position?.count>0&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Bt.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Bt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else Jt(i)&&i.needsTransformForDownstream===!0?(Bt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(Xm.multiplyMatrices(i.matrix,i.booleanMatrixInvOld),Bt.transformMeshSet(i.booleanMeshSetAddress,Xm),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1);this.meshSetAddresses.push(i.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Bt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new $m,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Bt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,Wr(this),qr(this)}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as LS,OrthographicCamera as OS,PerspectiveCamera as PS,Vector3 as Gt,Object3D as Qm,Quaternion as IS}from"three";import{BoxBufferGeometry as mS}from"three";var or=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new mS(30,30,30),t};import{Camera as xS,LineSegments as vS,BufferGeometry as bS,LineBasicMaterial as _S,Color as $l,Vector3 as SS,Float32BufferAttribute as Km}from"three";import{Ray as fS,Sphere as hS,Matrix4 as gS,Vector3 as wr}from"three";var oa=new fS,ql=new hS,Ym=new gS,nr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),ql.copy(i.boundingSphere),ql.applyMatrix4(s),e.ray.intersectsSphere(ql)===!1||(Ym.copy(s).invert(),oa.copy(e.ray).applyMatrix4(Ym),i.boundingBox!==null&&oa.intersectsBox(i.boundingBox)===!1))return;let a,c,p,l,u=i.index,d=i.attributes.position,m=i.drawRange,f,h;if(o===!1){let x=Math.max(0,m.start),v=Math.min(u.count,m.start+m.count);for(f=x,h=v;f<h;f+=3)if(c=u.getX(f),p=u.getX(f+1),l=u.getX(f+2),a=g(n,e,oa,d,c,p,l),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let v=i.attributes.position,A=new wr,_=new wr,b=new wr,D=new wr,S=2,P=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=P*P,O=Math.max(0,m.start),C=Math.min(v.count,m.start+m.count);for(let N=O,j=C-1;N<j;N+=S){if(A.fromBufferAttribute(v,N),_.fromBufferAttribute(v,N+1),oa.distanceSqToSegment(A,_,D,b)>T)continue;D.applyMatrix4(n.matrixWorld);let oe=e.ray.origin.distanceTo(D);oe<e.near||oe>e.far||r.push({distance:oe,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function g(x,v,A,_,b,D,S){let y=new wr,P=new wr,T=new wr,O=new wr,C=new wr;if(y.fromBufferAttribute(_,b),P.fromBufferAttribute(_,D),T.fromBufferAttribute(_,S),A.intersectTriangle(y,P,T,!1,O)===null)return null;C.copy(O),C.applyMatrix4(x.matrixWorld);let j=v.ray.origin.distanceTo(C);return j<v.near||j>v.far?null:{faceIndex:1,distance:j,point:C.clone(),object:x}}};var na=new SS,Pt=new xS,Xl=class extends vS{constructor(e){let r=new bS,o=new _S({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},c=new $l(15711266),p=new $l(15711266),l=new $l(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",p),u("p","n2",p),u("p","n3",p),u("p","n4",p),u("u1","u2",l),u("u2","u3",l),u("u3","u1",l);function u(m,f,h){d(m,h),d(f,h)}function d(m,f){i.push(0,0,0),s.push(f.r,f.g,f.b),a[m]===void 0&&(a[m]=[]),a[m].push(i.length/3-1)}r.setAttribute("position",new Km(i,3)),r.setAttribute("color",new Km(s,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=a,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Pt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,a=o?.8:1e-4;Et("n1",r,e,Pt,-i,-s,a),Et("n2",r,e,Pt,i,-s,a),Et("n3",r,e,Pt,-i,s,a),Et("n4",r,e,Pt,i,s,a);let c=a;Et("f1",r,e,Pt,-i,-s,c),Et("f2",r,e,Pt,i,-s,c),Et("f3",r,e,Pt,-i,s,c),Et("f4",r,e,Pt,i,s,c);let p=c,l=.5;Et("u1",r,e,Pt,i*.7*l,s*1.1,p),Et("u2",r,e,Pt,-i*.7*l,s*1.1,p),Et("u3",r,e,Pt,0,s*(1.1+.9*l),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Et(n,t,e,r,o,i,s){na.set(o,i,s).unproject(r);let a=t[n];if(a!==void 0){let c=e.getAttribute("position");for(let p=0,l=a.length;p<l;p++)c.setXYZ(a[p],na.x,na.y,na.z)}}var ia=class extends or(Xl){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){nr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as wS}from"three";var ln=class extends or(wS){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){nr(this.object,ln.geometryHelper,e,r)}};import{AxesHelper as TS}from"three";var cn=class extends or(TS){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){nr(this.object,cn.geometryHelper,e,r)}update(){}};import{PointLightHelper as AS}from"three";var un=class extends or(AS){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){nr(this.object,un.geometryHelper,e,r)}};import{SpotLightHelper as CS,Vector3 as NS}from"three";var sa=class extends or(CS){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){nr(this.object,sa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=sa._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 s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},ti=sa;ti._vector=new NS;var ir=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this)}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Ve(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows)}return this}};var pn=new Gt,Yl=new Gt,Tr=class extends ir(Lt(LS),ia){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=to.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new OS(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new PS(o,e/r,i??50,s),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.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic()}static createFromState(e,r){let o=new Tr().fromState(r);return o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}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){super.lookAt(e),this.getWorldPosition(pn),this.targetOffset=pn.distanceTo(e)}getTarget(e=new Gt){return this.getWorldDirection(Yl),this.getWorldPosition(pn),Yl.multiplyScalar(this.targetOffset),e.copy(pn).add(Yl),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(pn),pn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new IS),r=new Gt(0,0,1).applyQuaternion(e),o=new Gt().copy(Qm.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Gt().copy(Qm.DefaultUp).projectOnPlane(r),s=new Gt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Gt),i=e.getWorldDirection(new Gt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Gt),i=this.getWorldDirection(new Gt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,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,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,a):this.orthoCamera.setViewOffset(e,r,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}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.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 Fo(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),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(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as MS}from"three";var ao=class extends ir(Lt(MS),cn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new ao().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};import{DirectionalLight as DS,CameraHelper as aa}from"three";var dn=class extends ir(Lt(DS),ln){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new aa(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new dn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof aa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof aa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof aa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Cm(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as BS,Vector3 as la,Box3 as ES,Box3Helper as ca,Color as GS}from"three";var mn=class extends ir(Lt(BS),un){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new la(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new la(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new ES(i,s),c=new ca(a,new GS(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new mn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ca&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ca&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof ca){let o=this.shadow.camera,i=new la(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new la(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as RS,CameraHelper as ua,MathUtils as FS,Vector3 as tf,Quaternion as VS}from"three";var Zm=new tf,Jm=new tf,ef=new VS,fn=class extends ir(Lt(RS),ti){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=FS.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new ua(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new fn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ua&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ua&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ua&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Jm.setFromMatrixPosition(this.matrixWorld),ef.setFromRotationMatrix(this.matrixWorld),Zm.copy(this.up).applyQuaternion(ef).negate().multiplyScalar(this.distance),this.target.position.copy(Jm).add(Zm),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};import{Texture as ya,Vector2 as Cr,Vector3 as ur,Vector4 as wn}from"three";import{MathUtils as zS}from"three";var Ke=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=zS.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,s){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 Ke&&(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}};import{MathUtils as US}from"three";var ae=class extends Ke{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 s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=US.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),c=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let p=this.getTemp(e,o);if(p)return e.format(p,c,r);{p=super.generate(e,r,o,a.output,i);let l=this.generate(e,c,o);return e.addNodeCode(p+" = "+l+";"),e.format(p,c,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,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ae=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,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,r))}};var Se=class extends Ae{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Ze?e:new Ze(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),p=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return p?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,r))}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var X=class extends Ae{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var ge=class extends Ae{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,s,a){return e.format(this.value.toString(),i,r)}};import{UniformsLib as kS,UniformsUtils as jS}from"three";var $r=class extends Ke{constructor(){super("basic");this.nodeType="Basic";this.color=new Se(5855577),this.shadingAlpha=new X(1),this.shadingBlend=new ge(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(jS.merge([kS.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
2
2
  `));let i=["#include <beginnormal_vertex>",`
3
3
  #if !defined( USE_LAYER_DISPLACE )
4
4
  #include <defaultnormal_vertex>
@@ -316,7 +316,7 @@ var ph=Object.create;var Ta=Object.defineProperty;var dh=Object.getOwnPropertyDe
316
316
  uv.x -= texelSize;
317
317
  vec4 bl = texture2D(envMap, uv);
318
318
  return TextureCubeUVData( tl, tr, br, bl, f );
319
- }`,[e,a,c,r,o,i,s]);p.useKeywords=!1;let l=new ye("float r0 1.0",!0),u=new ye("float v0 0.339",!0),d=new ye("float m0 -2.0",!0),m=new ye("float r1 0.8",!0),f=new ye("float v1 0.276",!0),h=new ye("float m1 -1.0",!0),g=new ye("float r4 0.4",!0),x=new ye("float v4 0.046",!0),v=new ye("float m4 2.0",!0),A=new ye("float r5 0.305",!0),_=new ye("float v5 0.016",!0),b=new ye("float m5 3.0",!0),D=new ye("float r6 0.21",!0),S=new ye("float v6 0.0038",!0),y=new ye("float m6 4.0",!0),O=[l,u,d,m,f,h,g,x,v,A,_,b,D,S,y],T=new Y(`float roughnessToMip(float roughness) {
319
+ }`,[e,a,c,r,o,i,s]);p.useKeywords=!1;let l=new ye("float r0 1.0",!0),u=new ye("float v0 0.339",!0),d=new ye("float m0 -2.0",!0),m=new ye("float r1 0.8",!0),f=new ye("float v1 0.276",!0),h=new ye("float m1 -1.0",!0),g=new ye("float r4 0.4",!0),x=new ye("float v4 0.046",!0),v=new ye("float m4 2.0",!0),A=new ye("float r5 0.305",!0),_=new ye("float v5 0.016",!0),b=new ye("float m5 3.0",!0),D=new ye("float r6 0.21",!0),S=new ye("float v6 0.0038",!0),y=new ye("float m6 4.0",!0),P=[l,u,d,m,f,h,g,x,v,A,_,b,D,S,y],T=new Y(`float roughnessToMip(float roughness) {
320
320
  float mip = 0.0;
321
321
  if (roughness >= r1) {
322
322
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -330,7 +330,7 @@ var ph=Object.create;var Ta=Object.defineProperty;var dh=Object.getOwnPropertyDe
330
330
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
331
331
  }
332
332
  return mip;
333
- }`,O);return{bilinearCubeUV:p,roughnessToMip:T,m0:d,cubeUV_maxMipLevel:r}}();var co=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??co.VIEW}getShared(){return this.scope===co.WORLD}build(e,r,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,s){let a;switch(this.scope){case co.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case co.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case co.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}},Qe=co;Qe.LOCAL="local",Qe.WORLD="world",Qe.VIEW="view",Qe.NORMAL="normal";He.addKeyword("viewNormal",function(){return new Qe(Qe.VIEW)});He.addKeyword("localNormal",function(){return new Qe(Qe.NORMAL)});He.addKeyword("worldNormal",function(){return new Qe(Qe.WORLD)});var ar=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??ar.LOCAL}getType(){switch(this.scope){case ar.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case ar.LOCAL:case ar.WORLD:return!1}return!0}generate(e,r,o,i,s){let a;switch(this.scope){case ar.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case ar.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case ar.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case ar.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}},ft=ar;ft.LOCAL="local",ft.WORLD="world",ft.VIEW="view",ft.PROJECTION="projection";He.addKeyword("position",function(){return new ft});He.addKeyword("worldPosition",function(){return new ft(ft.WORLD)});He.addKeyword("viewPosition",function(){return new ft(ft.VIEW)});var Rt=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Rt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Rt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Rt.VECTOR:{let s=new Qe(Qe.VIEW),a=e.context.roughness,c=s.build(e,"v3"),p=new ft(ft.VIEW).build(e,"v3"),l=a?a.build(e,"f"):void 0,u=`reflect( -normalize( ${p} ), ${c} )`;l&&(u=`normalize( mix( ${u}, ${c}, ${l} * ${l} ) )`);let d=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case Rt.CUBE:{let s=new Rt(Rt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case Rt.SPHERE:{let s=new Rt(Rt.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;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)}},lr=Rt;lr.CUBE="cube",lr.SPHERE="sphere",lr.VECTOR="vector";var da=class extends ae{constructor(e=new dt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new xn(this.value,r??new lr(lr.VECTOR),o),this.irradianceNode=new xn(this.value,new Qe(Qe.WORLD),new X(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 tw}from"three";var ma=class extends Ae{constructor(e=new tw,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new lr,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"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},p=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new at(new ve("",p)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,p),e.removeContext(),e.format(a,p,r)}};var uf=["x","y","z","w"],sw=["float","vec2","vec3","vec4"],aw={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},lw={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[]"},fa=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};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 s="";i=i.sort(t);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
333
+ }`,P);return{bilinearCubeUV:p,roughnessToMip:T,m0:d,cubeUV_maxMipLevel:r}}();var co=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??co.VIEW}getShared(){return this.scope===co.WORLD}build(e,r,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,s){let a;switch(this.scope){case co.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case co.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case co.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}},Qe=co;Qe.LOCAL="local",Qe.WORLD="world",Qe.VIEW="view",Qe.NORMAL="normal";He.addKeyword("viewNormal",function(){return new Qe(Qe.VIEW)});He.addKeyword("localNormal",function(){return new Qe(Qe.NORMAL)});He.addKeyword("worldNormal",function(){return new Qe(Qe.WORLD)});var ar=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??ar.LOCAL}getType(){switch(this.scope){case ar.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case ar.LOCAL:case ar.WORLD:return!1}return!0}generate(e,r,o,i,s){let a;switch(this.scope){case ar.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case ar.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case ar.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case ar.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}},ft=ar;ft.LOCAL="local",ft.WORLD="world",ft.VIEW="view",ft.PROJECTION="projection";He.addKeyword("position",function(){return new ft});He.addKeyword("worldPosition",function(){return new ft(ft.WORLD)});He.addKeyword("viewPosition",function(){return new ft(ft.VIEW)});var Rt=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Rt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Rt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Rt.VECTOR:{let s=new Qe(Qe.VIEW),a=e.context.roughness,c=s.build(e,"v3"),p=new ft(ft.VIEW).build(e,"v3"),l=a?a.build(e,"f"):void 0,u=`reflect( -normalize( ${p} ), ${c} )`;l&&(u=`normalize( mix( ${u}, ${c}, ${l} * ${l} ) )`);let d=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case Rt.CUBE:{let s=new Rt(Rt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case Rt.SPHERE:{let s=new Rt(Rt.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;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)}},lr=Rt;lr.CUBE="cube",lr.SPHERE="sphere",lr.VECTOR="vector";var da=class extends ae{constructor(e=new dt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new xn(this.value,r??new lr(lr.VECTOR),o),this.irradianceNode=new xn(this.value,new Qe(Qe.WORLD),new X(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 tw}from"three";var ma=class extends Ae{constructor(e=new tw,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new lr,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"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},p=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new at(new ve("",p)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,p),e.removeContext(),e.format(a,p,r)}};var uf=["x","y","z","w"],sw=["float","vec2","vec3","vec4"],aw={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},lw={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[]"},fa=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};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 s="";i=i.sort(t);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
334
334
  `);return s}}();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",`
335
335
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
336
336
  #define SPE_BLENDING_NORMAL 0
@@ -1077,7 +1077,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1077
1077
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1078
1078
 
1079
1079
  return normal;
1080
- }`)}}();import{Vector2 as bi,Vector3 as Ar,Vector4 as lc}from"three";function df(n,t){switch(n.type){case"fresnel":return dw(n,t);case"gradient":return mw(n);case"depth":return fw(n);case"normal":return hw(n);case"noise":return gw(n,t);case"rainbow":return yw(n);case"toon":return xw(n,t);case"outline":return vw(n,t);case"transmission":return bw(n,t);case"color":return pw(n,t)}}function uw(n){return{type:n.type}}function cr(n){let{alpha:t,mode:e}=n;return{...uw(n),alpha:t,mode:e}}function pw(n,t){return{...cr(n),color:Ve(n.color,t)}}function dw(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n;return{...cr(n),color:Ve(s,t),bias:e,scale:r,intensity:o,factor:i}}function mw(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:a}=n;return{...cr(n),gradientType:t,smooth:e,colors:r.map(c=>new lc(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new bi(...s),morph:new bi(...a),angle:i}}function fw(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:c,steps:p,smooth:l,num:u}=n;return{...cr(n),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new Ar(...s),direction:a?new Ar(...a):new Ar(1,0,0),num:u,colors:c.map(d=>new lc(d[0],d[1],d[2],d[3])),steps:p,smooth:l}}function hw(n){let{cnormal:t}=n;return{...cr(n),cnormal:new Ar(t[0],t[1],t[2])}}function gw(n,t){return{...cr(n),scale:n.scale,move:n.move,fA:new bi(...n.fA),fB:new bi(...n.fB),size:new Ar(...n.size),distortion:new bi(...n.distortion),colorA:Ve(n.colorA,t),colorB:Ve(n.colorB,t),colorC:Ve(n.colorC,t),colorD:Ve(n.colorD,t),noiseType:n.noiseType}}function yw(n){return{...cr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Ar(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Ar(...n.offset)}}function xw(n,t){return{...cr(n),positioning:n.positioning,colors:n.colors.map(e=>new lc(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Ar(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Ve(n.shadowColor,t),offset:new Ar(...n.offset)}}function vw(n,t){return{...cr(n),outlineColor:Ve(n.outlineColor,t),contourColor:Ve(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:n.contourDirection,positionalLines:n.positionalLines,compensation:n.compensation,resolution:t.resolutionNode,normalMap:t.normalMap,depthMap:t.normalRenderTarget.depthTexture,pixelRatio:t.pixelRatioNode}}function bw(n,t){return{...cr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap}}var Yr=class extends Ze{};import{Vector4 as Sw}from"three";import{Texture as _w}from"three";var cc=new Map,_i={url:"head",time:0,data:null,next:null,prev:null},_n={url:"tail",time:1/0,data:null,next:null,prev:null};_i.next=_n;_n.prev=_i;var mf=0;function ff(n){if(typeof n=="string")return n;let t=Date.now(),e=cc.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},cc.set(n,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=_n.prev,e.next=_n,_n.prev.next=e,_n.prev=e,t-mf>1e3*10&&(mf=t+1e3,setTimeout(()=>{let r=Date.now(),o=_i.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),cc.delete(o.data),o=o.next,o.prev=_i,_i.next=o},900)),e.url}var Sn=class{constructor(t,e){this.data=t;this.onImageLoad=e;this.loaded=!1;this.updateSrc(t.data)}updateSrc(t){this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=ff(t),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let r of e){let o=this[r];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()}}getTexture(t){let e=this[t];if(e)return e;{let r=new _w(this.img,void 0,t,t);return this.loaded&&(r.needsUpdate=!0),this[t]=r,r}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var uo=class extends Sn{};var Kr=class extends Ae{};function ww(n,t){switch(n.type){case"noise":return t==="noiseType";case"texture":return t==="projection"||t==="axis"||t==="side";case"displace":return t==="noiseType";case"depth":return t==="num"||t==="smooth"||t==="isWorldSpace"||t==="gradientType"||t==="isVector";default:return!1}}function uc(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 s=i.image,a=t.image(s),c=r;c instanceof uo||c.image.dispose(),c.image=a}if("wrapping"in i){let s=r;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",a=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(a.repeat=i.repeat),"offset"in i&&(a.offset=i.offset),a.updateMatrix()}return o}function hf(n,t,e,r){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0||pc(i,e,r))continue;e.visible=r.visible;let a=e.uniforms[`f${e.id}_${i}`];if(!!a&&!(a instanceof Kr))switch(o=o||ww(e,i),a.constructor){case Se:if(typeof s=="string"){let c=t.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof Yr?a.value=new Ze(c.r,c.g,c.b,c.a):a.setRGBA(c);break}case It:if(typeof s=="string"){let c=t.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof Yr?a.value=new Ze(c.r,c.g,c.b,c.a):a.value.setRGBA(c.r,c.g,c.b,c.a);break}case We:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]);break}case Je:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]),a.value.setZ(c[2]);break}case dt:{uc(s,t,e);break}case Ft:{a.value=s.map(c=>new Sw(...c));break}default:{a.value=s;break}}}return o}var dc=class extends ae{constructor(e,r,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(dc.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Si=dc;Si.Nodes=function(){return{matcap:new Y(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1080
+ }`)}}();import{Vector2 as bi,Vector3 as Ar,Vector4 as lc}from"three";function df(n,t){switch(n.type){case"fresnel":return dw(n,t);case"gradient":return mw(n);case"depth":return fw(n);case"normal":return hw(n);case"noise":return gw(n,t);case"rainbow":return yw(n);case"toon":return xw(n,t);case"outline":return vw(n,t);case"transmission":return bw(n,t);case"color":return pw(n,t)}}function uw(n){return{type:n.type}}function cr(n){let{alpha:t,mode:e}=n;return{...uw(n),alpha:t,mode:e}}function pw(n,t){return{...cr(n),color:Ve(n.color,t)}}function dw(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n;return{...cr(n),color:Ve(s,t),bias:e,scale:r,intensity:o,factor:i}}function mw(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:a}=n;return{...cr(n),gradientType:t,smooth:e,colors:r.map(c=>new lc(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new bi(...s),morph:new bi(...a),angle:i}}function fw(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:c,steps:p,smooth:l,num:u}=n;return{...cr(n),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new Ar(...s),direction:a?new Ar(...a):new Ar(1,0,0),num:u,colors:c.map(d=>new lc(d[0],d[1],d[2],d[3])),steps:p,smooth:l}}function hw(n){let{cnormal:t}=n;return{...cr(n),cnormal:new Ar(t[0],t[1],t[2])}}function gw(n,t){return{...cr(n),scale:n.scale,move:n.move,fA:new bi(...n.fA),fB:new bi(...n.fB),size:new Ar(...n.size),distortion:new bi(...n.distortion),colorA:Ve(n.colorA,t),colorB:Ve(n.colorB,t),colorC:Ve(n.colorC,t),colorD:Ve(n.colorD,t),noiseType:n.noiseType}}function yw(n){return{...cr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Ar(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Ar(...n.offset)}}function xw(n,t){return{...cr(n),positioning:n.positioning,colors:n.colors.map(e=>new lc(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Ar(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Ve(n.shadowColor,t),offset:new Ar(...n.offset)}}function vw(n,t){return{...cr(n),outlineColor:Ve(n.outlineColor,t),contourColor:Ve(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:n.contourDirection,positionalLines:n.positionalLines,compensation:n.compensation,resolution:t.resolutionNode,normalMap:t.normalMap,depthMap:t.normalRenderTarget.depthTexture,pixelRatio:t.pixelRatioNode}}function bw(n,t){return{...cr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap}}var Yr=class extends Ze{};import{Vector4 as Sw}from"three";import{Texture as _w}from"three";var cc=new Map,_i={url:"head",time:0,data:null,next:null,prev:null},_n={url:"tail",time:1/0,data:null,next:null,prev:null};_i.next=_n;_n.prev=_i;var mf=0;function ff(n){if(typeof n=="string")return n;let t=Date.now(),e=cc.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},cc.set(n,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=_n.prev,e.next=_n,_n.prev.next=e,_n.prev=e,t-mf>1e3*10&&(mf=t+1e3,setTimeout(()=>{let r=Date.now(),o=_i.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),cc.delete(o.data),o=o.next,o.prev=_i,_i.next=o},900)),e.url}var Sn=class{constructor(t,e){this.data=t;this.onImageLoad=e;this.loaded=!1;this.updateSrc(t.data)}updateSrc(t){typeof document>"u"||(this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=ff(t),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let r of e){let o=this[r];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()})}getTexture(t){let e=this[t];if(e)return e;{let r=new _w(this.img,void 0,t,t);return this.loaded&&(r.needsUpdate=!0),this[t]=r,r}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var uo=class extends Sn{};var Kr=class extends Ae{};function ww(n,t){switch(n.type){case"noise":return t==="noiseType";case"texture":return t==="projection"||t==="axis"||t==="side";case"displace":return t==="noiseType";case"depth":return t==="num"||t==="smooth"||t==="isWorldSpace"||t==="gradientType"||t==="isVector";default:return!1}}function uc(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 s=i.image,a=t.image(s),c=r;c instanceof uo||c.image.dispose(),c.image=a}if("wrapping"in i){let s=r;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",a=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(a.repeat=i.repeat),"offset"in i&&(a.offset=i.offset),a.updateMatrix()}return o}function hf(n,t,e,r){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0||pc(i,e,r))continue;e.visible=r.visible;let a=e.uniforms[`f${e.id}_${i}`];if(!!a&&!(a instanceof Kr))switch(o=o||ww(e,i),a.constructor){case Se:if(typeof s=="string"){let c=t.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof Yr?a.value=new Ze(c.r,c.g,c.b,c.a):a.setRGBA(c);break}case It:if(typeof s=="string"){let c=t.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof Yr?a.value=new Ze(c.r,c.g,c.b,c.a):a.value.setRGBA(c.r,c.g,c.b,c.a);break}case We:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]);break}case Je:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]),a.value.setZ(c[2]);break}case dt:{uc(s,t,e);break}case Ft:{a.value=s.map(c=>new Sw(...c));break}default:{a.value=s;break}}}return o}var dc=class extends ae{constructor(e,r,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(dc.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Si=dc;Si.Nodes=function(){return{matcap:new Y(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1081
1081
  vec3 viewDir = normalize( vViewPosition );
1082
1082
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
1083
1083
  vec3 y = cross( viewDir, x );
@@ -1325,5 +1325,5 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1325
1325
 
1326
1326
  return color.xyz;
1327
1327
 
1328
- }`,[ot.simplex,e,o,s])}}();import{Matrix3 as Aw}from"three";function gf(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var ga=class extends vn{constructor(e,r){super(new Aw);this.repeat=e;this.offset=r;gf(this.value,e,r)}updateMatrix(){gf(this.value,this.repeat,this.offset)}};var pr=class{constructor(t,e,r,o){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in r)pc(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return dr.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new wi(i,r.texture.wrapping),a=new ha(i),c=new ga(r.texture.repeat,r.texture.offset),p=new X(r.crop?1:0),l=new ge(r.projection??0),u=new ge(["x","y","z"].indexOf(r.axis)??0),d=new ge(r.side??0),m=new We(r.size?new Cr(r.size[0],r.size[1]):new Cr(100,100)),f=new X(r.alpha??1),h=new ge(r.mode??0),g=new yi(s,a,p,l,u,d,m,c,f,h),x=new ve(g.calpha,"f");return new qe(t,e,r,{texture:s,textureSize:a,crop:p,projection:l,axis:u,side:d,size:m,mat:c,alpha:f,mode:h},g,h,x)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new wi(i,r.texture.wrapping),a=new X(r.alpha??1),c=new ge(r.mode??0),p=new Si(s,a,c),l=new ve(p.calpha,"f");return new qe(t,e,r,{texture:s,alpha:a,mode:c},p,c,l)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Je(new ur(...r.offset)),s=new X(r.scale??10),a=new X(r.intensity??8),c=new X(r.movement??1),p=new ge(r.noiseType??0),l=new hi(a,c,i,s,p);return new Ai(t,e,r,{offset:i,scale:s,intensity:a,movement:c,noiseType:p},l)}else throw new Error;else return Nw(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?!0:hf(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?uc(o.props,r,this):!0;return!1}dispose(){}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}},qe=class extends pr{constructor(e,r,o,i,s,a,c){super(e,r,o,i);this.color=s;this.mode=a;this.alpha=c}},Ai=class extends pr{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},dr=class extends pr{constructor(e,r,o,i,s){super(e,r,o,s);this.data=o;this.node=i}static createLigherLayer(e,r,o,i){let s,a=new X(o.alpha),c=new ge(o.mode),p;if(o.category==="lambert"){s=new ri;let l=new Se(i.color(o.emissive)??0);p={emissive:l},s.emissive=l}else if(o.category==="phong"){s=new pa;let l=new X(o.shininess??30),u=new Se(i.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="toon"){s=new ni;let l=new X(o.shininess??30),u=new Se(i.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="physical"){s=new oi;let l=new X(o.roughness??.3),u=new X(o.metalness??0),d=new X(o.reflectivity??.5);p={roughness:l,metalness:u,reflectivity:d},s.roughness=l,s.metalness=u,s.reflectivity=d}else s=new $r,p={};return s.alpha=new X(1),s.shadingAlpha=a,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new dr(e,r,o,s,p)}};function yf(n){let t=n instanceof pr?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function Cw(n,t,e,r){switch(n.type){case"color":{let o=new Se(r.color??5855577),i=new X(r.alpha??1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let a=new ge(r.mode??0);return o.alpha=i,new qe(t,e,n,{color:o,alpha:i,mode:a},o,a,s)}case"fresnel":{let o=new Se(r.color??16777215),i=new X(r.bias??.1),s=new X(r.scale??1),a=new X(r.intensity??2),c=new X(r.factor??1),p=new X(r.alpha??1),l=new ge(r.mode??0),u=new ci(o,i,s,a,c,p,l),d=new ve(u.calpha,"f");return new qe(t,e,n,{color:o,bias:i,scale:s,intensity:a,factor:c,alpha:p,mode:l},u,l,d)}case"rainbow":{let o=new X(r.filmThickness??30),i=new X(r.movement??0),s=new Je(r.wavelengths??new ur(0,0,0)),a=new X(r.noiseStrength??0),c=new X(r.noiseScale??1),p=new Je(r.offset??new ur(0,0,0)),l=new X(r.alpha??1),u=new ui(o,i,s,a,c,p,l),d=new ve(u.calpha,"f"),m=new ge(r.mode??0);return new qe(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:c,offset:p,alpha:l,mode:m},u,m,d)}case"transmission":{let o=new X(r.thickness??10),i=new X(r.ior??1.5),s=new X(r.roughness??.5),a=new We(r.transmissionSamplerSize??new Cr(2048,2048)),c=r.transmissionSamplerMap??new ya,p=r.transmissionDepthMap??new ya,l=new dt(c),u=new dt(p),d=window.innerWidth,m=window.innerHeight,f=d>=m?new We(m/d,1):new We(1,d/m),h=new X(r.alpha??1),g=new di(o,i,s,a,l,u,f,h),x=new ve(g.calpha,"f"),v=new ge(r.mode??0);return new qe(t,e,n,{thickness:o,ior:i,roughness:s,transmissionSamplerSize:a,transmissionSamplerMap:l,transmissionDepthMap:u,aspectRatio:f,alpha:h,mode:v},g,v,x)}case"toon":{let o=new ge(r.positioning??0),i;r.colors?i=new Ft(r.colors.length,r.colors):(i=new Ft(10,new wn(0,0,0,1)),i.value[1]=new wn(1,1,1,1));let s;r.steps?s=new je(r.steps.length,r.steps):(s=new je(10,1),s.value[0]=0);let a=new Je(r.source??new ur(0,0,0)),c=new Xr(r.isWorldSpace??!0),p=new X(r.noiseStrength??0),l=new X(r.noiseScale??1),u=new It(r.shadowColor),d=new Je(r.offset??new ur(0,0,0)),m=new X(r.alpha??1),f=new Ti(o,i,s,a,c,p,l,u,d,m),h=new ve(f.calpha,"f"),g=new ge(r.mode??0);return new qe(t,e,n,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:c,noiseStrength:p,noiseScale:l,shadowColor:u,offset:d,alpha:m,mode:g},f,g,h)}case"outline":{let o=new Se(r.outlineColor??16777215),i=new Se(r.contourColor??16777215),s=new X(r.outlineWidth??.1),a=new X(r.contourWidth??.1),c=new X(r.outlineThreshold??.1),p=new X(r.contourThreshold??.1),l=new X(r.outlineSmoothing??.1),u=new X(r.contourFrequency??.1),d=new Je(r.contourDirections??new ur(0,1,0)),m=new Xr(r.positionalLines??!1),f=new Xr(r.compensation??!0),h=r.normalMap??new ya,g=new dt(h),x=r.depthMap??new ya,v=new dt(x),A=r.pixelRatio??new X(window.devicePixelRatio),_=r.resolution??new We(new Cr(1,1)),b=new X(r.alpha??1),D=new pi(o,i,s,a,c,p,l,u,d,m,f,_,g,v,A,b),S=new ve(D.calpha,"f"),y=new ge(r.mode??0);return new qe(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:p,outlineSmoothing:l,contourFrequency:u,contourDirection:d,positionalLines:m,compensation:f,resolution:_,normalMap:g,depthMap:v,pixelRatio:A,alpha:b,mode:y},D,y,S)}case"depth":{let o=new ge(r.gradientType??0),i=new Xr(r.smooth??!1),s=new X(r.near??50),a=new X(r.far??200),c=new X(r.isVector??1),p=new X(r.isWorldSpace??0),l=new Je(r.origin??new ur),u=new Je(r.direction??new ur),d=new ge(r.num??0),m;r.colors?m=new Ft(d.value+1,r.colors):(m=new Ft(d.value+1,new wn(0,0,0,1)),m.value[1]=new wn(1,1,1,1));let f;r.steps?f=new je(d.value+1,r.steps):(f=new je(d.value+1,1),f.value[0]=0);let h=new X(r.alpha??1),g=new ge(r.mode??0),x=new mi(o,i,s,a,c,p,l,u,m,f,d,h),v=new ve(x.calpha,"f");return new qe(t,e,n,{gradientType:o,smooth:i,near:s,far:a,isVector:c,isWorldSpace:p,origin:l,direction:u,colors:m,steps:f,num:d,alpha:h,mode:g},x,g,v)}case"noise":{let o=new X(r.scale??1),i=new Je(r.size??new ur(100,100,100)),s=new X(r.move??1),a=new We(r.fA??new Cr(1.7,9.2)),c=new We(r.fB??new Cr(8.3,2.8)),p=new We(r.distortion??new Cr(1,1)),l=new It(r.colorA),u=new It(r.colorB),d=new It(r.colorC),m=new It(r.colorD),f=new X(r.alpha??1),h=new ge(r.mode??0),g=new ge(r.noiseType??0),x=new li(o,i,s,a,c,p,l,u,d,m,f,g),v=new ve(x.calpha,"f");return new qe(t,e,n,{scale:o,size:i,move:s,fA:a,fB:c,distortion:p,colorA:l,colorB:u,colorC:d,colorD:m,alpha:f,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new Je(r.cnormal??new ur(1,1,1)),i=new X(r.alpha??1),s=new ge(r.mode??0),a=new vi(o,i),c=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new qe(t,e,n,{cnormal:o,alpha:i,mode:s},a,s,c)}case"gradient":{let o=new ge(r.gradientType??0),i=new Xr(r.smooth??!1),s;r.colors?s=new Ft(r.colors.length,r.colors):(s=new Ft(10,new wn(0,0,0,1)),s.value[1]=new wn(1,1,1,1));let a;r.steps?a=new je(r.steps.length,r.steps):(a=new je(10,1),a.value[0]=0);let c=new We(r.offset??new Cr(0,0)),p=new We(r.morph??new Cr(0,0)),l=new X(r.angle??0),u=new X(r.alpha??1),d=new ge(r.mode??0),m=new gi(o,i,s,a,c,p,l,u),f=new ve(m.calpha,"f");return new qe(t,e,n,{gradientType:o,smooth:i,colors:s,steps:a,offset:c,morph:p,angle:l,alpha:u,mode:d},m,d,f)}default:{let o=new Se(1,0,0,1),i=new X(1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let a=new ge(0);return o.alpha=i,new qe(t,e,n,{color:o,alpha:i,mode:a},o,a,s)}}}function Nw(n,t,e,r){let o=df(e,r);return Cw(e,n,t,o)}function pc(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var xf=n=>n.tagName==="VIDEO",Tn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;xf(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.layers;for(let i=0;i<o.length;i++){let s=o[i];yf(s)&&Tn.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,a=r.image;xf(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var xa=class extends Ye{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&Tn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var An=class extends Ye{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var va=class extends An{constructor(e,r){super(e,r);this.objectType="NonParametric"}};import{DoubleSide as Lw,Mesh as Pw,MeshBasicMaterial as Ow,ShapeBufferGeometry as Iw,Vector2 as Mw,Vector3 as Dw}from"three";import{FontLoader as Bw}from"three/examples/jsm/loaders/FontLoader.js";var Ge=class extends Pw{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},c=new Ow({color:0,opacity:1,visible:!0,transparent:!0,side:Lw})){let p=Ge.loadChar(e,o,a);super(p.geometry,c);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=a,this.resolution=p.resolution,this.glyphsHa=p.glyphsHa,this.localPosition=new Mw,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Ge._fontPath}static set FONTS_PATH(e){Ge._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Dw(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Ge.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Ge.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Ge.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Ge(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ge.fontCache[e]?r(Ge.fontCache[e]):new Bw().load(Ge.FONTS_PATH+e+".json",s=>{Ge.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ge.charCache[e]){if(Ge.charCache[e][o]&&Ge.charCache[e][o].fontFamily===r)return Ge.charCache[e][o]}else Ge.charCache[e]={};let i=Ge.fontCache[r],s=i.generateShapes(e,1);return Ge.charCache[e][o]={geometry:new Iw(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ge.charCache[e][o]}},Vt=Ge;Vt.charCache={},Vt.fontCache={},Vt._fontPath="/_assets/_fonts/";import{DoubleSide as bf,MeshBasicMaterial as _f,Vector3 as Ew,Object3D as Gw}from"three";import{Vector2 as vf}from"three";var ba=new vf,po=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new vf(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){ba.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(ba),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=i),ba.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(ba),e)}clone(){let t=new po(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var fc=class extends Ye{constructor(e){super(e,new _f({transparent:!0,opacity:1,visible:!1,side:bf}));this.objectType="TextFrame";this.charContainer=new Gw,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new Ew(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Xs.create({parameters:{width:r.width,height:r.height}}),s=new fc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Vt.loadFont(o),r.text=e;let i=r.textOrigin,s=new _f({visible:r.visible,transparent:!0,side:bf}),a=e.split(`
1329
- `),c=0;this.userData.textFrame.textLines=a.map((p,l)=>{let u=new po(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let m={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let h=new Vt(m,f);return u.addChar3D(h,i),this.charContainer.add(h),h}),c+=u.maxCharSize*u.lineHeight,u}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof Vt&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??i,c=e.parameters?.height??s,p=r.textFrame;super.updateGeometry(e),p.maxLineSize=a,p.textOrigin.set(-.5*a,.5*c,0),c!==s?(this.checkOverFlow(),this.checkCapacity()):a!==i&&(i<a?this.checkCapacity():i>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let a=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?a.unshift(i[s].getWord(i[s].message.length-1,-1)):a.unshift(i[s].popChar());if(a.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let c=0;for(let p=0;p<a.length;p+=1)for(let l=0;l<a[p].length;l+=1)i[s+1].addChar3D(a[p][l],o,c),c+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let c,p=s[a-1].spaceLeft(i);if(s[a].wordSize(0,1)<=p){s[a].containSpace()?c=s[a].getWord(0,1):c=s[a].popChar(0);for(let l=0;l<c.length;l+=1)c[l]&&s[a-1].addChar3D(c[l],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new po(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<i.length;a++)i[a].updateYLinePos(this.getNewLinePosition(a)),i[a].fullUpdate(o.textOrigin),i[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.color?.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.visible=e}}}async updateFontFamily(e){await Vt.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)a[c].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<i.length;a++)i[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await Vt.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Ve(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}},mo=fc;mo.VerticalAlign=Qa,mo.HorizontalAlign=Ka,mo.TextTransform=Za;import{NormalBlending as Rw,ShaderMaterial as Fw}from"three";var zt=class extends Fw{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile,this.reset(e,r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,r){let o=e.layers??vr.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>pr.create(this.layerIdGen++,i.id,i.data,r)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r)}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof dr),this.lightLayer===void 0&&(this.lightLayer=new dr(0,"",Vr.defaultData("light","basic"),new $r,{})),this.lightLayer.node instanceof $r||(this.lightLayer.node.penumbraSize=e.penumbraSizeNode),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,r,o){if(this.data=r,e.path[0]==="layers"){let i=e.path[1];if(i===void 0){if(this.layers.reverse(),e.type===4){let s=pr.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(c=>c.uuid===e.id),a=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,a)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(a=>a.uuid===i);if(s){let a=r.layers.data(i);if(s.updateByOp({...e,path:e.path.slice(2)},a,o)){let p=pr.create(this.layerIdGen++,i,a,o);this.layers.splice(this.layers.findIndex(l=>l.uuid===i),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof qe),r=this.layers.findIndex(o=>o instanceof dr);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let s=this.layers[i];s instanceof qe&&(o=new fi(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ve("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof dr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof qe&&(e=new fi(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 Ai);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new mt(r,e[o].position,mt.ADD),r=new mt(r,new X(.5).setReadonly(!0),mt.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,r){this.build({renderer:r}),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,s,a)=>Math.min(Math.max(i,s),a);for(let i of this.layers)if(i.type==="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}restoreClampedUniforms(){for(let e of this.layers)e.type==="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new fa;return this.lights=this.lightLayer.data.category!=="basic",r.setMaterial(this,e.renderer),r.build(this.fragment,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.transparent=r.requires.transparent||this.blending>Rw,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(zt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{WebGLRenderTarget as Cf,LinearMipmapLinearFilter as Vw,LinearFilter as zw,ClampToEdgeWrapping as Nf,DepthTexture as Lf,NearestFilter as Pf,FloatType as Uw}from"three";var fo=class extends zt{};var Af=_c(Sf());var wf=new Map;function Tf(n){if(typeof n=="string")return n;let t=wf.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},wf.set(n,t)),t.url}var Cn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let i;typeof t=="string"?i={src:t}:i={src:Tf(t),format:"wav"},this.sound=new Af.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 src(){return this._src}get isStarted(){return this._isStarted}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}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._isStarted=!0,this.delay?(this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.clearFade(),this.clearDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay()}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()}};var Ci=class{constructor(t){this.deletedMaterial=new fo(vr.defaultTwoLayerData("basic"),this);this.deletedImage=new uo(Ds.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.transmissionRenderTarget=new Cf(2048,2048,{generateMipmaps:!0,minFilter:Vw,magFilter:zw,wrapS:Nf,wrapT:Nf}),this.transmissionRenderTarget.depthTexture=new Lf(2048,2048),this.normalRenderTarget=new Cf(1024,1024,{generateMipmaps:!1,minFilter:Pf,magFilter:Pf,type:Uw}),this.normalRenderTarget.depthTexture=new Lf(1024,1024),this.penumbraSizeNode=new je(5,t.penumbraSize),this.resolutionNode=new We(1,1),this.pixelRatioNode=new X(window.devicePixelRatio),this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,new fo(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data)}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),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):new zt(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new uo(e,this.onImageLoad),!1)}deleteImage(t){this.images[t]&&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):new Sn(t,this.onImageLoad)}getImages(){return this.images}addColor(t,e){return this.colors[t]?("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 Yr(e.r,e.g,e.b,e.a):this.colors[t]=new Yr(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){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 Ze(0,0,0,0))}else return"a"in t?new Ze(t.r,t.g,t.b,t.a):new Ze(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 Cn)return e;{let r=new Cn({src:e});return this.audios[t]=r,r}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof Cn&&e.dispose()}),this.audios={}}},gH=new Ci(qo.emptyData());import{DRACOLoader as kw}from"three/examples/jsm/loaders/DRACOLoader.js";var Qr;function jw(){return Qr||(Qr=new kw,Qr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Qr.decoderPending}async function Hw(n){if(Qr){let t={attributeIDs:Qr.defaultAttributeIDs,attributeTypes:Qr.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Qr.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 Of(n,t){let[e,r]=Ba(ws.deserialize(new Uint8Array(n)));vd(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await jw();for(let i of o){let s=await Hw(Gr(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:c,array:p,itemSize:l})=>{a[c]={array:p,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=a,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{HemisphereLight as m1,Scene as f1,Vector3 as h1,Color as $f,Fog as g1,Box3 as y1}from"three";import{Box3 as Ww,Matrix4 as ho,Sphere as Df,Vector3 as qw}from"three";var Ef=_c(Mf());var hc;Ys.then(n=>{hc=n});var Gf=new ho,$w=new ho,Xw=new ho,Ut=new Ww,Zr=new qw,Yw=new ho,Kw=new ho,Nn=class extends Ye{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new ho;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new ho;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=Pt.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new Nn(i,s,a||void 0,c);return r.geometry.phongAngle!==void 0&&(p.phongAngle=r.geometry.phongAngle),p.calcBoundingBox(),p.freeSubdivPointer(),p.uuid=e,p.fromState(r),p}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Pt.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,Wr(this),qr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Pt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Pt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Pt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Pt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Ye.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,Ef.SVD)(r),a=Gf.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),c=$w.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),p=Xw.copy(c).transpose();this.shearScale=Yw.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=Kw.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,p),s.every(l=>Math.abs(s[0]-l)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Df);let r=e.attributes.position,o=e.boundingSphere.center;Ut.setFromBufferAttribute(r),Ut.getCenter(o),e.boundingSphere.radius=o.distanceTo(Ut.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ut.getSize(Zr);let i={width:Zr.x,height:Zr.y,depth:Zr.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;Ut.min.set(e[0],e[2],e[4]),Ut.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(Ut.min.applyMatrix4(this.shearScaleInv),Ut.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Df);let o=r.boundingSphere.center;Ut.getCenter(o),r.boundingSphere.radius=o.distanceTo(Ut.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ut.getSize(Zr);let i={width:Zr.x,height:Zr.y,depth:Zr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(hc.free_bvh(this.subdivPointer),hc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,Bf(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Bf(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function Bf(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Gf.makeScale(t,e,r).invert().elements,a,c,p;for(var l=0,u=o.length;l<u;l+=3)o[l]*=t,o[l+1]*=e,o[l+2]*=r,a=i[l],c=i[l+1],p=i[l+2],i[l]=s[0]*a+s[4]*c+s[8]*p,i[l+1]=s[1]*a+s[5]*c+s[9]*p,i[l+2]=s[2]*a+s[6]*c+s[10]*p}import{BackSide as Qw,BufferGeometry as Zw,DoubleSide as Jw,FrontSide as e1}from"three";function Rf(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=e1:t.side===1?n.side=Qw:n.side=Jw)}function t1(n,t){if(Array.isArray(n.material))for(let e of n.material)Rf(e,t);else{let e=n.material;Rf(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Ff(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Nn.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new Zw:Js(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Ls.is2DParametricMesh(o.userData.type)?r=new xa(o,i):o?.userData.type==="VectorGeometry"?r=new sn(o,i):t.geometry.type==="NonParametricGeometry"?r=new va(o,i):t.geometry.type==="BooleanGeometry"?(r=new ra(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new An(o,i),r.uuid=n,r.fromState(t,e)}return t1(r,t),r}function Vf(n,t,e){return t.type==="Mesh"?Ff(n,t,e):t.type==="TextFrame"?mo.createFromState(n,t,e):t.type==="Empty"?ao.createFromState(n,t):t.type==="PointLight"?mn.createFromState(n,t,e):t.type==="SpotLight"?fn.createFromState(n,t,e):t.type==="DirectionalLight"?dn.createFromState(n,t,e):Vo.is(t.type)?Tr.createFromState(n,t):(console.error(t),new ao)}import{Mesh as kf,Ray as n1,Matrix4 as i1,Raycaster as s1}from"three";function a1(n,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=n.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=n.depthTexture}function l1(n,t){t.uniforms[`f${t.id}_normalMap`].value=n.texture,t.uniforms[`f${t.id}_depthMap`].value=n.depthTexture}function zf(n,t,e){let r=!1,o=e.getLayersOfType("transmission"),i=e.getLayersOfType("outline");return i.length>0&&(t.layers.set(8),o.length===0&&t.layers.enable(3),r=!0,n!==void 0&&i.forEach(s=>l1(n,s)),qr(t),Wr(t)),o.length===0&&i.length===0&&t.layers.set(0),r}function Uf(n,t,e){if(!e.layers)return!1;let r=!1,o=e.getLayersOfType("transmission"),i=e.getLayersOfType("outline");return o.length>0&&(t.layers.set(3),i.length>0&&t.layers.enable(8),r=!0,n!==void 0&&o.forEach(s=>a1(n,s))),o.length===0&&i.length===0&&t.layers.set(0),r}function jf(n,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof kf&&r.objectType!=="TextFrame")if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)zf(n,r,r.material[o])&&(e=!0);else zf(n,r,r.material)&&(e=!0)}),e}function Hf(n,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof kf)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Uf(n,r,r.material[o])&&(e=!0);else Uf(n,r,r.material)&&(e=!0)}),e}function Wf(n){"material"in n&&c1(n.material),"geometry"in n&&n.geometry.dispose()}function c1(n){Sc(n).forEach(t=>{t instanceof fo||t.dispose()})}var u1=new s1,p1=new i1,d1=new n1;function qf(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=p1.copy(o.matrixWorld).invert(),s=d1.copy(t.ray).applyMatrix4(i),a=n.matrixWorld;s.applyMatrix4(a);let c=u1;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far,c.intersectObject(n,!1).length>0&&e.push({object:n})}}var Xf=new h1,gc=class extends Qs(f1){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new g1(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new $f(1,0,0);this.bgColor=new $f(1,1,1);this.entityByUuid={};this.ambientLight=new m1(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=Hf(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(e){return this.needsNormalDirty&&(this._needsNormal=jf(e,this),e!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Ve(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Tr&&this.switchActiveCamera(o)}this.traverse(o=>{Jt(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{Wf(e)});for(let e of this.children)rr(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Tr.createFromState(gc.PERSONAL_CAMERA_ID,{...Os.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)rr(s)&&!s.raycastLock&&s.visible&&((Zt(s)||Ks(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),qf(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)rr(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)rr(r)&&r.visible&&r.traverseVisibleEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ve(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){Am(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ve(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let a=Vf(e,r,s);return a&&(this.entityByUuid[e]=a,i.add(a),Jt(i)&&Zt(a)&&(a.prevBooleanObjectParent=i),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:c}=e[i],p=this.find(a),l=c?p.recursiveBBox:p.singleBBox;r.push(...l.vertices)}let o=new y1;return o.setFromPoints(r),o.getCenter(Xf),Xf}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 Ye)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)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Ni=gc;Ni.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{Mesh as kW}from"three";import{mergeBufferGeometries as WW}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Yf(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 Kf,ShaderLib as x1}from"three";function Qf(n){let t=new Set;return n.traverse(e=>{if(Zt(e))if(Me(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);v1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Kf,specularColor:new Kf}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(x1.physical.uniforms,o.uniforms),e.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):b1(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function v1(n){return n.getLayersOfType("transmission").length>0}function b1(n){let t=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let r=e.uniforms["f"+e.id+"_alpha"];r&&(t+=(1-t)*r.value)}}),t<1}function Zf(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Jf(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 s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as _1}from"three/examples/jsm/utils/BufferGeometryUtils.js";function eh(n){let t=[];return n.traverse(e=>{e instanceof so&&t.push(e)}),t.forEach(e=>{let r=e.object,i=e.children.map(a=>{a.updateMatrix();let c=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&Yf(c),c}),s=_1(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function th(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function rh(n){Object.values(n.shared.materials).forEach(t=>{yc(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?yc(e.material):"materials"in e&&e.materials.forEach(r=>{yc(r)})})}function yc(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 oh="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",xc=class extends w1{load(t,e,r,o=console.error){let i=new S1(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(oh+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(oh),i.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},r,o)}async parse(t){let e=await Of(t,rh),r=new Ci(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ni(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Tm(s)&&Object.assign(s,{makeDefault:!0})}return o=eh(o),o=Qf(o),o=Zf(o),o=Jf(o),o=th(o),o}};export{xc as default};
1328
+ }`,[ot.simplex,e,o,s])}}();import{Matrix3 as Aw}from"three";function gf(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var ga=class extends vn{constructor(e,r){super(new Aw);this.repeat=e;this.offset=r;gf(this.value,e,r)}updateMatrix(){gf(this.value,this.repeat,this.offset)}};var pr=class{constructor(t,e,r,o){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in r)pc(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return dr.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new wi(i,r.texture.wrapping),a=new ha(i),c=new ga(r.texture.repeat,r.texture.offset),p=new X(r.crop?1:0),l=new ge(r.projection??0),u=new ge(["x","y","z"].indexOf(r.axis)??0),d=new ge(r.side??0),m=new We(r.size?new Cr(r.size[0],r.size[1]):new Cr(100,100)),f=new X(r.alpha??1),h=new ge(r.mode??0),g=new yi(s,a,p,l,u,d,m,c,f,h),x=new ve(g.calpha,"f");return new qe(t,e,r,{texture:s,textureSize:a,crop:p,projection:l,axis:u,side:d,size:m,mat:c,alpha:f,mode:h},g,h,x)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new wi(i,r.texture.wrapping),a=new X(r.alpha??1),c=new ge(r.mode??0),p=new Si(s,a,c),l=new ve(p.calpha,"f");return new qe(t,e,r,{texture:s,alpha:a,mode:c},p,c,l)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Je(new ur(...r.offset)),s=new X(r.scale??10),a=new X(r.intensity??8),c=new X(r.movement??1),p=new ge(r.noiseType??0),l=new hi(a,c,i,s,p);return new Ai(t,e,r,{offset:i,scale:s,intensity:a,movement:c,noiseType:p},l)}else throw new Error;else return Nw(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?!0:hf(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?uc(o.props,r,this):!0;return!1}dispose(){}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}},qe=class extends pr{constructor(e,r,o,i,s,a,c){super(e,r,o,i);this.color=s;this.mode=a;this.alpha=c}},Ai=class extends pr{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},dr=class extends pr{constructor(e,r,o,i,s){super(e,r,o,s);this.data=o;this.node=i}static createLigherLayer(e,r,o,i){let s,a=new X(o.alpha),c=new ge(o.mode),p;if(o.category==="lambert"){s=new ri;let l=new Se(i.color(o.emissive)??0);p={emissive:l},s.emissive=l}else if(o.category==="phong"){s=new pa;let l=new X(o.shininess??30),u=new Se(i.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="toon"){s=new ni;let l=new X(o.shininess??30),u=new Se(i.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="physical"){s=new oi;let l=new X(o.roughness??.3),u=new X(o.metalness??0),d=new X(o.reflectivity??.5);p={roughness:l,metalness:u,reflectivity:d},s.roughness=l,s.metalness=u,s.reflectivity=d}else s=new $r,p={};return s.alpha=new X(1),s.shadingAlpha=a,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new dr(e,r,o,s,p)}};function yf(n){let t=n instanceof pr?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function Cw(n,t,e,r){switch(n.type){case"color":{let o=new Se(r.color??5855577),i=new X(r.alpha??1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let a=new ge(r.mode??0);return o.alpha=i,new qe(t,e,n,{color:o,alpha:i,mode:a},o,a,s)}case"fresnel":{let o=new Se(r.color??16777215),i=new X(r.bias??.1),s=new X(r.scale??1),a=new X(r.intensity??2),c=new X(r.factor??1),p=new X(r.alpha??1),l=new ge(r.mode??0),u=new ci(o,i,s,a,c,p,l),d=new ve(u.calpha,"f");return new qe(t,e,n,{color:o,bias:i,scale:s,intensity:a,factor:c,alpha:p,mode:l},u,l,d)}case"rainbow":{let o=new X(r.filmThickness??30),i=new X(r.movement??0),s=new Je(r.wavelengths??new ur(0,0,0)),a=new X(r.noiseStrength??0),c=new X(r.noiseScale??1),p=new Je(r.offset??new ur(0,0,0)),l=new X(r.alpha??1),u=new ui(o,i,s,a,c,p,l),d=new ve(u.calpha,"f"),m=new ge(r.mode??0);return new qe(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:c,offset:p,alpha:l,mode:m},u,m,d)}case"transmission":{let o=new X(r.thickness??10),i=new X(r.ior??1.5),s=new X(r.roughness??.5),a=new We(r.transmissionSamplerSize??new Cr(2048,2048)),c=r.transmissionSamplerMap??new ya,p=r.transmissionDepthMap??new ya,l=new dt(c),u=new dt(p),d=window.innerWidth,m=window.innerHeight,f=d>=m?new We(m/d,1):new We(1,d/m),h=new X(r.alpha??1),g=new di(o,i,s,a,l,u,f,h),x=new ve(g.calpha,"f"),v=new ge(r.mode??0);return new qe(t,e,n,{thickness:o,ior:i,roughness:s,transmissionSamplerSize:a,transmissionSamplerMap:l,transmissionDepthMap:u,aspectRatio:f,alpha:h,mode:v},g,v,x)}case"toon":{let o=new ge(r.positioning??0),i;r.colors?i=new Ft(r.colors.length,r.colors):(i=new Ft(10,new wn(0,0,0,1)),i.value[1]=new wn(1,1,1,1));let s;r.steps?s=new je(r.steps.length,r.steps):(s=new je(10,1),s.value[0]=0);let a=new Je(r.source??new ur(0,0,0)),c=new Xr(r.isWorldSpace??!0),p=new X(r.noiseStrength??0),l=new X(r.noiseScale??1),u=new It(r.shadowColor),d=new Je(r.offset??new ur(0,0,0)),m=new X(r.alpha??1),f=new Ti(o,i,s,a,c,p,l,u,d,m),h=new ve(f.calpha,"f"),g=new ge(r.mode??0);return new qe(t,e,n,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:c,noiseStrength:p,noiseScale:l,shadowColor:u,offset:d,alpha:m,mode:g},f,g,h)}case"outline":{let o=new Se(r.outlineColor??16777215),i=new Se(r.contourColor??16777215),s=new X(r.outlineWidth??.1),a=new X(r.contourWidth??.1),c=new X(r.outlineThreshold??.1),p=new X(r.contourThreshold??.1),l=new X(r.outlineSmoothing??.1),u=new X(r.contourFrequency??.1),d=new Je(r.contourDirections??new ur(0,1,0)),m=new Xr(r.positionalLines??!1),f=new Xr(r.compensation??!0),h=r.normalMap??new ya,g=new dt(h),x=r.depthMap??new ya,v=new dt(x),A=r.pixelRatio??new X(window.devicePixelRatio),_=r.resolution??new We(new Cr(1,1)),b=new X(r.alpha??1),D=new pi(o,i,s,a,c,p,l,u,d,m,f,_,g,v,A,b),S=new ve(D.calpha,"f"),y=new ge(r.mode??0);return new qe(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:p,outlineSmoothing:l,contourFrequency:u,contourDirection:d,positionalLines:m,compensation:f,resolution:_,normalMap:g,depthMap:v,pixelRatio:A,alpha:b,mode:y},D,y,S)}case"depth":{let o=new ge(r.gradientType??0),i=new Xr(r.smooth??!1),s=new X(r.near??50),a=new X(r.far??200),c=new X(r.isVector??1),p=new X(r.isWorldSpace??0),l=new Je(r.origin??new ur),u=new Je(r.direction??new ur),d=new ge(r.num??0),m;r.colors?m=new Ft(d.value+1,r.colors):(m=new Ft(d.value+1,new wn(0,0,0,1)),m.value[1]=new wn(1,1,1,1));let f;r.steps?f=new je(d.value+1,r.steps):(f=new je(d.value+1,1),f.value[0]=0);let h=new X(r.alpha??1),g=new ge(r.mode??0),x=new mi(o,i,s,a,c,p,l,u,m,f,d,h),v=new ve(x.calpha,"f");return new qe(t,e,n,{gradientType:o,smooth:i,near:s,far:a,isVector:c,isWorldSpace:p,origin:l,direction:u,colors:m,steps:f,num:d,alpha:h,mode:g},x,g,v)}case"noise":{let o=new X(r.scale??1),i=new Je(r.size??new ur(100,100,100)),s=new X(r.move??1),a=new We(r.fA??new Cr(1.7,9.2)),c=new We(r.fB??new Cr(8.3,2.8)),p=new We(r.distortion??new Cr(1,1)),l=new It(r.colorA),u=new It(r.colorB),d=new It(r.colorC),m=new It(r.colorD),f=new X(r.alpha??1),h=new ge(r.mode??0),g=new ge(r.noiseType??0),x=new li(o,i,s,a,c,p,l,u,d,m,f,g),v=new ve(x.calpha,"f");return new qe(t,e,n,{scale:o,size:i,move:s,fA:a,fB:c,distortion:p,colorA:l,colorB:u,colorC:d,colorD:m,alpha:f,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new Je(r.cnormal??new ur(1,1,1)),i=new X(r.alpha??1),s=new ge(r.mode??0),a=new vi(o,i),c=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new qe(t,e,n,{cnormal:o,alpha:i,mode:s},a,s,c)}case"gradient":{let o=new ge(r.gradientType??0),i=new Xr(r.smooth??!1),s;r.colors?s=new Ft(r.colors.length,r.colors):(s=new Ft(10,new wn(0,0,0,1)),s.value[1]=new wn(1,1,1,1));let a;r.steps?a=new je(r.steps.length,r.steps):(a=new je(10,1),a.value[0]=0);let c=new We(r.offset??new Cr(0,0)),p=new We(r.morph??new Cr(0,0)),l=new X(r.angle??0),u=new X(r.alpha??1),d=new ge(r.mode??0),m=new gi(o,i,s,a,c,p,l,u),f=new ve(m.calpha,"f");return new qe(t,e,n,{gradientType:o,smooth:i,colors:s,steps:a,offset:c,morph:p,angle:l,alpha:u,mode:d},m,d,f)}default:{let o=new Se(1,0,0,1),i=new X(1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let a=new ge(0);return o.alpha=i,new qe(t,e,n,{color:o,alpha:i,mode:a},o,a,s)}}}function Nw(n,t,e,r){let o=df(e,r);return Cw(e,n,t,o)}function pc(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var xf=n=>n.tagName==="VIDEO",Tn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;xf(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.layers;for(let i=0;i<o.length;i++){let s=o[i];yf(s)&&Tn.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,a=r.image;xf(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var xa=class extends Ye{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&Tn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var An=class extends Ye{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var va=class extends An{constructor(e,r){super(e,r);this.objectType="NonParametric"}};import{DoubleSide as Lw,Mesh as Ow,MeshBasicMaterial as Pw,ShapeBufferGeometry as Iw,Vector2 as Mw,Vector3 as Dw}from"three";import{FontLoader as Bw}from"three/examples/jsm/loaders/FontLoader.js";var Ge=class extends Ow{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},c=new Pw({color:0,opacity:1,visible:!0,transparent:!0,side:Lw})){let p=Ge.loadChar(e,o,a);super(p.geometry,c);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=a,this.resolution=p.resolution,this.glyphsHa=p.glyphsHa,this.localPosition=new Mw,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Ge._fontPath}static set FONTS_PATH(e){Ge._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Dw(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Ge.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Ge.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Ge.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Ge(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ge.fontCache[e]?r(Ge.fontCache[e]):new Bw().load(Ge.FONTS_PATH+e+".json",s=>{Ge.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ge.charCache[e]){if(Ge.charCache[e][o]&&Ge.charCache[e][o].fontFamily===r)return Ge.charCache[e][o]}else Ge.charCache[e]={};let i=Ge.fontCache[r],s=i.generateShapes(e,1);return Ge.charCache[e][o]={geometry:new Iw(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ge.charCache[e][o]}},Vt=Ge;Vt.charCache={},Vt.fontCache={},Vt._fontPath="/_assets/_fonts/";import{DoubleSide as bf,MeshBasicMaterial as _f,Vector3 as Ew,Object3D as Gw}from"three";import{Vector2 as vf}from"three";var ba=new vf,po=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new vf(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){ba.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(ba),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=i),ba.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(ba),e)}clone(){let t=new po(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var fc=class extends Ye{constructor(e){super(e,new _f({transparent:!0,opacity:1,visible:!1,side:bf}));this.objectType="TextFrame";this.charContainer=new Gw,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new Ew(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Xs.create({parameters:{width:r.width,height:r.height}}),s=new fc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Vt.loadFont(o),r.text=e;let i=r.textOrigin,s=new _f({visible:r.visible,transparent:!0,side:bf}),a=e.split(`
1329
+ `),c=0;this.userData.textFrame.textLines=a.map((p,l)=>{let u=new po(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let m={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let h=new Vt(m,f);return u.addChar3D(h,i),this.charContainer.add(h),h}),c+=u.maxCharSize*u.lineHeight,u}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof Vt&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??i,c=e.parameters?.height??s,p=r.textFrame;super.updateGeometry(e),p.maxLineSize=a,p.textOrigin.set(-.5*a,.5*c,0),c!==s?(this.checkOverFlow(),this.checkCapacity()):a!==i&&(i<a?this.checkCapacity():i>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let a=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?a.unshift(i[s].getWord(i[s].message.length-1,-1)):a.unshift(i[s].popChar());if(a.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let c=0;for(let p=0;p<a.length;p+=1)for(let l=0;l<a[p].length;l+=1)i[s+1].addChar3D(a[p][l],o,c),c+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let c,p=s[a-1].spaceLeft(i);if(s[a].wordSize(0,1)<=p){s[a].containSpace()?c=s[a].getWord(0,1):c=s[a].popChar(0);for(let l=0;l<c.length;l+=1)c[l]&&s[a-1].addChar3D(c[l],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new po(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<i.length;a++)i[a].updateYLinePos(this.getNewLinePosition(a)),i[a].fullUpdate(o.textOrigin),i[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.color?.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.visible=e}}}async updateFontFamily(e){await Vt.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)a[c].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<i.length;a++)i[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await Vt.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Ve(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}},mo=fc;mo.VerticalAlign=Qa,mo.HorizontalAlign=Ka,mo.TextTransform=Za;import{NormalBlending as Rw,ShaderMaterial as Fw}from"three";var zt=class extends Fw{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile,this.reset(e,r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,r){let o=e.layers??vr.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>pr.create(this.layerIdGen++,i.id,i.data,r)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r)}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof dr),this.lightLayer===void 0&&(this.lightLayer=new dr(0,"",Vr.defaultData("light","basic"),new $r,{})),this.lightLayer.node instanceof $r||(this.lightLayer.node.penumbraSize=e.penumbraSizeNode),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,r,o){if(this.data=r,e.path[0]==="layers"){let i=e.path[1];if(i===void 0){if(this.layers.reverse(),e.type===4){let s=pr.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(c=>c.uuid===e.id),a=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,a)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(a=>a.uuid===i);if(s){let a=r.layers.data(i);if(s.updateByOp({...e,path:e.path.slice(2)},a,o)){let p=pr.create(this.layerIdGen++,i,a,o);this.layers.splice(this.layers.findIndex(l=>l.uuid===i),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof qe),r=this.layers.findIndex(o=>o instanceof dr);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let s=this.layers[i];s instanceof qe&&(o=new fi(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ve("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof dr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof qe&&(e=new fi(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 Ai);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new mt(r,e[o].position,mt.ADD),r=new mt(r,new X(.5).setReadonly(!0),mt.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,r){this.build({renderer:r}),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,s,a)=>Math.min(Math.max(i,s),a);for(let i of this.layers)if(i.type==="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}restoreClampedUniforms(){for(let e of this.layers)e.type==="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new fa;return this.lights=this.lightLayer.data.category!=="basic",r.setMaterial(this,e.renderer),r.build(this.fragment,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.transparent=r.requires.transparent||this.blending>Rw,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(zt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{WebGLRenderTarget as Cf,LinearMipmapLinearFilter as Vw,LinearFilter as zw,ClampToEdgeWrapping as Nf,DepthTexture as Lf,NearestFilter as Of,FloatType as Uw}from"three";var fo=class extends zt{};var Af=_c(Sf());var wf=new Map;function Tf(n){if(typeof n=="string")return n;let t=wf.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},wf.set(n,t)),t.url}var Cn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let i;typeof t=="string"?i={src:t}:i={src:Tf(t),format:"wav"},this.sound=new Af.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 src(){return this._src}get isStarted(){return this._isStarted}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}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._isStarted=!0,this.delay?(this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.clearFade(),this.clearDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay()}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()}};var Ci=class{constructor(t){this.deletedMaterial=new fo(vr.defaultTwoLayerData("basic"),this);this.deletedImage=new uo(Ds.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.transmissionRenderTarget=new Cf(2048,2048,{generateMipmaps:!0,minFilter:Vw,magFilter:zw,wrapS:Nf,wrapT:Nf}),this.transmissionRenderTarget.depthTexture=new Lf(2048,2048),this.normalRenderTarget=new Cf(1024,1024,{generateMipmaps:!1,minFilter:Of,magFilter:Of,type:Uw}),this.normalRenderTarget.depthTexture=new Lf(1024,1024),this.penumbraSizeNode=new je(5,t.penumbraSize),this.resolutionNode=new We(1,1),this.pixelRatioNode=new X(typeof document<"u"?window.devicePixelRatio:1),this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,new fo(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data)}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),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):new zt(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new uo(e,this.onImageLoad),!1)}deleteImage(t){this.images[t]&&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):new Sn(t,this.onImageLoad)}getImages(){return this.images}addColor(t,e){return this.colors[t]?("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 Yr(e.r,e.g,e.b,e.a):this.colors[t]=new Yr(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){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 Ze(0,0,0,0))}else return"a"in t?new Ze(t.r,t.g,t.b,t.a):new Ze(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 Cn)return e;{let r=new Cn({src:e});return this.audios[t]=r,r}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof Cn&&e.dispose()}),this.audios={}}},gH=new Ci(qo.emptyData());import{DRACOLoader as kw}from"three/examples/jsm/loaders/DRACOLoader.js";var Qr;function jw(){return Qr||(Qr=new kw,Qr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Qr.decoderPending}async function Hw(n){if(Qr){let t={attributeIDs:Qr.defaultAttributeIDs,attributeTypes:Qr.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Qr.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 Pf(n,t){let[e,r]=Ba(ws.deserialize(new Uint8Array(n)));vd(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await jw();for(let i of o){let s=await Hw(Gr(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:c,array:p,itemSize:l})=>{a[c]={array:p,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=a,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{HemisphereLight as m1,Scene as f1,Vector3 as h1,Color as $f,Fog as g1,Box3 as y1}from"three";import{Box3 as Ww,Matrix4 as ho,Sphere as Df,Vector3 as qw}from"three";var Ef=_c(Mf());var hc;Ys.then(n=>{hc=n});var Gf=new ho,$w=new ho,Xw=new ho,Ut=new Ww,Zr=new qw,Yw=new ho,Kw=new ho,Nn=class extends Ye{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new ho;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new ho;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=Ot.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new Nn(i,s,a||void 0,c);return r.geometry.phongAngle!==void 0&&(p.phongAngle=r.geometry.phongAngle),p.calcBoundingBox(),p.freeSubdivPointer(),p.uuid=e,p.fromState(r),p}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Ot.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,Wr(this),qr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Ot.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Ot.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Ot.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Ot.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Ye.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,Ef.SVD)(r),a=Gf.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),c=$w.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),p=Xw.copy(c).transpose();this.shearScale=Yw.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=Kw.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,p),s.every(l=>Math.abs(s[0]-l)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Df);let r=e.attributes.position,o=e.boundingSphere.center;Ut.setFromBufferAttribute(r),Ut.getCenter(o),e.boundingSphere.radius=o.distanceTo(Ut.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ut.getSize(Zr);let i={width:Zr.x,height:Zr.y,depth:Zr.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;Ut.min.set(e[0],e[2],e[4]),Ut.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(Ut.min.applyMatrix4(this.shearScaleInv),Ut.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Df);let o=r.boundingSphere.center;Ut.getCenter(o),r.boundingSphere.radius=o.distanceTo(Ut.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ut.getSize(Zr);let i={width:Zr.x,height:Zr.y,depth:Zr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(hc.free_bvh(this.subdivPointer),hc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,Bf(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Bf(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function Bf(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Gf.makeScale(t,e,r).invert().elements,a,c,p;for(var l=0,u=o.length;l<u;l+=3)o[l]*=t,o[l+1]*=e,o[l+2]*=r,a=i[l],c=i[l+1],p=i[l+2],i[l]=s[0]*a+s[4]*c+s[8]*p,i[l+1]=s[1]*a+s[5]*c+s[9]*p,i[l+2]=s[2]*a+s[6]*c+s[10]*p}import{BackSide as Qw,BufferGeometry as Zw,DoubleSide as Jw,FrontSide as e1}from"three";function Rf(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=e1:t.side===1?n.side=Qw:n.side=Jw)}function t1(n,t){if(Array.isArray(n.material))for(let e of n.material)Rf(e,t);else{let e=n.material;Rf(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Ff(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Nn.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new Zw:Js(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Ls.is2DParametricMesh(o.userData.type)?r=new xa(o,i):o?.userData.type==="VectorGeometry"?r=new sn(o,i):t.geometry.type==="NonParametricGeometry"?r=new va(o,i):t.geometry.type==="BooleanGeometry"?(r=new ra(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new An(o,i),r.uuid=n,r.fromState(t,e)}return t1(r,t),r}function Vf(n,t,e){return t.type==="Mesh"?Ff(n,t,e):t.type==="TextFrame"?mo.createFromState(n,t,e):t.type==="Empty"?ao.createFromState(n,t):t.type==="PointLight"?mn.createFromState(n,t,e):t.type==="SpotLight"?fn.createFromState(n,t,e):t.type==="DirectionalLight"?dn.createFromState(n,t,e):Vo.is(t.type)?Tr.createFromState(n,t):(console.error(t),new ao)}import{Mesh as kf,Ray as n1,Matrix4 as i1,Raycaster as s1}from"three";function a1(n,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=n.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=n.depthTexture}function l1(n,t){t.uniforms[`f${t.id}_normalMap`].value=n.texture,t.uniforms[`f${t.id}_depthMap`].value=n.depthTexture}function zf(n,t,e){let r=!1,o=e.getLayersOfType("transmission"),i=e.getLayersOfType("outline");return i.length>0&&(t.layers.set(8),o.length===0&&t.layers.enable(3),r=!0,n!==void 0&&i.forEach(s=>l1(n,s)),qr(t),Wr(t)),o.length===0&&i.length===0&&t.layers.set(0),r}function Uf(n,t,e){if(!e.layers)return!1;let r=!1,o=e.getLayersOfType("transmission"),i=e.getLayersOfType("outline");return o.length>0&&(t.layers.set(3),i.length>0&&t.layers.enable(8),r=!0,n!==void 0&&o.forEach(s=>a1(n,s))),o.length===0&&i.length===0&&t.layers.set(0),r}function jf(n,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof kf&&r.objectType!=="TextFrame")if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)zf(n,r,r.material[o])&&(e=!0);else zf(n,r,r.material)&&(e=!0)}),e}function Hf(n,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof kf)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Uf(n,r,r.material[o])&&(e=!0);else Uf(n,r,r.material)&&(e=!0)}),e}function Wf(n){"material"in n&&c1(n.material),"geometry"in n&&n.geometry.dispose()}function c1(n){Sc(n).forEach(t=>{t instanceof fo||t.dispose()})}var u1=new s1,p1=new i1,d1=new n1;function qf(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=p1.copy(o.matrixWorld).invert(),s=d1.copy(t.ray).applyMatrix4(i),a=n.matrixWorld;s.applyMatrix4(a);let c=u1;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far,c.intersectObject(n,!1).length>0&&e.push({object:n})}}var Xf=new h1,gc=class extends Qs(f1){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new g1(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new $f(1,0,0);this.bgColor=new $f(1,1,1);this.entityByUuid={};this.ambientLight=new m1(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=Hf(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(e){return this.needsNormalDirty&&(this._needsNormal=jf(e,this),e!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Ve(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Tr&&this.switchActiveCamera(o)}this.traverse(o=>{Jt(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{Wf(e)});for(let e of this.children)rr(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Tr.createFromState(gc.PERSONAL_CAMERA_ID,{...Ps.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)rr(s)&&!s.raycastLock&&s.visible&&((Zt(s)||Ks(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),qf(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)rr(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)rr(r)&&r.visible&&r.traverseVisibleEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ve(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){Am(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ve(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let a=Vf(e,r,s);return a&&(this.entityByUuid[e]=a,i.add(a),Jt(i)&&Zt(a)&&(a.prevBooleanObjectParent=i),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:c}=e[i],p=this.find(a),l=c?p.recursiveBBox:p.singleBBox;r.push(...l.vertices)}let o=new y1;return o.setFromPoints(r),o.getCenter(Xf),Xf}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 Ye)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)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Ni=gc;Ni.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{Mesh as UW}from"three";import{mergeBufferGeometries as HW}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Yf(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 Kf,ShaderLib as x1}from"three";function Qf(n){let t=new Set;return n.traverse(e=>{if(Zt(e))if(Me(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);v1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Kf,specularColor:new Kf}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(x1.physical.uniforms,o.uniforms),e.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):b1(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function v1(n){return n.getLayersOfType("transmission").length>0}function b1(n){let t=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let r=e.uniforms["f"+e.id+"_alpha"];r&&(t+=(1-t)*r.value)}}),t<1}function Zf(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Jf(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 s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as _1}from"three/examples/jsm/utils/BufferGeometryUtils.js";function eh(n){let t=[];return n.traverse(e=>{e instanceof so&&t.push(e)}),t.forEach(e=>{let r=e.object,i=e.children.map(a=>{a.updateMatrix();let c=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&Yf(c),c}),s=_1(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function th(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function rh(n){Object.values(n.shared.materials).forEach(t=>{yc(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?yc(e.material):"materials"in e&&e.materials.forEach(r=>{yc(r)})})}function yc(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 oh="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",xc=class extends w1{load(t,e,r,o=console.error){let i=new S1(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(oh+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(oh),i.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},r,o)}async parse(t){let e=await Pf(t,rh),r=new Ci(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ni(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Tm(s)&&Object.assign(s,{makeDefault:!0})}return o=eh(o),o=Qf(o),o=Zf(o),o=Jf(o),o=th(o),o}};export{xc as default};