@splinetool/loader 0.9.117 → 0.9.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/SplineLoader.cjs +117 -113
- package/build/SplineLoader.js +117 -113
- package/package.json +1 -1
package/build/SplineLoader.cjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDescriptor;var fh=Object.getOwnPropertyNames;var mh=Object.getPrototypeOf,hh=Object.prototype.hasOwnProperty;var Ic=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Lc=(n,t)=>{for(var e in t)rs(n,e,{get:t[e],enumerable:!0})},Oc=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of fh(t))!hh.call(n,o)&&o!==e&&rs(n,o,{get:()=>t[o],enumerable:!(r=dh(t,o))||r.enumerable});return n};var Mc=(n,t,e)=>(e=n!=null?ph(mh(n)):{},Oc(t||!n||!n.__esModule?rs(e,"default",{value:n,enumerable:!0}):e,n)),gh=n=>Oc(rs({},"__esModule",{value:!0}),n);var Pm=Ic((Va,Nm)=>{(function(n,t){typeof Va=="object"&&typeof Nm<"u"?t(Va):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Va,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,f,m,h,g,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],D=[],w=e==="f"?A:v,y=h=d=0;y<A;y++)b[y]=new Array(w).fill(0);for(y=0;y<v;y++)D[y]=new Array(v).fill(0);var L,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(S[y]=d,m=0,c=y+1,s=y;s<A;s++)m+=Math.pow(b[s][y],2);if(m<i)d=0;else for(f=(u=b[y][y])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y]=u-d,s=c;s<v;s++){for(m=0,a=y;a<A;a++)m+=b[a][y]*b[a][s];for(u=m/f,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(T[y]=d,m=0,s=c;s<v;s++)m+=Math.pow(b[y][s],2);if(m<i)d=0;else{for(f=(u=b[y][y+1])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y+1]=u-d,s=c;s<v;s++)S[s]=b[y][s]/f;for(s=c;s<A;s++){for(m=0,a=c;a<v;a++)m+=b[s][a]*b[y][a];for(a=c;a<v;a++)b[s][a]=b[s][a]+m*S[a]}}h<(g=Math.abs(T[y])+Math.abs(S[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(f=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/f;for(s=c;s<v;s++){for(m=0,a=c;a<v;a++)m+=b[y][a]*D[a][s];for(a=c;a<v;a++)D[a][s]=D[a][s]+m*D[a][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=S[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<w;s++)b[y][s]=0;if(d!==0){for(f=b[y][y]*d,s=c;s<w;s++){for(m=0,a=c;a<A;a++)m+=b[a][y]*b[a][s];for(u=m/f,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 I=0;I<50;I++){for(L=!1,c=a;0<=c;c--){if(Math.abs(S[c])<=o){L=!0;break}if(Math.abs(T[c-1])<=o)break}if(!L){for(l=0,p=c-(m=1),y=c;y<a+1&&(u=m*S[y],S[y]=l*S[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),l=d/(f=T[y]),m=-u/f,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*l+x*m,b[s][y]=-g*m+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=S[a-1])-(f=S[a]))*(d+f))/(2*f*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+f*(g/(u<0?u-d:u+d)-f))/h,y=c+(m=l=1);y<a+1;y++){if(d=S[y],g=T[y],f=m*d,d*=l,x=Math.sqrt(u*u+f*f),u=h*(l=u/(S[y-1]=x))+d*(m=f/x),d=-h*m+d*l,f=g*m,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*m,D[s][y]=-h*m+x*l;if(x=Math.sqrt(u*u+f*f),u=(l=u/(T[y-1]=x))*d+(m=f/x)*g,h=-m*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*m,b[s][y]=-g*m+x*l}S[c]=0,S[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})})});var km=Ic(Ua=>{(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 f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);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 f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);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$/,""),f=l._navigator?l._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,g=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,x=f.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 f=new Audio;f._unlocked=!0,l._releaseHtml5Audio(f)}catch{l.noAudio=!0;break}for(var m=0;m<l._howls.length;m++)if(!l._howls[m]._webAudio)for(var h=l._howls[m]._getSoundIds(),g=0;g<h.length;g++){var x=l._howls[m]._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 f=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(f,f)}},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 f,m;if(l._format&&l._format[d])f=l._format[d];else{if(m=l._src[d],typeof m!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&t.codecs(f)){u=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,f=null;if(typeof l=="number")f=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 m=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(m++,f=d._sounds[h]._id);m===1?l=null:f=null}}var g=f?d._soundById(f):d._inactiveSound();if(!g)return null;if(f&&!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(f&&!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),S=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 w=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 L=function(){d._playLock=!1,w(),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),S!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),S)),u||setTimeout(function(){d._emit("play",g._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?L():(d._playLock=!0,d.once("resume",L),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,w(),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,w(),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),S):(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(k){d._emit("playerror",g._id,k)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var I=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||I)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),f=0;f<d.length;f++){u._clearTimer(d[f]);var m=u._soundById(d[f]);if(m&&!m._paused&&(m._seek=u.seek(d[f]),m._rateSeek=0,m._paused=!0,u._stopFade(d[f]),m._node))if(u._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),u._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||u._emit("pause",m?m._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 f=d._getSoundIds(l),m=0;m<f.length;m++){d._clearTimer(f[m]);var h=d._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(f[m]),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 f=d._getSoundIds(u),m=0;m<f.length;m++){var h=d._soundById(f[m]);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,f;if(u.length===0)return l._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var m=l._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),f=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 f>"u"&&(l._volume=d),f=l._getSoundIds(f);for(var x=0;x<f.length;x++)g=l._soundById(f[x]),g&&(g._volume=d,u[2]||l._stopFade(f[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=f?l._soundById(f):l._sounds[0],g?g._volume:0;return l},fade:function(l,u,d,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,u,d,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),m.volume(l,f);for(var h=m._getSoundIds(f),g=0;g<h.length;g++){var x=m._soundById(h[g]);if(x){if(f||m._stopFade(h[g]),m._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)}m._startFadeInterval(x,l,u,d,h[g],typeof f>"u")}}return m},_startFadeInterval:function(l,u,d,f,m,h){var g=this,x=u,v=d-u,A=Math.abs(v/.01),S=Math.max(4,A>0?f/A:f),b=Date.now();l._fadeTo=d,l._interval=setInterval(function(){var D=(Date.now()-b)/f;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))},S)},_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,f,m;if(u.length===0)return l._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],l._loop=d;else return m=l._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(d=u[0],f=parseInt(u[1],10));for(var h=l._getSoundIds(f),g=0;g<h.length;g++)m=l._soundById(h[g]),m&&(m._loop=d,l._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=d,d&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._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,f;if(u.length===0)f=l._sounds[0]._id;else if(u.length===1){var m=l._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),f=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 f>"u"&&(l._rate=d),f=l._getSoundIds(f);for(var x=0;x<f.length;x++)if(g=l._soundById(f[x]),g){l.playing(f[x])&&(g._rateSeek=l.seek(f[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(f[x]),A=(l._sprite[g._sprite][0]+l._sprite[g._sprite][1])/1e3-v,S=A*1e3/Math.abs(g._rate);(l._endTimers[f[x]]||!g._paused)&&(l._clearTimer(f[x]),l._endTimers[f[x]]=setTimeout(l._ended.bind(l,g),S)),l._emit("rate",g._id)}}else return g=l._soundById(f),g?g._rate:l._rate;return l},seek:function(){var l=this,u=arguments,d,f;if(u.length===0)l._sounds.length&&(f=l._sounds[0]._id);else if(u.length===1){var m=l._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):l._sounds.length&&(f=l._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));if(typeof f>"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(f);if(g)if(typeof d=="number"&&d>=0){var x=l.playing(f);x&&l.pause(f,!0),g._seek=d,g._ended=!1,l._clearTimer(f),!l._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&l.play(f,!0),l._emit("seek",f)};if(x&&!l._webAudio){var A=function(){l._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(l._webAudio){var S=l.playing(f)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+S*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 f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(l){var u=this,d=u._duration,f=u._soundById(l);return f&&(d=u._sprite[f._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 f=t._howls.indexOf(l);f>=0&&t._howls.splice(f,1);var m=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===l._src||l._src.indexOf(t._howls[d]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],t.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,u,d,f){var m=this,h=m["_on"+l];return typeof u=="function"&&h.push(f?{id:d,fn:u,once:f}:{id:d,fn:u}),m},off:function(l,u,d){var f=this,m=f["_on"+l],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<m.length;h++){var g=d===m[h].id;if(u===m[h].fn&&g||!u&&g){m.splice(h,1);break}}else if(l)f["_on"+l]=[];else{var x=Object.keys(f);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(f[x[h]])&&(f[x[h]]=[])}return f},once:function(l,u,d){var f=this;return f.on(l,u,d,1),f},_emit:function(l,u,d){for(var f=this,m=f["_on"+l],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===u||l==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(f,m[h].fn),0),m[h].once&&f.off(l,m[h].fn,m[h].id));return f._loadQueue(l),f},_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 f=!!(l._loop||u._sprite[d][2]);if(u._emit("end",l._id),!u._webAudio&&f&&u.stop(l._id,!0).play(l._id),u._webAudio&&f){u._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=t.ctx.currentTime;var m=(l._stop-l._start)*1e3/Math.abs(l._rate);u._endTimers[l._id]=setTimeout(u._ended.bind(u,l),m)}return u._webAudio&&!f&&(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&&!f&&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,f=0;if(!(l._sounds.length<u)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&d++;for(f=l._sounds.length-1;f>=0;f--){if(d<=u)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),d--)}}},_getSoundIds:function(l){var u=this;if(typeof l>"u"){for(var d=[],f=0;f<u._sounds.length;f++)d.push(u._sounds[f]._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]),f=new Uint8Array(d.length),m=0;m<d.length;++m)f[m]=d.charCodeAt(m);a(f.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.")},f=function(m){m&&u._sounds.length>0?(o[u._src]=m,c(u,m)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(l).then(f).catch(d):t.ctx.decodeAudioData(l,f,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 f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof Ua<"u"&&(Ua.Howler=t,Ua.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 ew={};Lc(ew,{default:()=>ja});module.exports=gh(ew);var ka=require("three");function os(n,t){return Object.setPrototypeOf(n,t),n}function Dc(n){return Array.isArray(n)?n:[n]}var yh=typeof global=="object"&&global&&global.Object===Object&&global,ns=yh;var xh=typeof self=="object"&&self&&self.Object===Object&&self,vh=ns||xh||Function("return this")(),Xe=vh;var bh=Xe.Symbol,gt=bh;var Bc=Object.prototype,Sh=Bc.hasOwnProperty,wh=Bc.toString,$n=gt?gt.toStringTag:void 0;function _h(n){var t=Sh.call(n,$n),e=n[$n];try{n[$n]=void 0;var r=!0}catch{}var o=wh.call(n);return r&&(t?n[$n]=e:delete n[$n]),o}var Ec=_h;var Th=Object.prototype,Ah=Th.toString;function Ch(n){return Ah.call(n)}var Gc=Ch;var Nh="[object Null]",Ph="[object Undefined]",Rc=gt?gt.toStringTag:void 0;function Ih(n){return n==null?n===void 0?Ph:Nh:Rc&&Rc in Object(n)?Ec(n):Gc(n)}var Bt=Ih;function Lh(n){return n!=null&&typeof n=="object"}var dt=Lh;var Oh="[object Symbol]";function Mh(n){return typeof n=="symbol"||dt(n)&&Bt(n)==Oh}var Vo=Mh;function Dh(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 is=Dh;var Bh=Array.isArray,Fe=Bh;var Eh=1/0,Fc=gt?gt.prototype:void 0,Vc=Fc?Fc.toString:void 0;function zc(n){if(typeof n=="string")return n;if(Fe(n))return is(n,zc)+"";if(Vo(n))return Vc?Vc.call(n):"";var t=n+"";return t=="0"&&1/n==-Eh?"-0":t}var Uc=zc;function Gh(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Ze=Gh;function Rh(n){return n}var ss=Rh;var Fh="[object AsyncFunction]",Vh="[object Function]",zh="[object GeneratorFunction]",Uh="[object Proxy]";function jh(n){if(!Ze(n))return!1;var t=Bt(n);return t==Vh||t==zh||t==Fh||t==Uh}var zo=jh;var kh=Xe["__core-js_shared__"],as=kh;var jc=function(){var n=/[^.]+$/.exec(as&&as.keys&&as.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Hh(n){return!!jc&&jc in n}var kc=Hh;var Wh=Function.prototype,qh=Wh.toString;function $h(n){if(n!=null){try{return qh.call(n)}catch{}try{return n+""}catch{}}return""}var Or=$h;var Xh=/[\\^$.*+?()[\]{}|]/g,Yh=/^\[object .+?Constructor\]$/,Kh=Function.prototype,Qh=Object.prototype,Zh=Kh.toString,Jh=Qh.hasOwnProperty,eg=RegExp("^"+Zh.call(Jh).replace(Xh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tg(n){if(!Ze(n)||kc(n))return!1;var t=zo(n)?eg:Yh;return t.test(Or(n))}var Hc=tg;function rg(n,t){return n?.[t]}var Wc=rg;function og(n,t){var e=Wc(n,t);return Hc(e)?e:void 0}var _t=og;var ng=_t(Xe,"WeakMap"),ls=ng;var qc=Object.create,ig=function(){function n(){}return function(t){if(!Ze(t))return{};if(qc)return qc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),$c=ig;function sg(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 Xc=sg;function ag(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var cs=ag;var lg=800,cg=16,ug=Date.now;function pg(n){var t=0,e=0;return function(){var r=ug(),o=cg-(r-e);if(e=r,o>0){if(++t>=lg)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Yc=pg;function dg(n){return function(){return n}}var Kc=dg;var fg=function(){try{var n=_t(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Uo=fg;var mg=Uo?function(n,t){return Uo(n,"toString",{configurable:!0,enumerable:!1,value:Kc(t),writable:!0})}:ss,Qc=mg;var hg=Yc(Qc),us=hg;function gg(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Zc=gg;var yg=9007199254740991,xg=/^(?:0|[1-9]\d*)$/;function vg(n,t){var e=typeof n;return t=t??yg,!!t&&(e=="number"||e!="symbol"&&xg.test(n))&&n>-1&&n%1==0&&n<t}var jr=vg;function bg(n,t,e){t=="__proto__"&&Uo?Uo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var jo=bg;function Sg(n,t){return n===t||n!==n&&t!==t}var kr=Sg;var wg=Object.prototype,_g=wg.hasOwnProperty;function Tg(n,t,e){var r=n[t];(!(_g.call(n,t)&&kr(r,e))||e===void 0&&!(t in n))&&jo(n,t,e)}var ko=Tg;function Ag(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?jo(e,a,c):ko(e,a,c)}return e}var zt=Ag;var Jc=Math.max;function Cg(n,t,e){return t=Jc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Jc(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),Xc(n,this,a)}}var ps=Cg;function Ng(n,t){return us(ps(n,t,ss),n+"")}var eu=Ng;var Pg=9007199254740991;function Ig(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Pg}var Ho=Ig;function Lg(n){return n!=null&&Ho(n.length)&&!zo(n)}var Hr=Lg;function Og(n,t,e){if(!Ze(e))return!1;var r=typeof t;return(r=="number"?Hr(e)&&jr(t,e.length):r=="string"&&t in e)?kr(e[t],n):!1}var tu=Og;function Mg(n){return eu(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&&tu(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 ru=Mg;var Dg=Object.prototype;function Bg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Dg;return n===e}var Wo=Bg;function Eg(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var ou=Eg;var Gg="[object Arguments]";function Rg(n){return dt(n)&&Bt(n)==Gg}var Wa=Rg;var nu=Object.prototype,Fg=nu.hasOwnProperty,Vg=nu.propertyIsEnumerable,zg=Wa(function(){return arguments}())?Wa:function(n){return dt(n)&&Fg.call(n,"callee")&&!Vg.call(n,"callee")},Mr=zg;function Ug(){return!1}var iu=Ug;var lu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,su=lu&&typeof module=="object"&&module&&!module.nodeType&&module,jg=su&&su.exports===lu,au=jg?Xe.Buffer:void 0,kg=au?au.isBuffer:void 0,Hg=kg||iu,qo=Hg;var Wg="[object Arguments]",qg="[object Array]",$g="[object Boolean]",Xg="[object Date]",Yg="[object Error]",Kg="[object Function]",Qg="[object Map]",Zg="[object Number]",Jg="[object Object]",ey="[object RegExp]",ty="[object Set]",ry="[object String]",oy="[object WeakMap]",ny="[object ArrayBuffer]",iy="[object DataView]",sy="[object Float32Array]",ay="[object Float64Array]",ly="[object Int8Array]",cy="[object Int16Array]",uy="[object Int32Array]",py="[object Uint8Array]",dy="[object Uint8ClampedArray]",fy="[object Uint16Array]",my="[object Uint32Array]",Me={};Me[sy]=Me[ay]=Me[ly]=Me[cy]=Me[uy]=Me[py]=Me[dy]=Me[fy]=Me[my]=!0;Me[Wg]=Me[qg]=Me[ny]=Me[$g]=Me[iy]=Me[Xg]=Me[Yg]=Me[Kg]=Me[Qg]=Me[Zg]=Me[Jg]=Me[ey]=Me[ty]=Me[ry]=Me[oy]=!1;function hy(n){return dt(n)&&Ho(n.length)&&!!Me[Bt(n)]}var cu=hy;function gy(n){return function(t){return n(t)}}var $o=gy;var uu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xn=uu&&typeof module=="object"&&module&&!module.nodeType&&module,yy=Xn&&Xn.exports===uu,qa=yy&&ns.process,xy=function(){try{var n=Xn&&Xn.require&&Xn.require("util").types;return n||qa&&qa.binding&&qa.binding("util")}catch{}}(),Dr=xy;var pu=Dr&&Dr.isTypedArray,vy=pu?$o(pu):cu,ds=vy;var by=Object.prototype,Sy=by.hasOwnProperty;function wy(n,t){var e=Fe(n),r=!e&&Mr(n),o=!e&&!r&&qo(n),i=!e&&!r&&!o&&ds(n),s=e||r||o||i,a=s?ou(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")||jr(p,c)))&&a.push(p);return a}var fs=wy;function _y(n,t){return function(e){return n(t(e))}}var ms=_y;var Ty=ms(Object.keys,Object),du=Ty;var Ay=Object.prototype,Cy=Ay.hasOwnProperty;function Ny(n){if(!Wo(n))return du(n);var t=[];for(var e in Object(n))Cy.call(n,e)&&e!="constructor"&&t.push(e);return t}var fu=Ny;function Py(n){return Hr(n)?fs(n):fu(n)}var Xo=Py;function Iy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var mu=Iy;var Ly=Object.prototype,Oy=Ly.hasOwnProperty;function My(n){if(!Ze(n))return mu(n);var t=Wo(n),e=[];for(var r in n)r=="constructor"&&(t||!Oy.call(n,r))||e.push(r);return e}var hu=My;function Dy(n){return Hr(n)?fs(n,!0):hu(n)}var sr=Dy;var By=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ey=/^\w*$/;function Gy(n,t){if(Fe(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Vo(n)?!0:Ey.test(n)||!By.test(n)||t!=null&&n in Object(t)}var gu=Gy;var Ry=_t(Object,"create"),Br=Ry;function Fy(){this.__data__=Br?Br(null):{},this.size=0}var yu=Fy;function Vy(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var xu=Vy;var zy="__lodash_hash_undefined__",Uy=Object.prototype,jy=Uy.hasOwnProperty;function ky(n){var t=this.__data__;if(Br){var e=t[n];return e===zy?void 0:e}return jy.call(t,n)?t[n]:void 0}var vu=ky;var Hy=Object.prototype,Wy=Hy.hasOwnProperty;function qy(n){var t=this.__data__;return Br?t[n]!==void 0:Wy.call(t,n)}var bu=qy;var $y="__lodash_hash_undefined__";function Xy(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Br&&t===void 0?$y:t,this}var Su=Xy;function Yo(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])}}Yo.prototype.clear=yu;Yo.prototype.delete=xu;Yo.prototype.get=vu;Yo.prototype.has=bu;Yo.prototype.set=Su;var $a=Yo;function Yy(){this.__data__=[],this.size=0}var wu=Yy;function Ky(n,t){for(var e=n.length;e--;)if(kr(n[e][0],t))return e;return-1}var Wr=Ky;var Qy=Array.prototype,Zy=Qy.splice;function Jy(n){var t=this.__data__,e=Wr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Zy.call(t,e,1),--this.size,!0}var _u=Jy;function ex(n){var t=this.__data__,e=Wr(t,n);return e<0?void 0:t[e][1]}var Tu=ex;function tx(n){return Wr(this.__data__,n)>-1}var Au=tx;function rx(n,t){var e=this.__data__,r=Wr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var Cu=rx;function Ko(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])}}Ko.prototype.clear=wu;Ko.prototype.delete=_u;Ko.prototype.get=Tu;Ko.prototype.has=Au;Ko.prototype.set=Cu;var qr=Ko;var ox=_t(Xe,"Map"),$r=ox;function nx(){this.size=0,this.__data__={hash:new $a,map:new($r||qr),string:new $a}}var Nu=nx;function ix(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var Pu=ix;function sx(n,t){var e=n.__data__;return Pu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Xr=sx;function ax(n){var t=Xr(this,n).delete(n);return this.size-=t?1:0,t}var Iu=ax;function lx(n){return Xr(this,n).get(n)}var Lu=lx;function cx(n){return Xr(this,n).has(n)}var Ou=cx;function ux(n,t){var e=Xr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var Mu=ux;function Qo(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])}}Qo.prototype.clear=Nu;Qo.prototype.delete=Iu;Qo.prototype.get=Lu;Qo.prototype.has=Ou;Qo.prototype.set=Mu;var Yn=Qo;var px="Expected a function";function Xa(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(px);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(Xa.Cache||Yn),e}Xa.Cache=Yn;var Du=Xa;var dx=500;function fx(n){var t=Du(n,function(r){return e.size===dx&&e.clear(),r}),e=t.cache;return t}var Bu=fx;var mx=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,hx=/\\(\\)?/g,gx=Bu(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(mx,function(e,r,o,i){t.push(o?i.replace(hx,"$1"):r||e)}),t}),Eu=gx;function yx(n){return n==null?"":Uc(n)}var Gu=yx;function xx(n,t){return Fe(n)?n:gu(n,t)?[n]:Eu(Gu(n))}var Ut=xx;var vx=1/0;function bx(n){if(typeof n=="string"||Vo(n))return n;var t=n+"";return t=="0"&&1/n==-vx?"-0":t}var Yr=bx;function Sx(n,t){t=Ut(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Yr(t[e++])];return e&&e==r?n:void 0}var hs=Sx;function wx(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Zo=wx;var Ru=gt?gt.isConcatSpreadable:void 0;function _x(n){return Fe(n)||Mr(n)||!!(Ru&&n&&n[Ru])}var Fu=_x;function Vu(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Fu),o||(o=[]);++i<s;){var a=n[i];t>0&&e(a)?t>1?Vu(a,t-1,e,r,o):Zo(o,a):r||(o[o.length]=a)}return o}var zu=Vu;function Tx(n){var t=n==null?0:n.length;return t?zu(n,1):[]}var Uu=Tx;function Ax(n){return us(ps(n,void 0,Uu),n+"")}var gs=Ax;var Cx=ms(Object.getPrototypeOf,Object),Jo=Cx;var Nx="[object Object]",Px=Function.prototype,Ix=Object.prototype,ju=Px.toString,Lx=Ix.hasOwnProperty,Ox=ju.call(Object);function Mx(n){if(!dt(n)||Bt(n)!=Nx)return!1;var t=Jo(n);if(t===null)return!0;var e=Lx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&ju.call(e)==Ox}var ys=Mx;function Dx(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 ku=Dx;function Bx(){this.__data__=new qr,this.size=0}var Hu=Bx;function Ex(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Wu=Ex;function Gx(n){return this.__data__.get(n)}var qu=Gx;function Rx(n){return this.__data__.has(n)}var $u=Rx;var Fx=200;function Vx(n,t){var e=this.__data__;if(e instanceof qr){var r=e.__data__;if(!$r||r.length<Fx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Yn(r)}return e.set(n,t),this.size=e.size,this}var Xu=Vx;function en(n){var t=this.__data__=new qr(n);this.size=t.size}en.prototype.clear=Hu;en.prototype.delete=Wu;en.prototype.get=qu;en.prototype.has=$u;en.prototype.set=Xu;var xs=en;function zx(n,t){return n&&zt(t,Xo(t),n)}var Yu=zx;function Ux(n,t){return n&&zt(t,sr(t),n)}var Ku=Ux;var ep=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Qu=ep&&typeof module=="object"&&module&&!module.nodeType&&module,jx=Qu&&Qu.exports===ep,Zu=jx?Xe.Buffer:void 0,Ju=Zu?Zu.allocUnsafe:void 0;function kx(n,t){if(t)return n.slice();var e=n.length,r=Ju?Ju(e):new n.constructor(e);return n.copy(r),r}var vs=kx;function Hx(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 tp=Hx;function Wx(){return[]}var bs=Wx;var qx=Object.prototype,$x=qx.propertyIsEnumerable,rp=Object.getOwnPropertySymbols,Xx=rp?function(n){return n==null?[]:(n=Object(n),tp(rp(n),function(t){return $x.call(n,t)}))}:bs,tn=Xx;function Yx(n,t){return zt(n,tn(n),t)}var op=Yx;var Kx=Object.getOwnPropertySymbols,Qx=Kx?function(n){for(var t=[];n;)Zo(t,tn(n)),n=Jo(n);return t}:bs,Ss=Qx;function Zx(n,t){return zt(n,Ss(n),t)}var np=Zx;function Jx(n,t,e){var r=t(n);return Fe(n)?r:Zo(r,e(n))}var ws=Jx;function e0(n){return ws(n,Xo,tn)}var ip=e0;function t0(n){return ws(n,sr,Ss)}var _s=t0;var r0=_t(Xe,"DataView"),Ts=r0;var o0=_t(Xe,"Promise"),As=o0;var n0=_t(Xe,"Set"),Cs=n0;var sp="[object Map]",i0="[object Object]",ap="[object Promise]",lp="[object Set]",cp="[object WeakMap]",up="[object DataView]",s0=Or(Ts),a0=Or($r),l0=Or(As),c0=Or(Cs),u0=Or(ls),go=Bt;(Ts&&go(new Ts(new ArrayBuffer(1)))!=up||$r&&go(new $r)!=sp||As&&go(As.resolve())!=ap||Cs&&go(new Cs)!=lp||ls&&go(new ls)!=cp)&&(go=function(n){var t=Bt(n),e=t==i0?n.constructor:void 0,r=e?Or(e):"";if(r)switch(r){case s0:return up;case a0:return sp;case l0:return ap;case c0:return lp;case u0:return cp}return t});var rn=go;var p0=Object.prototype,d0=p0.hasOwnProperty;function f0(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&d0.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var pp=f0;var m0=Xe.Uint8Array,Ya=m0;function h0(n){var t=new n.constructor(n.byteLength);return new Ya(t).set(new Ya(n)),t}var on=h0;function g0(n,t){var e=t?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var dp=g0;var y0=/\w*$/;function x0(n){var t=new n.constructor(n.source,y0.exec(n));return t.lastIndex=n.lastIndex,t}var fp=x0;var mp=gt?gt.prototype:void 0,hp=mp?mp.valueOf:void 0;function v0(n){return hp?Object(hp.call(n)):{}}var gp=v0;function b0(n,t){var e=t?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Ns=b0;var S0="[object Boolean]",w0="[object Date]",_0="[object Map]",T0="[object Number]",A0="[object RegExp]",C0="[object Set]",N0="[object String]",P0="[object Symbol]",I0="[object ArrayBuffer]",L0="[object DataView]",O0="[object Float32Array]",M0="[object Float64Array]",D0="[object Int8Array]",B0="[object Int16Array]",E0="[object Int32Array]",G0="[object Uint8Array]",R0="[object Uint8ClampedArray]",F0="[object Uint16Array]",V0="[object Uint32Array]";function z0(n,t,e){var r=n.constructor;switch(t){case I0:return on(n);case S0:case w0:return new r(+n);case L0:return dp(n,e);case O0:case M0:case D0:case B0:case E0:case G0:case R0:case F0:case V0:return Ns(n,e);case _0:return new r;case T0:case N0:return new r(n);case A0:return fp(n);case C0:return new r;case P0:return gp(n)}}var yp=z0;function U0(n){return typeof n.constructor=="function"&&!Wo(n)?$c(Jo(n)):{}}var Ps=U0;var j0="[object Map]";function k0(n){return dt(n)&&rn(n)==j0}var xp=k0;var vp=Dr&&Dr.isMap,H0=vp?$o(vp):xp,bp=H0;var W0="[object Set]";function q0(n){return dt(n)&&rn(n)==W0}var Sp=q0;var wp=Dr&&Dr.isSet,$0=wp?$o(wp):Sp,_p=$0;var X0=1,Y0=2,K0=4,Tp="[object Arguments]",Q0="[object Array]",Z0="[object Boolean]",J0="[object Date]",ev="[object Error]",Ap="[object Function]",tv="[object GeneratorFunction]",rv="[object Map]",ov="[object Number]",Cp="[object Object]",nv="[object RegExp]",iv="[object Set]",sv="[object String]",av="[object Symbol]",lv="[object WeakMap]",cv="[object ArrayBuffer]",uv="[object DataView]",pv="[object Float32Array]",dv="[object Float64Array]",fv="[object Int8Array]",mv="[object Int16Array]",hv="[object Int32Array]",gv="[object Uint8Array]",yv="[object Uint8ClampedArray]",xv="[object Uint16Array]",vv="[object Uint32Array]",Le={};Le[Tp]=Le[Q0]=Le[cv]=Le[uv]=Le[Z0]=Le[J0]=Le[pv]=Le[dv]=Le[fv]=Le[mv]=Le[hv]=Le[rv]=Le[ov]=Le[Cp]=Le[nv]=Le[iv]=Le[sv]=Le[av]=Le[gv]=Le[yv]=Le[xv]=Le[vv]=!0;Le[ev]=Le[Ap]=Le[lv]=!1;function Is(n,t,e,r,o,i){var s,a=t&X0,c=t&Y0,p=t&K0;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!Ze(n))return n;var l=Fe(n);if(l){if(s=pp(n),!a)return cs(n,s)}else{var u=rn(n),d=u==Ap||u==tv;if(qo(n))return vs(n,a);if(u==Cp||u==Tp||d&&!o){if(s=c||d?{}:Ps(n),!a)return c?np(n,Ku(s,n)):op(n,Yu(s,n))}else{if(!Le[u])return o?n:{};s=yp(n,u,a)}}i||(i=new xs);var f=i.get(n);if(f)return f;i.set(n,s),_p(n)?n.forEach(function(g){s.add(Is(g,t,e,g,n,i))}):bp(n)&&n.forEach(function(g,x){s.set(x,Is(g,t,e,x,n,i))});var m=p?c?_s:ip:c?sr:Xo,h=l?void 0:m(n);return Zc(h||n,function(g,x){h&&(x=g,g=n[x]),ko(s,x,Is(g,t,e,x,n,i))}),s}var Ls=Is;var bv=1,Sv=4;function wv(n){return Ls(n,bv|Sv)}var Kn=wv;function _v(n,t){return n!=null&&t in Object(n)}var Np=_v;function Tv(n,t,e){t=Ut(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Yr(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&&Ho(o)&&jr(s,o)&&(Fe(n)||Mr(n)))}var Pp=Tv;function Av(n,t){return n!=null&&Pp(n,t,Np)}var Ip=Av;function Cv(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 Lp=Cv;var Nv=Lp(),Op=Nv;function Pv(n,t,e){(e!==void 0&&!kr(n[t],e)||e===void 0&&!(t in n))&&jo(n,t,e)}var Qn=Pv;function Iv(n){return dt(n)&&Hr(n)}var Mp=Iv;function Lv(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Zn=Lv;function Ov(n){return zt(n,sr(n))}var Dp=Ov;function Mv(n,t,e,r,o,i,s){var a=Zn(n,e),c=Zn(t,e),p=s.get(c);if(p){Qn(n,e,p);return}var l=i?i(a,c,e+"",n,t,s):void 0,u=l===void 0;if(u){var d=Fe(c),f=!d&&qo(c),m=!d&&!f&&ds(c);l=c,d||f||m?Fe(a)?l=a:Mp(a)?l=cs(a):f?(u=!1,l=vs(c,!0)):m?(u=!1,l=Ns(c,!0)):l=[]:ys(c)||Mr(c)?(l=a,Mr(a)?l=Dp(a):(!Ze(a)||zo(a))&&(l=Ps(c))):u=!1}u&&(s.set(c,l),o(l,c,r,i,s),s.delete(c)),Qn(n,e,l)}var Bp=Mv;function Ep(n,t,e,r,o){n!==t&&Op(t,function(i,s){if(o||(o=new xs),Ze(i))Bp(n,t,s,e,Ep,r,o);else{var a=r?r(Zn(n,s),i,s+"",n,t,o):void 0;a===void 0&&(a=i),Qn(n,s,a)}},sr)}var Gp=Ep;function Dv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Rp=Dv;function Bv(n,t){return t.length<2?n:hs(n,ku(t,0,-1))}var Fp=Bv;var Ev=ru(function(n,t,e){Gp(n,t,e)}),yo=Ev;function Gv(n,t){return t=Ut(t,n),n=Fp(n,t),n==null||delete n[Yr(Rp(t))]}var Vp=Gv;function Rv(n){return ys(n)?void 0:n}var zp=Rv;var Fv=1,Vv=2,zv=4,Uv=gs(function(n,t){var e={};if(n==null)return e;var r=!1;t=is(t,function(i){return i=Ut(i,n),r||(r=i.length>1),i}),zt(n,_s(n),e),r&&(e=Ls(e,Fv|Vv|zv,zp));for(var o=t.length;o--;)Vp(e,t[o]);return e}),nn=Uv;function jv(n,t,e,r){if(!Ze(n))return n;t=Ut(t,n);for(var o=-1,i=t.length,s=i-1,a=n;a!=null&&++o<i;){var c=Yr(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:jr(t[o+1])?[]:{})}ko(a,c,p),a=a[c]}return n}var Up=jv;function kv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],a=hs(n,s);e(a,s)&&Up(i,Ut(s,n),a)}return i}var jp=kv;function Hv(n,t){return jp(n,t,function(e,r){return Ip(n,r)})}var kp=Hv;var Wv=gs(function(n,t){return n==null?{}:kp(n,t)}),Ka=Wv;var sn;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(sn||(sn={}));var xo;(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})(xo||(xo={}));var Hp;(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})(Hp||(Hp={}));var an;(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})(an||(an={}));var Wp;(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})(Wp||(Wp={}));var Kr;(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})(Kr||(Kr={}));var Tt;(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})(Tt||(Tt={}));var Et;(a=>{a.white={...Tt.white,a:1},a.transparent={...Tt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}a.from0to1=e;function r(c,p){return{...Tt.fromHex(c),a:p}}a.fromHexAndA=r;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}a.toRgb255a1=o;function i(c,p){return Tt.equals(c,p)&&c.a===p.a}a.equals=i;function s(c,p,l){return{r:c.r+(p.r-c.r)*l,g:c.g+(p.g-c.g)*l,b:c.b+(p.b-c.b)*l,a:c.a+(p.a-c.a)*l}}a.lerp=s})(Et||(Et={}));var Os;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Os||(Os={}));var qp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(qp||(qp={}));var $p;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})($p||($p={}));var Ms;(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})(Ms||(Ms={}));var Ye=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,Ye.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,Ye.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,Ye.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Jn(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"&&Jn(r)}return Object.freeze(n)}function Xp(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 Ds=class extends Error{};function ar(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 vo(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 Yp(){return typeof process<"u"}function Kp(n,t){for(let e of n)t(e.id,e.data),Kp(e.children,t)}function Qp(n,t){t(n.id,n.data);for(let e of n.children)Qp(e,t)}var At=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,At.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Jn(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&&Qp(o,r)}}traverse(e){Kp(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,At.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,f)=>d.fi-f.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 f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new Ds("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let a=s,c=this.childrenArray(s),p=c.findIndex(f=>f.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((f,m)=>f.fi-m.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)=>Xp(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 ar(0,o,o);{let s=i[0].fi;return ar(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 ar(c,c+o,o)}else return ar(s.fi,a.fi,o)}}};var Bs;(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})(Bs||(Bs={}));var De=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,De.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Jn(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,De.prototype);let r=e;return Yp()||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 ar(0,r,r);{let i=o[0].fi;return ar(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 ar(a,a+r,r)}else return ar(i.fi,s.fi,r)}}};var Er=class{unusedFun(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;)e.push(r),r=r===void 0?void 0:r[t.path[o]],o+=1;r={...r};for(let[c,p]of Object.entries(t.props)){let l=r[c];i[c]=l,p===void 0?delete r[c]:r[c]=p}for(;o>0;)Object.keys(r).length===0?(r={...e[o-1]},delete r[t.path[o-1]]):r={...e[o-1],[t.path[o-1]]:r},o-=1;let s=Object.setPrototypeOf(r,Er.prototype),a={...t,props:i};return{data:s,actual:t,reverse:a}}},Zp;(e=>{function n(r,o){return ei(r,o)??r}e.apply=n;function t(r,o){if(o.type===0){let i=bo.zoom(r,o.path);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||vo(i))return;if(i&&typeof i=="object"){let s={...o.props};for(let a of Object.keys(i))delete s[a];return{...o,props:s}}else return}else if(o.type===1||o.type===4||o.type===7){let i=bo.zoom(r,[...o.path,o.id]);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||vo(i))return;if(i&&typeof i=="object"){let s={...o.data,...i};return{...o,data:s}}else return}else return o}e.filterOp=t})(Zp||(Zp={}));function Jp(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=ei(o.data,t[i]);e=e||s!==void 0,s===void 0&&(s=o.data);let a=Jp(o.children,t);return a!==void 0?e=!0:a=o.children,{...o,id:i,data:s,children:a}});if(e)return r}function qv(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=ei(o.data,t[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function ei(n,t){if(t!==void 0)if(n instanceof At){let e=Jp(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof De)return qv(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let s=ei(o,t[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let s=ei(i,t[o]);r=r||s!==void 0,s===void 0&&(s=i),e[o]=s}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}else return t??n}}var ed=Symbol(),ti=Symbol(),So=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof Es);){let s=o._path,a=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,a)}o.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[ti];r&&r(),delete this._children[t]}}}},Za=class extends So{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,Bs.runOp(this._current,t),t.path)}},Ja=class extends So{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,Ye.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},td={get(n,t){if(t===ti)return()=>{n._parent=null};if(t===ed)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=Gs(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={...td,set(n,t,e){let r={type:0,props:{[t]:Xt(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={...td,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}},ln=class extends So{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ti]=()=>{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=Gs(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)}},el=class extends So{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r,this[ti]=()=>{this._parent=null}}feedOp(t){let{path:e,...r}=t;this.reportOp(r,this._current.runOp(t),e)}},cn=class extends So{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ti]=()=>{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=Gs(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 Qa(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&bo.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var Es=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){Qa(this.ts,e,t),Qa(this.actual,r,t),Qa(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Gs(n,t,e){return e instanceof At?new ln(n,t,e):e instanceof De?new cn(n,t,e):e instanceof Er?new el(n,t,e):e instanceof Ye?new Proxy(new Ja(n,t,e),Xv):e!==null&&typeof e=="object"?vo(e)?e:new Proxy(new Za(n,t,e),$v):e}function tl(n){let t=new Es(n);return[Gs(t,"",n),t]}function rl(n,t){let[e,r]=tl(n);return t(e),r.result()}function Xt(n){return n instanceof ln||n instanceof cn?n._current:n!==null&&typeof n=="object"?n[ed]:n}var bo;(o=>{function n(i,s){if(s.length===i.length)for(var a=0;a<i.length;){if(i[a]!==s[a])return!1;a+=1}else return!1;return!0}o.equal=n;function t(i,s,a){let c=r(a,i);if(c!==void 0&&typeof c=="object"&&c!==null){let p={...s};return Object.keys(c).forEach(l=>{delete p[l]}),p}else return s}o.removeOverridden=t;function e(i,s){if((i instanceof At||i instanceof ln)&&typeof s=="string")return i.data(s);if((i instanceof De||i instanceof cn)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object")return i[s]}o.zoomOnce=e;function r(i,s,a=0){for(;a<s.length&&i!==void 0;)i=e(i,s[a]),a+=1;return i}o.zoom=r})(bo||(bo={}));var Rs=class{},ri=class extends Rs{constructor(e){super();this.id=e}},oi=class extends Rs{constructor(e){super();this.data=e}};var nl;try{nl=new TextDecoder}catch{}var te,Zr,_=0;var cd=[],il=cd,sl=0,Ct={},we,Qr,jt=0,lr=0,Gt,Gr,yt=[],Ne,rd={useRecords:!1,mapsAsObjects:!0},ni=class{},ll=new ni;ll.name="MessagePack 0xC1";var un=!1,cr=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 md(()=>(Vs(),this?this.unpack(t,e):cr.prototype.unpack.call(rd,t,e)));Zr=e>-1?e:t.length,_=0,sl=0,lr=0,Qr=null,il=cd,Gt=null,te=t;try{Ne=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 cr){if(Ct=this,this.structures)return we=this.structures,Fs();(!we||we.length>0)&&(we=[])}else Ct=rd,(!we||we.length>0)&&(we=[]);return Fs()}unpackMultiple(t,e){let r,o=0;try{un=!0;let i=t.length,s=this?this.unpack(t,i):js.unpack(t,i);if(e){for(e(s);_<i;)if(o=_,e(Fs())===!1)return}else{for(r=[s];_<i;)o=_,r.push(Fs());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{un=!1,Vs()}}_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(!Ct.trusted&&!un){let t=we.sharedLength||0;t<we.length&&(we.length=t)}let n=Ve();if(_==Zr)we.restoreStructures&&od(),we=null,te=null,Gr&&(Gr=null);else if(_>Zr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!un)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw we.restoreStructures&&od(),Vs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function od(){for(let n in we.restoreStructures)we[n]=we.restoreStructures[n];we.restoreStructures=null}function Ve(){let n=te[_++];if(n<160)if(n<128){if(n<64)return n;{let t=we[n&63]||Ct.getStructures&&ud()[n&63];return t?(t.read||(t.read=cl(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,Ct.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[dd()]=Ve();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Ve(),Ve());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Ve();return t}else if(n<192){let t=n-160;if(lr>=_)return Qr.slice(_-jt,(_+=t)-jt);if(lr==0&&Zr<140){let e=t<16?ul(t):pd(t);if(e!=null)return e}return al(t)}else{let t;switch(n){case 192:return null;case 193:return Gt?(t=Ve(),t>0?Gt[1].slice(Gt.position1,Gt.position1+=t):Gt[0].slice(Gt.position0,Gt.position0-=t)):ll;case 194:return!1;case 195:return!0;case 196:return ol(te[_++]);case 197:return t=Ne.getUint16(_),_+=2,ol(t);case 198:return t=Ne.getUint32(_),_+=4,ol(t);case 199:return wo(te[_++]);case 200:return t=Ne.getUint16(_),_+=2,wo(t);case 201:return t=Ne.getUint32(_),_+=4,wo(t);case 202:if(t=Ne.getFloat32(_),Ct.useFloat32>2){let e=Us[(te[_]&127)<<1|te[_+1]>>7];return _+=4,(e*t+(t>0?.5:-.5)>>0)/e}return _+=4,t;case 203:return t=Ne.getFloat64(_),_+=8,t;case 204:return te[_++];case 205:return t=Ne.getUint16(_),_+=2,t;case 206:return t=Ne.getUint32(_),_+=4,t;case 207:return Ct.int64AsNumber?(t=Ne.getUint32(_)*4294967296,t+=Ne.getUint32(_+4)):t=Ne.getBigUint64(_),_+=8,t;case 208:return Ne.getInt8(_++);case 209:return t=Ne.getInt16(_),_+=2,t;case 210:return t=Ne.getInt32(_),_+=4,t;case 211:return Ct.int64AsNumber?(t=Ne.getInt32(_)*4294967296,t+=Ne.getUint32(_+4)):t=Ne.getBigInt64(_),_+=8,t;case 212:if(t=te[_++],t==114)return ld(te[_++]&63);{let e=yt[t];if(e)return e.read?(_++,e.read(Ve())):e.noBuffer?(_++,e()):e(te.subarray(_,++_));throw new Error("Unknown extension "+t)}case 213:return t=te[_],t==114?(_++,ld(te[_++]&63,te[_++])):wo(2);case 214:return wo(4);case 215:return wo(8);case 216:return wo(16);case 217:return t=te[_++],lr>=_?Qr.slice(_-jt,(_+=t)-jt):Kv(t);case 218:return t=Ne.getUint16(_),_+=2,lr>=_?Qr.slice(_-jt,(_+=t)-jt):Qv(t);case 219:return t=Ne.getUint32(_),_+=4,lr>=_?Qr.slice(_-jt,(_+=t)-jt):Zv(t);case 220:return t=Ne.getUint16(_),_+=2,id(t);case 221:return t=Ne.getUint32(_),_+=4,id(t);case 222:return t=Ne.getUint16(_),_+=2,sd(t);case 223:return t=Ne.getUint32(_),_+=4,sd(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 cl(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(",")+"}}")(Ve);return n.highByte===0&&(n.read=nd(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Ve()}return r}return e.count=0,n.highByte===0?nd(t,e):e}var nd=(n,t)=>function(){let e=te[_++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=we[r]||ud()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=cl(o,n)),o.read()};function ud(){let n=md(()=>(te=null,Ct.getStructures()));return we=Ct._mergeStructures(n,we)}var al=zs,Kv=zs,Qv=zs,Zv=zs;function zs(n){let t;if(n<16&&(t=ul(n)))return t;if(n>64&&nl)return nl.decode(te.subarray(_,_+=n));let e=_+n,r=[];for(t="";_<e;){let o=te[_++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=te[_++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=te[_++]&63,s=te[_++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=te[_++]&63,s=te[_++]&63,a=te[_++]&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+=nt.apply(String,r),r.length=0)}return r.length>0&&(t+=nt.apply(String,r)),t}function id(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Ve();return t}function sd(n){if(Ct.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[dd()]=Ve();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Ve(),Ve());return t}}var nt=String.fromCharCode;function pd(n){let t=_,e=new Array(n);for(let r=0;r<n;r++){let o=te[_++];if((o&128)>0){_=t;return}e[r]=o}return nt.apply(String,e)}function ul(n){if(n<4)if(n<2){if(n===0)return"";{let t=te[_++];if((t&128)>1){_-=1;return}return nt(t)}}else{let t=te[_++],e=te[_++];if((t&128)>0||(e&128)>0){_-=2;return}if(n<3)return nt(t,e);let r=te[_++];if((r&128)>0){_-=3;return}return nt(t,e,r)}else{let t=te[_++],e=te[_++],r=te[_++],o=te[_++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){_-=4;return}if(n<6){if(n===4)return nt(t,e,r,o);{let i=te[_++];if((i&128)>0){_-=5;return}return nt(t,e,r,o,i)}}else if(n<8){let i=te[_++],s=te[_++];if((i&128)>0||(s&128)>0){_-=6;return}if(n<7)return nt(t,e,r,o,i,s);let a=te[_++];if((a&128)>0){_-=7;return}return nt(t,e,r,o,i,s,a)}else{let i=te[_++],s=te[_++],a=te[_++],c=te[_++];if((i&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){_-=8;return}if(n<10){if(n===8)return nt(t,e,r,o,i,s,a,c);{let p=te[_++];if((p&128)>0){_-=9;return}return nt(t,e,r,o,i,s,a,c,p)}}else if(n<12){let p=te[_++],l=te[_++];if((p&128)>0||(l&128)>0){_-=10;return}if(n<11)return nt(t,e,r,o,i,s,a,c,p,l);let u=te[_++];if((u&128)>0){_-=11;return}return nt(t,e,r,o,i,s,a,c,p,l,u)}else{let p=te[_++],l=te[_++],u=te[_++],d=te[_++];if((p&128)>0||(l&128)>0||(u&128)>0||(d&128)>0){_-=12;return}if(n<14){if(n===12)return nt(t,e,r,o,i,s,a,c,p,l,u,d);{let f=te[_++];if((f&128)>0){_-=13;return}return nt(t,e,r,o,i,s,a,c,p,l,u,d,f)}}else{let f=te[_++],m=te[_++];if((f&128)>0||(m&128)>0){_-=14;return}if(n<15)return nt(t,e,r,o,i,s,a,c,p,l,u,d,f,m);let h=te[_++];if((h&128)>0){_-=15;return}return nt(t,e,r,o,i,s,a,c,p,l,u,d,f,m,h)}}}}}function ol(n){return Ct.copyBuffers?Uint8Array.prototype.slice.call(te,_,_+=n):te.subarray(_,_+=n)}function wo(n){let t=te[_++];if(yt[t])return yt[t](te.subarray(_,_+=n));throw new Error("Unknown extension type "+t)}var ad=new Array(4096);function dd(){let n=te[_++];if(n>=160&&n<192){if(n=n-160,lr>=_)return Qr.slice(_-jt,(_+=n)-jt);if(!(lr==0&&Zr<180))return al(n)}else return _--,Ve();let t=(n<<5^(n>1?Ne.getUint16(_):n>0?te[_]:0))&4095,e=ad[t],r=_,o=_+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ne.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 _=r,e.string;o-=3,r=_}for(e=[],ad[t]=e,e.bytes=n;r<o;)i=Ne.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=te[r++],e.push(i);let a=n<16?ul(n):pd(n);return a!=null?e.string=a:e.string=al(n)}var ld=(n,t)=>{var e=Ve();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=we[n];return o&&o.isShared&&((we.restoreStructures||(we.restoreStructures=[]))[n]=o),we[n]=e,e.read=cl(e,r),e.read()},fd=typeof self=="object"?self:global;yt[0]=()=>{};yt[0].noBuffer=!0;yt[101]=()=>{let n=Ve();return(fd[n[0]]||Error)(n[1])};yt[105]=n=>{let t=Ne.getUint32(_-4);Gr||(Gr=new Map);let e=te[_],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Gr.set(t,o);let i=Ve();return o.used?Object.assign(r,i):(o.target=i,i)};yt[112]=n=>{let t=Ne.getUint32(_-4),e=Gr.get(t);return e.used=!0,e.target};yt[115]=()=>new Set(Ve());var pl=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");yt[116]=n=>{let t=n[0],e=pl[t];if(!e)throw new Error("Could not find typed array for code "+t);return new fd[e](Uint8Array.prototype.slice.call(n,1).buffer)};yt[120]=()=>{let n=Ve();return new RegExp(n[0],n[1])};yt[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=_;_+=t-4,Gt=[Ve(),Ve()],Gt.position0=0,Gt.position1=0;let r=_;_=e;try{return Ve()}finally{_=r}};yt[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 md(n){let t=Zr,e=_,r=sl,o=jt,i=lr,s=Qr,a=il,c=Gr,p=Gt,l=new Uint8Array(te.slice(0,Zr)),u=we,d=we.slice(0,we.length),f=Ct,m=un,h=n();return Zr=t,_=e,sl=r,jt=o,lr=i,Qr=s,il=a,Gr=c,Gt=p,te=l,un=m,we=u,we.splice(0,we.length,...d),Ct=f,Ne=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function Vs(){te=null,Gr=null,we=null}function hd(n){n.unpack?yt[n.type]=n.unpack:yt[n.type]=n}var Us=new Array(147);for(let n=0;n<256;n++)Us[n]=+("1e"+Math.floor(45.15-n*.30103));var js=new cr({useRecords:!1}),Jv=js.unpack,eb=js.unpackMultiple,tb=js.unpack,ks={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},rb=new Float32Array(1),hL=new Uint8Array(rb.buffer,0,4);var Hs;try{Hs=new TextEncoder}catch{}var Ws,fl,qs=typeof Buffer<"u",dl=qs?Buffer.allocUnsafeSlow:Uint8Array,vd=qs?Buffer:Uint8Array,gd=qs?4294967296:2144337920,R,ke,P=0,ur,pr=null,ob=/[\u0080-\uFFFF]/,ii=Symbol("record-id"),_o=class extends cr{constructor(t){super(t),this.offset=0;let e,r,o,i,s,a,c=0,p=vd.prototype.utf8Write?function(y,L,T){return R.utf8Write(y,L,T)}:Hs&&Hs.encodeInto?function(y,L){return Hs.encodeInto(y,R.subarray(L)).written}:!1,l=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,g=f+64,x=f+m+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,S=0;this.pack=this.encode=function(y,L){if(R||(R=new dl(8192),ke=new DataView(R.buffer,0,8192),P=0),ur=R.length-10,ur-P<2048?(R=new dl(R.length),ke=new DataView(R.buffer,0,R.length),ur=R.length-10,P=0):P=P+7&2147483640,r=P,a=l.structuredClone?new Map:null,l.bundleStrings?(pr=["",""],R[P++]=214,R[P++]=98,pr.position=P-r,P+=4):pr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let T=o.sharedLength||0;if(T>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<T;I++){let C=o[I];if(!C)continue;let N,k=o.transitions;for(let W=0,ne=C.length;W<ne;W++){let ue=C[W];N=k[ue],N||(N=k[ue]=Object.create(null)),k=N}k[ii]=I+64}c=T}u||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(b(y),pr){ke.setUint32(pr.position+r,P-pr.position-r);let T=pr;pr=null,b(T[0]),b(T[1])}if(l.offset=P,a&&a.idsToInsert){P+=a.idsToInsert.length*6,P>ur&&w(P),l.offset=P;let T=ib(R.subarray(r,P),a.idsToInsert);return a=null,T}return L&Sd?(R.start=r,R.end=P,R):R.subarray(r,P)}finally{if(o){if(S<10&&S++,A>1e4)o.transitions=null,S=0,A=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let T=0,I=v.length;T<I;T++)v[T][ii]=0;v=[]}if(i&&l.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let I=R.subarray(r,P);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(y)):(c=T,I)}}L&db&&(P=r)}};let b=y=>{P>ur&&(R=w(P));var L=typeof y,T;if(L==="string"){let I=y.length;if(pr&&I>=8&&I<4096){let k=ob.test(y);pr[k?0:1]+=y,R[P++]=193,b(k?-I:I);return}let C;I<32?C=1:I<256?C=2:I<65536?C=3:C=5;let N=I*3;if(P+N>ur&&(R=w(P+N)),I<64||!p){let k,W,ne,ue=P+C;for(k=0;k<I;k++)W=y.charCodeAt(k),W<128?R[ue++]=W:W<2048?(R[ue++]=W>>6|192,R[ue++]=W&63|128):(W&64512)===55296&&((ne=y.charCodeAt(k+1))&64512)===56320?(W=65536+((W&1023)<<10)+(ne&1023),k++,R[ue++]=W>>18|240,R[ue++]=W>>12&63|128,R[ue++]=W>>6&63|128,R[ue++]=W&63|128):(R[ue++]=W>>12|224,R[ue++]=W>>6&63|128,R[ue++]=W&63|128);T=ue-P-C}else T=p(y,P+C,N);T<32?R[P++]=160|T:T<256?(C<2&&R.copyWithin(P+2,P+1,P+1+T),R[P++]=217,R[P++]=T):T<65536?(C<3&&R.copyWithin(P+3,P+2,P+2+T),R[P++]=218,R[P++]=T>>8,R[P++]=T&255):(C<5&&R.copyWithin(P+5,P+3,P+3+T),R[P++]=219,ke.setUint32(P,T),P+=4),P+=T}else if(L==="number")if(y>>>0===y)y<64?R[P++]=y:y<256?(R[P++]=204,R[P++]=y):y<65536?(R[P++]=205,R[P++]=y>>8,R[P++]=y&255):(R[P++]=206,ke.setUint32(P,y),P+=4);else if(y>>0===y)y>=-32?R[P++]=256+y:y>=-128?(R[P++]=208,R[P++]=y+256):y>=-32768?(R[P++]=209,ke.setInt16(P,y),P+=2):(R[P++]=210,ke.setInt32(P,y),P+=4);else{let I;if((I=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[P++]=202,ke.setFloat32(P,y);let C;if(I<4||(C=y*Us[(R[P]&127)<<1|R[P+1]>>7])>>0===C){P+=4;return}else P--}R[P++]=203,ke.setFloat64(P,y),P+=8}else if(L==="object")if(!y)R[P++]=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[P++]=214,R[P++]=112,ke.setUint32(P,C.id),P+=4;return}else a.set(y,{offset:P-r})}let I=y.constructor;if(I===Object)D(y,!0);else if(I===Array){T=y.length,T<16?R[P++]=144|T:T<65536?(R[P++]=220,R[P++]=T>>8,R[P++]=T&255):(R[P++]=221,ke.setUint32(P,T),P+=4);for(let C=0;C<T;C++)b(y[C])}else if(I===Map){T=y.size,T<16?R[P++]=128|T:T<65536?(R[P++]=222,R[P++]=T>>8,R[P++]=T&255):(R[P++]=223,ke.setUint32(P,T),P+=4);for(let[C,N]of y)b(C),b(N)}else{for(let C=0,N=Ws.length;C<N;C++){let k=fl[C];if(y instanceof k){let W=Ws[C];if(W.write){W.type&&(R[P++]=212,R[P++]=W.type,R[P++]=0),b(W.write.call(this,y));return}let ne=R,ue=ke,se=P;R=null;let K;try{K=W.pack.call(this,y,U=>(R=ne,ne=null,P+=U,P>ur&&w(P),{target:R,targetView:ke,position:P-U}),b)}finally{ne&&(R=ne,ke=ue,P=se,ur=R.length-10)}K&&(K.length+P>ur&&w(K.length+P),P=nb(K,R,P,W.type));return}}D(y,!y.hasOwnProperty)}}else if(L==="boolean")R[P++]=y?195:194;else if(L==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[P++]=211,ke.setBigInt64(P,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[P++]=207,ke.setBigUint64(P,y);else if(this.largeBigIntToFloat)R[P++]=203,ke.setFloat64(P,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");P+=8}else if(L==="undefined")this.encodeUndefinedAsNil?R[P++]=192:(R[P++]=212,R[P++]=0,R[P++]=0);else if(L==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+L)},D=this.useRecords===!1?this.variableMapSize?y=>{let L=Object.keys(y),T=L.length;T<16?R[P++]=128|T:T<65536?(R[P++]=222,R[P++]=T>>8,R[P++]=T&255):(R[P++]=223,ke.setUint32(P,T),P+=4);let I;for(let C=0;C<T;C++)b(I=L[C]),b(y[I])}:(y,L)=>{R[P++]=222;let T=P-r;P+=2;let I=0;for(let C in y)(L||y.hasOwnProperty(C))&&(b(C),b(y[C]),I++);R[T+++r]=I>>8,R[T+r]=I&255}:y=>{let L=Object.keys(y),T,I=s.transitions||(s.transitions=Object.create(null)),C=0;for(let k=0,W=L.length;k<W;k++){let ne=L[k];T=I[ne],T||(T=I[ne]=Object.create(null),C++),I=T}let N=I[ii];if(N)N>=96&&h?(R[P++]=((N-=96)&31)+96,R[P++]=N>>5):R[P++]=N;else{N=s.nextId,N||(N=64),N<g&&this.shouldShareStructure&&!this.shouldShareStructure(L)?(N=s.nextOwnId,N<x||(N=g),s.nextOwnId=N+1):(N>=x&&(N=g),s.nextId=N+1);let k=L.highByte=N>=96&&h?N-96>>5:-1;I[ii]=N,s[N-64]=L,N<g?(L.isShared=!0,s.sharedLength=N-63,i=!0,k>=0?(R[P++]=(N&31)+96,R[P++]=k):R[P++]=N):(k>=0?(R[P++]=213,R[P++]=114,R[P++]=(N&31)+96,R[P++]=k):(R[P++]=212,R[P++]=114,R[P++]=N),C&&(A+=S*C),v.length>=m&&(v.shift()[ii]=0),v.push(I),b(L))}for(let k=0,W=L.length;k<W;k++)b(y[L[k]])},w=y=>{let L;if(y>16777216){if(y-r>gd)throw new Error("Packed buffer would be larger than maximum buffer size");L=Math.min(gd,Math.round(Math.max((y-r)*(y>67108864?1.25:2),4194304)/4096)*4096)}else L=(Math.max(y-r<<2,R.length-1)>>12)+1<<12;let T=new dl(L);return ke=new DataView(T.buffer,0,L),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),P-=r,r=0,ur=T.length-10,R=T}}useBuffer(t){R=t,ke=new DataView(R.buffer,R.byteOffset,R.byteLength),P=0}};fl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ni];Ws=[{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?yd(n,16,t):xd(qs?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==vd&&this.structuredClone?yd(n,pl.indexOf(e.name),t):xd(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function yd(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 xd(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 Jr(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)");fl.unshift(n.Class),Ws.unshift(n)}hd(n)}var bd=new _o({useRecords:!1}),sb=bd.pack,ab=bd.pack;var{NEVER:lb,ALWAYS:cb,DECIMAL_ROUND:ub,DECIMAL_FIT:pb}=ks,Sd=512,db=1024;var wd=new _o({structuredClone:!0});Jr({Class:Ye.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ye.prototype),n}});Jr({Class:De.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,De.prototype),n}});Jr({Class:At.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,At.prototype),n}});Jr({Class:ri.prototype.constructor,type:4,write(n){return n.id},read(n){return new ri(n)}});Jr({Class:oi.prototype.constructor,type:5,write(n){return n.data},read(n){return new oi(n)}});Jr({Class:Er.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Er.prototype),n}});function fb(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 ml(n){if(vo(n))return n;if(Array.isArray(n))return n.map(ml);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=ml(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var $s;(r=>{function n(o){return wd.pack(o)}r.serialize=n;function t(o){return wd.unpack(o)}r.deserialize=t;function e(o){return fb(n(ml(o))).toString()}r.checksum=e})($s||($s={}));var Xs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Xs||(Xs={}));var Ys;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Et.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:Et.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:Et.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ys||(Ys={}));var hl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(hl||(hl={}));var gl;(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})(gl||(gl={}));var Ks;(t=>t.defaultData={...gl.defaultData,...hl.defaultData,cloner:null,booleanExclude:null})(Ks||(Ks={}));var yl=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(yl||{}),xl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(xl||{}),vl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(vl||{}),Qs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Et.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Qs||(Qs={}));var _d=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Td=["wrapping","image"],eo;(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:Tt.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]],steps:[0,1],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:{...Tt.fromHex(6710886),a:1},colorB:{...Tt.fromHex(6710886),a:1},colorC:{...Tt.fromHex(16777215),a:1},colorD:{...Tt.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:Et.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:Et.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Et.fromHexAndA(0,1),contourColor:Et.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}}}})(eo||(eo={}));var Yt;(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(f=>p+=`${f}`):typeof d=="object"?Object.values(d).forEach(f=>{typeof f=="number"?p+=`${f.toFixed(4)}`:p+=`${f}`}):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 De}}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 De;return u.push({fi:0,data:eo.defaultData("light",c),id:p}),u.push({fi:1,data:eo.defaultData("color"),id:l}),{layers:u}}a.defaultTwoLayerData=i;function s(c,p="basic",l="layer1",u="layer2"){let d=eo.defaultData("texture");Object.assign(d.texture,{image:c});let f=new De;return f.push({fi:0,data:d,id:l}),f.push({fi:1,data:eo.defaultData("light",p),id:u}),{layers:f}}a.defaultTwoLayerTextureData=s})(Yt||(Yt={}));var pn;(t=>{function n(){return{points:new De,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(pn||(pn={}));var Zs;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Zs||(Zs={}));var si;(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:pn.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})(si||(si={}));var ai;(o=>{o.identity={...Os.identity,hiddenMatrix:Kr.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:an.isEqual(i.position,s.position)?null:s.position,rotation:an.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:an.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Kr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(ai||(ai={}));var bl;(t=>t.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(bl||(bl={}));var Rr;(t=>t.defaultData={states:new De,events:new De,visible:!0,raycastLock:!1,physics:null,...ai.identity})(Rr||(Rr={}));var Ad;(t=>t.defaultData={type:"Empty",...Rr.defaultData})(Ad||(Ad={}));var Js;(t=>t.defaultData={type:"Mesh",...Rr.defaultData,...Ks.defaultData})(Js||(Js={}));var Cd;(t=>t.defaultData={type:"TextFrame",...Rr.defaultData,...Qs.defaultData})(Cd||(Cd={}));var ea;(t=>t.defaultData={...Rr.defaultData,...ai.identity,...xo.defaultData})(ea||(ea={}));var Nd;(t=>{function n(e){return{...Rr.defaultData,...Ys.defaultData(e)}}t.defaultData=n})(Nd||(Nd={}));var Pd;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Kr.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:bl.defaultData,states:new De,events:new De,...xo.defaultData},r.defaultMeshObject={name:"Rectangle",...Rr.defaultData,...Js.defaultData,geometry:si.defaultData("RectangleGeometry"),material:Yt.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Rr.defaultData,...Js.defaultData,geometry:si.defaultData("BooleanGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")}))(Pd||(Pd={}));var Id;(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=rl(i.material,s=>{if(typeof s!="string")for(let[a,c]of Object.entries(o.material.layers)){let p=s.layers.data(a);p&&yo(p,c)}}).data),i.materials&&o.materials&&(i.materials=rl(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&&yo(u,l)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,ai.merge(i,o)),sn.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(Xs.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=Tt.clone(s.color))}return i}e.patch=t})(Id||(Id={}));var dn;(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,isTouchZoom:!0,orbitTouches:2,panTouches:3})(dn||(dn={}));var ta;(t=>t.defaultData={orbitControls:dn.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:1,stopMode:"manual",duration:5e3},web:{compress:!0,preset:1,preload:!0}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,i=0;return r<5?i=-30:r<10&&(i=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null})(ta||(ta={}));var ra;(e=>{function n(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},os(r,Ye.prototype)}e.defaultColors=n;function t(){return{materials:new Ye,images:new Ye,colors:new Ye,audios:new Ye,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(ra||(ra={}));function Ld(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={...Ka(Xt(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={...Xt(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Sl(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function wl(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach(o=>{typeof o!="string"&&t(o)}):"material"in r&&typeof r.material!="string"&&t(r.material)})}function mb(n){Object.assign(n.scene.publish,{orbitControls:{...dn.defaultData,...Xt(n.scene.publish.orbitControls)}})}function hb(n){Object.assign(n.scene.publish.settings,{video:{...ta.defaultData.settings.video,...Xt(n.scene.publish.settings.video)}})}function gb(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((_d.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,a]of Object.entries(i))(Td.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 yb(n){n.scene.publish.withBackground=!0}function xb(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function vb(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 bb(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 Sb(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 Od(n){n.layers===void 0&&Object.assign(n,Yt.defaultTwoLayerData("lambert"))}function _l(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={...Xt(t),colors:e,steps:r};Object.assign(t,o)}})}function wb(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Md(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&_l(r)}):"material"in e&&typeof e.material!="string"&&_l(e.material)}),Object.values(n.shared.materials).forEach(t=>_l(t))}function _b(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 Tb(n){n.shared.audios=os({},Ye.prototype)}function Ab(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"basic",alpha:1,visible:!0,mode:0},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function Cb(n){Object.entries(Xt(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(Xt(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function Nb(n){n.scene.publish.settings.web.preload=!1}function Dd(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}var Bd=19;function Ed(n){let t=n.schema??0;t!==Bd&&(console.warn("updating from ",t,"to ",Bd),t<1&&(wl(n,Ld),Sl(n,Ld),n.schema=1),t<2&&(mb(n),n.schema=2),t<3&&(gb(n),n.schema=3),t<4&&(yb(n),n.schema=4),t<5&&(xb(n),n.schema=5),t<6&&(vb(n),n.schema=6),t<7&&(bb(n),n.schema=7),t<8&&(Sb(n),n.schema=8),t<9&&(Md(n),n.schema=9),t<10&&(wb(n),n.schema=10),t<11&&(_b(n),n.schema=11),t<12&&(Md(n),n.schema=12),t<13&&(Tb(n),n.schema=13),t<14&&(Ab(n),n.schema=14),t<15&&(Cb(n),n.schema=15),t<16&&(Nb(n),n.schema=16),t<17&&(wl(n,Dd),Sl(n,Dd),n.schema=17),t<18&&(wl(n,Od),Sl(n,Od),n.schema=18),t<19&&(hb(n),n.schema=19))}var oa;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(oa||(oa={}));var Ke=require("three");var Gd=require("three"),Tl=class extends Gd.Object3D{},na=class extends Tl{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 To=class extends Ke.Object3D{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Ke.Vector3),i=.1;this.parameters=Ms.defaultData(o.toArray(),i),yo(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 na(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*Ke.MathUtils.DEG2RAD,i=r.end*Ke.MathUtils.DEG2RAD,s=o-i,a=new Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.DEG2RAD),c;switch(r.axis){case"z":c=new Ke.Vector3(0,0,1);break;case"y":c=new Ke.Vector3(0,1,0);break;default:case"x":c=new Ke.Vector3(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 Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.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 Ke.Vector3(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),yo(this.parameters,e),this.update(),this}};var Ir=require("three");var Ge=require("three");var Rd=require("three"),dr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new Rd.BoxBufferGeometry(30,30,30),t};var ct=require("three");var ft=require("three"),ia=new ft.Ray,Al=new ft.Sphere,Fd=new ft.Matrix4,fr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Al.copy(i.boundingSphere),Al.applyMatrix4(s),e.ray.intersectsSphere(Al)===!1||(Fd.copy(s).invert(),ia.copy(e.ray).applyMatrix4(Fd),i.boundingBox!==null&&ia.intersectsBox(i.boundingBox)===!1))return;let a,c,p,l,u=i.index,d=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let x=Math.max(0,f.start),v=Math.min(u.count,f.start+f.count);for(m=x,h=v;m<h;m+=3)if(c=u.getX(m),p=u.getX(m+1),l=u.getX(m+2),a=g(n,e,ia,d,c,p,l),a){a.faceIndex=Math.floor(m/3),r.push(a);return}}else{let v=i.attributes.position,A=new ft.Vector3,S=new ft.Vector3,b=new ft.Vector3,D=new ft.Vector3,w=2,L=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=L*L,I=Math.max(0,f.start),C=Math.min(v.count,f.start+f.count);for(let N=I,k=C-1;N<k;N+=w){if(A.fromBufferAttribute(v,N),S.fromBufferAttribute(v,N+1),ia.distanceSqToSegment(A,S,D,b)>T)continue;D.applyMatrix4(n.matrixWorld);let ne=e.ray.origin.distanceTo(D);ne<e.near||ne>e.far||r.push({distance:ne,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function g(x,v,A,S,b,D,w){let y=new ft.Vector3,L=new ft.Vector3,T=new ft.Vector3,I=new ft.Vector3,C=new ft.Vector3;if(y.fromBufferAttribute(S,b),L.fromBufferAttribute(S,D),T.fromBufferAttribute(S,w),A.intersectTriangle(y,L,T,!1,I)===null)return null;C.copy(I),C.applyMatrix4(x.matrixWorld);let k=v.ray.origin.distanceTo(C);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:C.clone(),object:x}}};var sa=new ct.Vector3,kt=new ct.Camera,Cl=class extends ct.LineSegments{constructor(e){let r=new ct.BufferGeometry,o=new ct.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},c=new ct.Color(15711266),p=new ct.Color(15711266),l=new ct.Color(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(f,m,h){d(f,h),d(m,h)}function d(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),a[f]===void 0&&(a[f]=[]),a[f].push(i.length/3-1)}r.setAttribute("position",new ct.Float32BufferAttribute(i,3)),r.setAttribute("color",new ct.Float32BufferAttribute(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;kt.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;Kt("n1",r,e,kt,-i,-s,a),Kt("n2",r,e,kt,i,-s,a),Kt("n3",r,e,kt,-i,s,a),Kt("n4",r,e,kt,i,s,a);let c=a;Kt("f1",r,e,kt,-i,-s,c),Kt("f2",r,e,kt,i,-s,c),Kt("f3",r,e,kt,-i,s,c),Kt("f4",r,e,kt,i,s,c);let p=c,l=.5;Kt("u1",r,e,kt,i*.7*l,s*1.1,p),Kt("u2",r,e,kt,-i*.7*l,s*1.1,p),Kt("u3",r,e,kt,0,s*(1.1+.9*l),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Kt(n,t,e,r,o,i,s){sa.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],sa.x,sa.y,sa.z)}}var aa=class extends dr(Cl){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){fr(this.object,this.geometry,e,r,!0)}};var Vd=require("three");var fn=class extends dr(Vd.DirectionalLightHelper){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,fn.geometryHelper,e,r)}};var zd=require("three");var mn=class extends dr(zd.AxesHelper){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){fr(this.object,mn.geometryHelper,e,r)}update(){}};var Ud=require("three");var hn=class extends dr(Ud.PointLightHelper){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,hn.geometryHelper,e,r)}};var ca=require("three");var la=class extends dr(ca.SpotLightHelper){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,la.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=la._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)}}},ci=la;ci._vector=new ca.Vector3;var he=require("three"),ui=1e-12,gn=class{constructor(t){this.position=new he.Vector2;this.startPosition=new he.Vector2;this.uuid=he.MathUtils.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 gn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},yn=class extends gn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new yn(this.parent).copy(this)}},Qt=class extends gn{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new yn(this),new yn(this))}static create(e,r){let o=new Qt(e,new he.Vector2(...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 Qt(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 he.Vector2,r=new he.Vector2){let[o,i]=this.computeTangents();return o&&i&&(jd(o,e),jd(i,r)),[e,r]}computeTangent(e=new he.Vector2){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new he.Vector2){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function jd(n,t=new he.Vector2){let e=n.length();return t.set(-n.y/e,n.x/e)}var Pl=n=>n,xn=new he.Vector2,ua=new he.Vector2,Ib=new he.Vector2,Lb=new he.Vector2,Ob=new he.Vector2,Mb=new he.Vector2,Hd=new he.Vector3,Wd=new he.Vector3;function qd(n){let t=new he.Vector2;t.addVectors(n.v0,xn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new he.Vector2;return e.addVectors(n.v2,ua.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new he.CubicBezierCurve(n.v0,t,e,n.v2)}function pi(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Db(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Bb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Il(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 $d(n,t,e){return kd(n,t)&&kd(t,e)&&Nl(n.position,t.position,e.position)}function Nl(n,t,e){return xn.copy(t).sub(n).cross(ua.copy(e).sub(n))===0}function Xd(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 Yd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Kd(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 Il(t,n,e)>Math.PI&&(l*=-1),pi(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 Ll(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function kd(n,t){return Nl(n.position,n.controls[1].position,t.position)&&Nl(n.position,t.controls[0].position,t.position)}function Qd(n,t,e,r,o=.5){let i=xn.subVectors(t,n).multiplyScalar(o).add(n),s=ua.subVectors(e,t).multiplyScalar(o).add(t),a=Ib.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=Lb.subVectors(s,i).multiplyScalar(o).add(i),l=Ob.subVectors(a,s).multiplyScalar(o).add(s),u=a,d=Mb.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 Zd(n,t,e=12,r=!0){let o=Wd.set(0,0,0),i,s=0,a=[];for(let c=0;c<t.length;c++){let p=Pl(t[c]),l=xn,u=to(p,e);a.push(u);for(let d=0;d<=u;d++)if(p instanceof he.CubicBezierCurve||p instanceof he.QuadraticBezierCurve||p instanceof he.LineCurve){if(p.getPoint(d/u,l),o.set(l.x,l.y,0),i!==void 0&&Bb(i,o))continue;i===void 0&&(i=Hd),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 Jd(n,t,e,r=12,o=!0){let i=Wd.set(0,0,0),s=0,a=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,l=Pl(t[c]),u=xn,d=to(l,r);a.push(d);for(let f=0;f<=d;f++)if(l instanceof he.CubicBezierCurve||l instanceof he.QuadraticBezierCurve||l instanceof he.LineCurve){if(l.getPoint(f/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Hd:(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 Ol(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=to(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=to(s.curveAfter,t)),r.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=to(n[0].roundedCurveCorner,t)*.5),r}function to(n,t=12){return n&&n instanceof he.EllipseCurve?t*2:n&&(n instanceof he.LineCurve||n instanceof he.LineCurve3)?1:n&&n instanceof he.SplineCurve?t*n.points.length:t}function ef(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let a=Pl(t[s]),c=to(a,e),p=xn;for(let l=0;l<=c;l++)if(a instanceof he.CubicBezierCurve||a instanceof he.QuadraticBezierCurve||a instanceof he.LineCurve){if(a.getPoint(l/c,p),o!==void 0&&Db(o,p,ui))continue;o===void 0&&(o=ua),o.copy(p),n.push(p.x,p.y),i++}}return pi(n[0],n[n.length-2],ui)&&pi(n[1],n[n.length-1],ui)&&(n.pop(),n.pop()),r&&i>1&&!(pi(n[i-1],n[1],ui)&&pi(n[i-2],n[0],ui))&&(n.push(n[0],n[1]),i++),n}var po=require("three");var be=require("three");var Ml=new be.Vector2,Eb=new be.Vector2,Gb=new be.Vector2,Rb=new be.Vector2,Fb=new be.Vector2,Vb=new be.Vector2,Ae=class extends be.Shape{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new be.EventDispatcher;this.plane=new be.Plane(new be.Vector3(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=be.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Ae;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Qt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Ae.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,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){let r=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=e-r;if(a<=s.points.length-1)return s.points[a];r+=s.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let 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=Ml.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=be.MathUtils.generateUUID()){let i;e instanceof be.Vector2?i=e:i=new be.Vector2(e,r);let s=new Qt(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 Zd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Ol(this.points,e,!1),this.roundedCurveDivisions=Ol(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Jd(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),ef(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=to(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(Ll(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(Ml.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){Ll(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&&$d(c,a,p);if(!a.controlsMoved()&&l>0&&!u){let d=a.curveBefore,f=a.curveAfter;if(d===void 0||f===void 0)continue;let m=a.roundedCurveBefore,h=a.roundedCurveAfter,g=d.getLength(),x=f.getLength(),v=Math.min(l,g*.499),A=Math.min(l,x*.499),S=Math.min(v,A),b=1-S/g,D=S/x,w=d.getPointAt(b,Ml),y=f.getPointAt(D,Eb);this._subSplitCurve(d,m,b,w,void 0),this._subSplitCurve(f,h,D,void 0,y);let L;if(this.useCubicForRoundedCorners){let T=Il(w,a.position,y)/2,I=Math.tan(T)*w.distanceTo(a.position),[C,N]=Xd(w,y,I,Gb,Rb),k=Yd(C,N,a.position),[W,ne]=Kd(k,w,y,I,Fb,Vb);L=new be.CubicBezierCurve(w.clone(),W.clone(),ne.clone(),y.clone())}else L=new be.QuadraticBezierCurve(w.clone(),a.position.clone(),y.clone());a.roundedCurveCorner=L,this.roundedCurves.splice(i+o,0,L),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof be.LineCurve)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=Qd(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 Ae(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],f=new Qt(be.MathUtils.generateUUID(),new be.Vector2(s,a));f.controls[0].position.set(c,p),f.controls[1].position.set(l,u),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Ae;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof be.CubicBezierCurve&&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 be.QuadraticBezierCurve&&(i[a]=qd(i[a]));for(a=0,c=i.length;a<c;a++){let u=i[a],d=a>0?i[a-1]:null,f;u instanceof be.CubicBezierCurve?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof be.LineCurve&&(f=this.createPoint(u.v1)),f!==void 0&&(d!==null&&r(f,d),s.push(f))}let p=i[i.length-1],l=!1;return p instanceof be.CubicBezierCurve?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),l=!0):p instanceof be.LineCurve&&p.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof be.Shape&&(this.shapeHoles=e.holes.map(i=>{let s=new Ae;return s.fromShape(i),s})),this.update(),this}};var Co=require("three");var Ee;(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"})(Ee||(Ee={}));var Je;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Je||(Je={}));function pe(n,t){if(!n)throw t||"Assertion Failed!"}var ae=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){pe(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){pe(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){pe(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){pe(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}(),di=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}(),pa=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}(),vn=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}(),tf=function(){function n(){var t=new vn,e=new di,r=new pa(0),o=new pa(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 pa(0),r=new pa(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;pe(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;pe(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 vn,e=new vn,r=new di,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 vn;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new di;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 di;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 vn;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 di;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&&ae.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&ae.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){pe(o.prev===i),c=o.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(pe(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){pe(s.prev===a),c=s.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(pe(s.prev===a&&s.anEdge===null),p=r,p=r;(c=p.next)!==r;p=c)pe(c.Sym.next===p.Sym),pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Org!==null),pe(c.Dst!==null),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c);pe(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}(),rf=function(){function n(){this.handle=null}return n}(),of=function(){function n(){this.key=null,this.node=0}return n}(),zb=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 rf,this.handles[r]=new of;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,pe(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 rf;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new of}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;pe(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}(),Dl=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}(),nf=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),Ub=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new nf,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 nf;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}(),jb=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?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var a=ae.edgeEval(i.Dst,o,i.Org),c=ae.edgeEval(s.Dst,o,s.Org);return a>=c},n.deleteRegion=function(t,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){pe(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 Dl;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 Ee.ODD:return(e&1)!==0;case Ee.NONZERO:return e!==0;case Ee.POSITIVE:return e>0;case Ee.NEGATIVE:return e<0;case Ee.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 pe(ae.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,pe(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=ae.vertL1dist(e,t),i=ae.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(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.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(ae.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(pe(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.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(ae.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 vn,f,m;if(pe(!ae.vertEq(p,c)),pe(ae.edgeSign(c,t.event,s)<=0),pe(ae.edgeSign(p,t.event,a)>=0),pe(s!==t.event&&a!==t.event),pe(!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(ae.vertLeq(s,a)){if(ae.edgeSign(p,s,a)>0)return!1}else if(ae.edgeSign(c,a,s)<0)return!1;return n.debugEvent(t),ae.intersect(c,s,p,a,d),pe(Math.min(s.t,c.t)<=d.t),pe(d.t<=Math.max(a.t,p.t)),pe(Math.min(p.s,c.s)<=d.s),pe(d.s<=Math.max(a.s,s.s)),ae.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=ae.vertLeq(s,a)?s:a,ae.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),ae.vertEq(d,s)||ae.vertEq(d,a)?(n.checkForRightSplice(t,e),!1):!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,d)>=0||!ae.vertEq(p,t.event)&&ae.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),m=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,m,!0),!0):(ae.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),ae.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),ae.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),ae.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}ae.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,ae.vertEq(o.Org,r)){pe(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!ae.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}pe(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=a=s.Onext,c.fixUpperEdge&&(pe(i!==s),n.deleteRegion(t,c),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),ae.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 Dl;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=ae.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);pe(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 Dl,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 Ub(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||(pe(e.fixUpperEdge),pe(++r===1)),pe(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,ae.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 zb(i,ae.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,pe(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||!ae.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}(),kb=function(){function n(){this.mesh=new tf,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=Ee.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],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)i=e.coords[g],p[g]=i,m[g]=e,c[g]=i,f[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,m[x]=e),i>c[x]&&(c[x]=i,f[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=m[v],o=f[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(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(ae.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ae.edgeGoesLeft(o.Lnext)||ae.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&&(ae.edgeGoesRight(r.Lprev)||ae.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===Je.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 f=c;f<r;++f)this.elements[d++]=-1;if(e===Je.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var m=c;m<r;++m)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 tf),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=Ee.ODD),e===void 0&&(e=Je.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_(),jb.computeInterior(this,s);var a=this.mesh;return e===Je.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Je.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},n}();function Ao(n){var t=n.windingRule,e=t===void 0?Ee.ODD:t,r=n.elementType,o=r===void 0?Je.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,f=n.strict,m=f===void 0?!0:f,h=n.debug,g=h===void 0?!1:h;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var x=new kb;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,m),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var JM=Ee.ODD,e2=Ee.NONZERO,t2=Ee.POSITIVE,r2=Ee.NEGATIVE,o2=Ee.ABS_GEQ_TWO,n2=Je.POLYGONS,i2=Je.CONNECTED_POLYGONS,s2=Je.BOUNDARY_CONTOURS;var bn=class extends Co.BufferGeometry{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ee.ODD;this.elementType=Je.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ee.ODD,elementType:Je.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,c=!0,p=!0,l,u;for(let m=0,h=i.length/2;m<h;m++){let g=m*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=Ao({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,f=a?.elementCount??1;if(this._positionAttribute=new Co.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new Co.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new Co.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new Co.BufferAttribute(new Uint32Array(f*3),1),a){let m=1/0,h=-1/0,g=1/0,x=-1/0;for(let S=0,b=d;S<b;S++){let D=S*2,w=a.vertices[D+0],y=a.vertices[D+1];w<m&&(m=w),w>h&&(h=w),y<g&&(g=y),y>x&&(x=y)}let v=h-m,A=x-g;for(let S=0,b=d;S<b;S++){let D=S*2,w=a.vertices[D+0],y=a.vertices[D+1],L=(w-m)/v,T=(y-g)/A;this._positionAttribute.setXYZ(S,w,y,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,L,T)}for(let S=0,b=f;S<b;S++){let D=S*3,w=a.elements[D+0],y=a.elements[D+1],L=a.elements[D+2];this._indexAttribute.setX(D+0,w),this._indexAttribute.setX(D+1,y),this._indexAttribute.setX(D+2,L)}}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 bn(this._shape,this._curveSegments);return e.userData=Kn(this.userData),e}};var No=require("three");var da=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*da.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*da.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)}},fi=da;fi.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Bl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Sn=class extends No.BufferGeometry{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(w=>{let y=w.extractShapePointsToFlatArray([],i),L=[];for(let T=y.length-1;T>=1;T-=2){let I=y[T-1],C=y[T-0];L.push(I,C)}return L}),p=Ao({windingRule:Ee.ODD,elementType:Je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),l=Ao({windingRule:Ee.ODD,elementType:Je.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 w=0;w<l.elements.length;w++){let y=l.elements[w],L=w%2===0?p.vertexCount:0;p.elements.push(y+L)}for(let w=0;w<l.vertexIndices.length;w++){let y=l.vertexIndices[w],L=p.vertexCount;p.vertexIndices.push(y+L)}for(let w=0;w<l.vertices.length;w++){let y=l.vertices[w];p.vertices.push(y)}}let d=1/0,f=-1/0,m=1/0,h=-1/0;for(let w=0,y=p.vertexCount;w<y;w++){let L=w*2,T=p.vertices[L+0],I=p.vertices[L+1];T<d&&(d=T),T>f&&(f=T),I<m&&(m=I),I>h&&(h=I)}this._minX=d,this._minY=m,this._width=f-d,this._height=h-m;let g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new fi(g);let x=[],v=[];for(let w=p.elementCount-1;w>=0;w--){let y=w>=u,L=w*2,T=p.elements[L+0],I=p.elements[L+1],C=T+I,N={start:T,count:I,normals:[],continuous:[],concave:[]},k=T,W=C-1,ne=T+1,ue=this._shape.roundedCurves.length;do{let F=k-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],O=p.vertices[k*2+0],G=p.vertices[k*2+1],Q=p.vertices[ne*2+0],j=p.vertices[ne*2+1],V=O-E,z=G-B,M=Math.sqrt(V*V+z*z);V/=M,z/=M;let q=O-Q,J=G-j,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[k];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+ue)%ue;let ce=$===1?0:1,ie=this._shape.roundedCurves[Z].getTangent($),me=this._shape.roundedCurves[re].getTangent(ce);N.continuous[F]=ie.dot(me)>.95}}y&&(N.normals[F*2+0]*=-1,N.normals[F*2+1]*=-1),[W,k,ne]=[k,ne,ne+1],ne>=C&&(ne-=I)}while(ne!==T+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,C*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((F,E)=>[E,E]),elements:[0,I],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,O=[],G=[],Q=[],j=[],V=0;for(let M=0;M<I;M++){let q=M*2,J=(M-1+I)%I*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,ce=-N.normals[q+1]*B;if(N.concave[M]||!N.concave[M]&&y){let ie=Math.atan2($,Z),me=Math.atan2(ce,re);me>ie&&(me-=Math.PI*2);let Re=me-ie;if(N.continuous[M]||y){let ge=ie+Re/2,$e=Math.cos(ge)*B,Te=Math.sin(ge)*B;O[2*V+0]=ee+$e*(y?-1:1),O[2*V+1]=H+Te*(y?-1:1),j[V]=M,V++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(Re)/Math.PI));for(let $e=0;$e<=ge;$e++){let Te=ie+Re*($e/ge),St=Math.cos(Te)*B,Vt=Math.sin(Te)*B;O[2*V+0]=ee+St,O[2*V+1]=H+Vt,j[V]=M,V++}}}else O[2*V+0]=ee+Z,O[2*V+1]=H+$,j[V]=M,G[M]=V,V++,O[2*V+0]=ee,O[2*V+1]=H,j[V]=M,V++,O[2*V+0]=ee+re,O[2*V+1]=H+ce,j[V]=M,Q[M]=V,V++}let z=Ao({windingRule:Ee.POSITIVE,elementType:Je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[O],edgeCreateCallback:M=>{let J=M.Org.idx,ee=j[J],H=j[(J+1)%j.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+=I);for(let H=q;H<ee;H++){let Z=H%I,$=(H+1)%I;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}}}se.push({bevelI:F,angle:E,size:B,boundary:z,reverseMap:j,insetPoints:O})}let K=(F,E,B)=>{let O=0,G=F.boundary.vertexIndices.length;for(;O<G&&B(F.boundary.vertexIndices[E]);)E=(E+1)%G,O++;return O},U=x.length;for(let F=1;F<se.length;F++){let E=se[F-1],B=se[F],O=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!O||!G)break;let Q=N.concave.length,j=0,V=Bl(j,I);for(;!E.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)j++,V=Bl(j,I);let z=E.boundary.vertexIndices.findIndex(V),M=B.boundary.vertexIndices.findIndex(V);do z=(z+1)%O;while(V(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(V(B.boundary.vertexIndices[M]));j=(j+1)%I;let q=j,J=this.buildBevelVert(N,E,(z-1+O)%O),ee=this.buildBevelVert(N,B,(M-1+G)%G),H=J,Z=ee,$,re,ce=!1;do{V=Bl(j,I);let ie=K(E,z,V),me=K(B,M,V),Re=ce;if(ce=!1,ie&&!me){for(let ge=0;ge<ie;ge++)$=this.buildBevelVert(N,E,(z+ge)%O,ge/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$;ce=!0}else if(!ie&&me)for(let ge=0;ge<me;ge++)re=this.buildBevelVert(N,B,(M+ge)%G,ge/(me-1)),x.push(Z.topN,H.topP,re.topP),x.push(H.bottomP,Z.bottomN,re.bottomP),Z=re;else if(ie&&me)if($=this.buildBevelVert(N,E,z,0),re=this.buildBevelVert(N,B,M,0),Re?(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,ie===me)for(let ge=1;ge<ie;ge++)$=this.buildBevelVert(N,E,(z+ge)%O,ge/(ie-1)),re=this.buildBevelVert(N,B,(M+ge)%G,ge/(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(ie>me){let ge=ie/me,$e=0;for(let Te=1;Te<ie;Te++)$=this.buildBevelVert(N,E,(z+Te)%O,Te/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$,Te>($e+1)*ge&&($e++,re=this.buildBevelVert(N,B,(M+$e)%G,$e/(me-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re)}else{let ge=me/ie,$e=0;for(let Te=1;Te<me;Te++)re=this.buildBevelVert(N,B,(M+Te)%G,Te/(me-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re,Te>($e+1)*ge&&($e++,$=this.buildBevelVert(N,E,(z+$e)%O,$e/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$)}z=(z+ie)%O,M=(M+me)%G,j=(j+1)%Q}while(j!==q)}{let F=se[0];for(let E=0,B=F.boundary.vertexCount;E<B;E++){let O=this.buildBevelVert(N,F,E),G=this.buildBevelVert(N,F,(E+1)%B);x.push(G.topP,O.topN,O.bottomN),x.push(G.topP,O.bottomN,G.bottomP)}}if(y){let F=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],O=x[E-1],G=x[E-0];F.push(G,O,B)}x.splice(U,x.length-U,...F)}if(y){let F=[];for(let E=se[se.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=se[se.length-1].boundary.vertices[E-1],O=se[se.length-1].boundary.vertices[E-0];F.push(B,O)}v.push(F)}if(!y){let F=se[se.length-1],E=Ao({windingRule:se.length>1?Ee.POSITIVE:Ee.ODD,elementType:Je.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 O=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(O.top,G.top,Q.top),x.push(Q.bottom,G.bottom,O.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new No.BufferAttribute(Uint32Array.from(x),1),S=new No.BufferAttribute(this._buffer.positions,3),b=new No.BufferAttribute(this._buffer.normals,3),D=new No.BufferAttribute(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",S),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 f=Math.cos(r.angle),m=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],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,w=e.normals[g+0],y=e.normals[g+1],L=e.normals[x+0],T=e.normals[x+1];if(d){let W=L-w,ne=T-y;w=w+W*(1-i),y=y+ne*(1-i);let ue=Math.sqrt(w*w+y*y);w/=ue,y/=ue}let I=this._buffer.get(u?2:4),C=I*3,N=I*2,k={i:o,fi:p,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-S,this._buffer.normals[C+0]=w*f,this._buffer.normals[C+1]=y*f,this._buffer.normals[C+2]=m,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]=S,this._buffer.normals[C+3]=w*f,this._buffer.normals[C+4]=y*f,this._buffer.normals[C+5]=-m,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b,u||(I+=2,C+=6,N+=4,k.topP=I+0,k.bottomP=I+1,this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-S,this._buffer.normals[C+0]=L*f,this._buffer.normals[C+1]=T*f,this._buffer.normals[C+2]=m,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]=S,this._buffer.normals[C+3]=L*f,this._buffer.normals[C+4]=T*f,this._buffer.normals[C+5]=-m,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b),this.vertexCache[s]=k,k}clone(){let e=new Sn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Kn(this.userData),e}};var xt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},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 Ae?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Ae(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new Ae(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 bn(n.shape,o):s=new Sn(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var Ea=require("three");var lf=require("three");var Be=require("three"),af=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:f}=n.parameters,m;return u||f?m=new mi(p,l,r,o,i,s,a,c*Math.PI/180,u,u,d,f):m=new Be.CylinderBufferGeometry(p,l,r,o,i,s,a,c*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function ro(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function sf(n){return new Be.Vector2(n.y,-n.x)}var mi=class extends Be.BufferGeometry{constructor(t,e,r,o,i,s,a,c,p,l,u,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,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 m=[],h=[],g=[],x=[],v=0,A=r/2,S=new Be.Vector3,b=new Be.Vector3;f&&t==0&&(t=p),f&&e==0&&(e=l);let D=new Be.Vector2(t,A),w=new Be.Vector2(e,-A),y=null,L=null,T=null,I=null,C=D.clone().sub(w),N=0,k=0,W=0;d>0&&(N=Math.min(t,e)*(1-d),k=t-N,W=e-N);let ne=D.clone();ne.x-=N;let ue=Math.PI-C.angle(),se=C.angle(),K=Math.tan(se/2),U=Math.tan(ue/2),F=K+U,E=d?F:U,B=d?F:K;if(p=Math.min(p,(t-k)/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 Be.Vector2(z,p)),d&&(T=y.clone(),T.x-=N-F*p),D.sub(C.clone().setLength(z))}if(l>0){let z=l/U;L=w.clone().sub(new Be.Vector2(z,-l)),w.add(C.clone().setLength(z)),d&&(I=L.clone(),I.x-=N-F*l,ne.sub(C.clone().setLength(z)))}C=D.clone().sub(w);let O=C.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+a,ee=new Be.Vector2(Math.sin(J),Math.cos(J));I&&L?(Q(M,q,ee,ue,l,I,-1,!0),Q(M,q,ee,se,l,L,-1,!1)):L?(j(M,ee,L.x,0,-1),Q(M,q,ee,se,l,L,-1,!1)):s||j(M,ee,e,W,-1);let H=sf(C).normalize();if(ro(H,ee,S),!O)for(let Z=0;Z<=i;Z++){let $=Z/i,re=C.clone().multiplyScalar($).add(w);ro(re,ee,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Q(M,q,ee,ue,p,y,1,!1),Q(M,q,ee,se,p,T,1,!0)):y?(Q(M,q,ee,ue,p,y,1,!1),j(M,ee,y.x,0,1)):s||j(M,ee,t,k,1),d&&!O){let Z=sf(C).multiplyScalar(-1).normalize();ro(Z,ee,S);for(let $=0;$<=i;$++){let re=$/i,ce=C.clone().multiplyScalar(-re).add(ne);ro(ce,ee,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.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];m.push(q,J,H),(Z!=0||$!=0)&&m.push(J,ee,H)}c<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+c)),this.setIndex(m),this.setAttribute("position",new Be.Float32BufferAttribute(h,3)),this.setAttribute("normal",new Be.Float32BufferAttribute(g,3)),this.setAttribute("uv",new Be.Float32BufferAttribute(x,2));function Q(z,M,q,J,ee,H,Z,$){for(let re=0;re<u+1;re++){let ce=re/u,ie=Z<0?ce:1-ce;$&&(ie-=1),ie*=J;let me=new Be.Vector2(Math.sin(ie),Math.cos(ie)*Z),Re=me.clone().multiplyScalar(ee).add(H);ro(Re,q,b),h.push(b.x,b.y,b.z),ro(me,q,S),g.push(S.x,S.y,S.z),x.push(M,.5+b.y/r),z.push(v++)}}function j(z,M,q,J,ee){let H=new Be.Vector3,Z=new Be.Vector2,$=[q,J];ee<0&&$.reverse();for(let re of $)Z.set(re,A*ee),ro(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 Be.Vector2(Math.sin(q),Math.cos(q)),ee=new Be.Vector2(-Math.cos(q),Math.sin(q)),H=new Be.Vector3,Z=z<0?(ce,ie,me)=>m.push(ce,ie,me):(ce,ie,me)=>m.push(ce,me,ie),$=new Be.Vector2((t+e+k+W)/4,0);ro($,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 ce of M){let ie=h.slice(ce*3,ce*3+3);h.push(...ie),g.push(ee.x,0,ee.y);let me=x.slice(ce*2,ce*2+2);x.push(...me),v++}for(let ce=re+1;ce<v-1;ce++)Z(re,ce,ce+1);Z(re,v-1,re+1)}}};var cf=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 mi(0,t/2,r,o,i,s,a,c*Math.PI/180,p,l,u,0,!0):d=new lf.ConeBufferGeometry(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};var Nt=require("three"),uf=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 Nt.BoxBufferGeometry(t,e,r,o,i,s):p=new Gl(t,e,r,o,i,s,a,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},El=Math.PI/2,Gl=class extends Nt.BufferGeometry{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=[],f=[],m=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 Nt.Float32BufferAttribute(u,3)),this.setAttribute("normal",new Nt.Float32BufferAttribute(d,3)),this.setAttribute("uv",new Nt.Float32BufferAttribute(f,2));function g(A,S,b,D,w,y,L,T,I,C,N){let k=(y-2*a)/I,W=(L-2*a)/C,ne=y/2-a,ue=L/2-a,se=T/2,K=I+1,U=C+1,F=0,E=0,B=new Nt.Vector3;for(let O=0;O<U;O++){let G=O*W-ue;for(let Q=0;Q<K;Q++){let j=Q*k-ne;B[A]=j*D,B[S]=G*w,B[b]=se,u.push(B.x,B.y,B.z),B[A]=0,B[S]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),f.push(Q/I),f.push(1-O/C),F+=1}}for(let O=0;O<C;O++)for(let G=0;G<I;G++){let Q=m+G+K*O,j=m+G+K*(O+1),V=m+(G+1)+K*(O+1),z=m+(G+1)+K*O;l.push(Q,j,z),l.push(j,V,z),E+=6}p.addGroup(h,E,N),h+=E,m+=F}function x(A,S,b,D,w,y,L,T,I,C,N){let k=(L-2*a)/C,W=L/2-a,ne=T/2-a,ue=I/2,se=C+1,K=0,U=0,F=new Nt.Vector3,E=new Nt.Vector3;for(let B=0;B<c+1;B++){let O=B/c*El,G=Math.sin(O)*a,Q=(1-Math.cos(O))*a,j=Math.sin(O),V=Math.cos(O);F[S]=(ne+G)*w,F[b]=(ue-Q)*y,E[A]=0,E[S]=j*Math.sign(F[S]),E[b]=V*Math.sign(F[b]);for(let z=0;z<se;z++){let M=z*k-W;F[A]=M*D,u.push(F.x,F.y,F.z),d.push(E.x,E.y,E.z),f.push(z/C),f.push(0),K+=1}}for(let B=0;B<c;B++)for(let O=0;O<C;O++){let G=m+O+se*B,Q=m+O+se*(B+1),j=m+(O+1)+se*(B+1),V=m+(O+1)+se*B;l.push(G,Q,V),l.push(Q,j,V),U+=6}p.addGroup(h,U,N),h+=U,m+=K}function v(A,S,b){let D=new Nt.Vector3,w=new Nt.Vector3(t/2,e/2,r/2);w.subScalar(a);let y=[],L=A*S*b>0?(I,C,N)=>l.push(I,C,N):(I,C,N)=>l.push(I,N,C);for(let I=0;I<=c;I++){let C=[],N=El*(1-I/c),k=Math.cos(N),W=Math.sin(N),ne=0;for(let ue=0;ue<=I;ue++){let se=Math.cos(ne),K=Math.sin(ne);D.x=k*se,D.y=W,D.z=k*K;let U=w.clone().addScaledVector(D,a);u.push(A*U.x,S*U.y,b*U.z),d.push(A*D.x,S*D.y,b*D.z),f.push(0,0),C.push(m++),ne+=El/I}y.push(C)}let T=y.length-1;for(let I=0;I<T;I++){let C=y[I],N=y[I+1],k=C.length-1;L(C[0],N[1],N[0]);for(let W=1;W<=k;W++)L(C[W-1],C[W],N[W]),L(C[W],N[W+1],N[W])}}}};var ze=require("three"),oo=class extends ze.BufferGeometry{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],p=[];l(),u(),this.setAttribute("position",new ze.Float32BufferAttribute(a,3)),this.setAttribute("normal",new ze.Float32BufferAttribute(p,3)),this.setAttribute("uv",new ze.Float32BufferAttribute(c,2));return;function l(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new ze.Vector3,h=m.clone(),g=new ze.Triangle,x=i*o,v=o-x,A=s+1,S=new ze.Vector3,b=(K,U)=>S.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),w=D(t.length/3,(K,U)=>new ze.Vector3().fromArray(t,U*3).setLength(o)),y=[],L=1e6;for(let K=0;K<w.length;K++){let U=w[K],F=[],E,B,O,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],O=U.distanceToSquared(w[E]),G=Math.min(G,O),F.push([E,B,O])}G+=1e-6;let j=[],V=0,z=F.length;for(let M=0;M<z;M++){[E,B,O]=F[V];let q=y[E]?.includes(K)==!0;O<=G&&j.push(E+ +q*L),V=F.findIndex(J=>J[0]==B)}y.push(j)}let T=[];{let K=0,U=0,F,E,B=f==3;for(let O=0;O<=s;O++){F=O*(O+1)/2,E=(O+1)*(O+2)/2;for(let G=0;G<s-O;G++)[K,U]=[F+G+O+2,E+G+O+3],T.push(F,E,...B?[U,F]:[K,E],U,K),[F,E]=[K,U];T.push(F,E,F+s+2)}}let I=m.clone(),C=m.clone(),N=m.clone(),k=m.clone(),W=m.clone(),ne=[],ue=D(w.length,()=>D(f,()=>m.clone()));for(let K=0;K<w.length;K++){m.copy(w[K]).normalize(),I.copy(m).multiplyScalar(v);let U=y[K];for(let j=0;j<U.length;j++){let V=U[j],z=U[(j+1)%f];g.setFromPointsAndIndices(w,K,V%L,z%L),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(I,ue[K][j])}let F=[],E=[],B=[],O=new ze.Vector3;s==0&&[...ue[K]].reduce((j,V)=>j.add(V),O).multiplyScalar(1/f);for(let j=0;j<f;j++){let V=[],z=(j-1+f)%f,M=ue[K][z],q=ue[K][j];m.copy(M).sub(I),h.copy(q).sub(I);let J=I.angleTo(m),ee=m.angleTo(h),H=Math.cos(J)*x;s==0?C.copy(O):C.copy(I).setLength(v+H),E.push(H);let Z=[C,M,q];for(let $=0;$<2;$++){let re=Z[$],ce=Z[$+1];k.subVectors(re,I),W.subVectors(ce,I),N.crossVectors(k,W).normalize();for(let ie=0;ie<A;ie++){let me=[J,ee][$]*ie/A;m.copy(k).applyAxisAngle(N,me).add(I),F.push(m.clone()),$&&(b(m,I),V.push([ie==0?re:m.clone(),S.clone()]))}$&&(b(ce,I),V.push([ce,S.clone()]))}B.push(V)}ne.push(B);let G=2*A,Q=2;for(let j=0;j<f;j++){let V=G*j,z=G*((j+1)%f),M=[F[V]];for(let J=1;J<A;J++){k=F[V+J],W=F[z+J],M.push(k);for(let ee=1,H=J-Q+1;ee<=H;ee++)m.lerpVectors(k,W,ee/(H+1)),m.sub(I).setLength(E[j]).add(I),M.push(m.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,I),[S.x,S.y,S.z])).flat())}}let se=[];for(let K=0;K<y.length;K++)for(let U=0;U<f;U++){let F=y[K][U];if(F<L){let E=y[F].findIndex(G=>G%L==K),B=ne[K][U],O=ne[F][E];for(let G=0;G<A;G++){let Q=B[G],j=O[A-G],V=B[G+1],z=O[A-(G+1)];[Q,j,V,V,j,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)})}se.push(B[0][0],O[A][0],B[A][0],O[0][0])}}for(;se.length;){let K,U,F,E;[K,U]=se.splice(0,2);let B=[K];for(;K!=U;)B.push(U),F=se.indexOf(U),E=F%2,U=se.splice(F-E,2)[1-E];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let O=S.dot(B[0])<0;O&&S.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +O],B[G+1-+O],B[0]].forEach(Q=>{a.push(Q.x,Q.y,Q.z),p.push(S.x,S.y,S.z)})}}function u(){let d=new ze.Vector3;for(let w=0;w<a.length;w+=3){d.x=a[w+0],d.y=a[w+1],d.z=a[w+2];let y=b(d)/2/Math.PI+.5,L=D(d)/Math.PI+.5;c.push(y,1-L)}let f=new ze.Vector3,m=new ze.Vector3,h=new ze.Vector3,g=new ze.Vector3,x=new ze.Vector2,v=new ze.Vector2,A=new ze.Vector2,S=(w,y,L,T)=>{T<0&&w.x===1&&(c[y]=w.x-1),L.x===0&&L.z===0&&(c[y]=T/2/Math.PI+.5)};for(let w=0,y=0;w<a.length;w+=9,y+=6){f.set(a[w+0],a[w+1],a[w+2]),m.set(a[w+3],a[w+4],a[w+5]),h.set(a[w+6],a[w+7],a[w+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(f).add(m).add(h).divideScalar(3);let L=b(g);S(x,y+0,f,L),S(v,y+2,m,L),S(A,y+4,h,L)}for(let w=0;w<c.length;w+=6){let y=c[w+0],L=c[w+2],T=c[w+4],I=Math.max(y,L,T),C=Math.min(y,L,T);I>.9&&C<.1&&(y<.2&&(c[w+0]+=1),L<.2&&(c[w+2]+=1),T<.2&&(c[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function D(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new oo(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var pf=require("three"),df=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 hi(t*.5,i,s):new pf.DodecahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},hi=class extends oo{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 hi(t.radius,t.corner,t.cornerSides)}};var Fl=Math.PI*2;function Rl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function Hb(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 ff(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 Wb(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),f=Math.pow(a,2),m=l*u-l*f-u*d;m<0&&(m=0),m/=l*f+u*d,m=Math.sqrt(m)*(c===p?-1:1);let h=m*o/i*a,g=m*-i/o*s,x=h+(n+e)/2,v=g+(t+r)/2,A=(s-h)/o,S=(a-g)/i,b=(-s-h)/o,D=(-a-g)/i,w=ff(1,0,A,S),y=ff(A,S,b,D);return!p&&y>0&&(y-=Fl),p&&y<0&&(y+=Fl),{centerx:x,centery:v,ang1:w,ang2:y}}function mf({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=Wb(n,t,e,r,o,i,p,l,s,a),{ang1:f,ang2:m}=d,{centerx:h,centery:g}=d,x=Math.abs(m)/(Fl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);m/=v;for(let A=0;A<v;A++)c.push(Hb(f,m)),f+=m;return c.map(A=>{let{x:S,y:b}=Rl(A[0],o,i,h,g),{x:D,y:w}=Rl(A[1],o,i,h,g),{x:y,y:L}=Rl(A[2],o,i,h,g);return{x1:S,y1:b,x2:D,y2:w,x:y,y:L}})}var _n=require("three"),gf=Math.PI*2,yf=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 Ae?n.shape:new Ae,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=qb(p,l,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let f=xt.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function qb(n,t,e,r,o,i){if(r>=gf)return o>30||o%4===0?(Xb(n,t,e,i),Math.round(o/4)):hf(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=mf({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?$b(n,s.x,s.y,p,o,t,e,i):hf(n,r,o,t,e,i)}function $b(n,t,e,r,o,i,s,a){let c=Math.round(o/r.length);n.addPoint(wn(t,e));for(let p=0,l=r.length;p<l;p++){let u=r[p],d=n.points[p],f=wn(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return a>0?xf(n,i,s,a):n.addPoint(wn(0,0)),c}function hf(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(wn(p,l))}return t<gf?i>0?xf(n,r,o,i):n.addPoint(wn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&vf(n,r,o,i)),1}function Xb(n,t,e,r=0,o=0,i=0){let s=.5522847498,a=t*s,c=e*s;n.addPoint(fa(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(fa(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(fa(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(fa(o,i-e,o+a,i-e,o-a,i-e)),r>0&&vf(n,t,e,r)}function wn(n,t){return new Qt(_n.MathUtils.generateUUID(),new _n.Vector2(n,t))}function fa(n,t,e,r,o,i){let s=wn(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function xf(n,t,e,r){bf(n,t,e,r).forEach(i=>n.addPoint(i))}function vf(n,t,e,r){let o=bf(n,t,e,r),i=new Ae;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function bf(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new _n.Vector2(o/t,i/e),a=n.points.map(c=>{let p=c.clone();return p.uuid=_n.MathUtils.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}var Fr=require("three"),Sf=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 gi(!1,t,e,r,o,i,s,a,c,p,l,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},gi=class extends Fr.BufferGeometry{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 f=t&&s===1;f&&(d=0),u>100&&(u=100);let m=()=>new Fr.Vector3,h=new Fr.Vector3,g=m(),x=m(),v=m(),A,S,b,D,w,y,L,T,I=m(),C=m(),N=m(),k=m(),W=m(),ne=m(),ue=m(),se=m(),K=r-2*c+.001,U=K/s,F=Math.ceil(a*s),E=F+1,B=K/F,O=-K/2,G=l+1,Q=2*Math.PI/l,j=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,ce,ie]=[3,3,2].map(je=>Array($*je).fill(0)),me=[],Re=i-c;function ge(je,Dt){let ir=Math.PI/2;y=Dt*B,T=2*Math.PI*(y%U)/U+ir,y+=O,L=Math.sin(T)*Re,w=Math.cos(T)*Re,t?je.set(w,L,y):je.set(w,y,L)}ge(h,-1e-10),ge(g,0),I.copy(h),ge(h,1);let $e=h.distanceTo(g),Te=M+z,St=$e*F+2*Te,Vt=z,Ro=St-Te;for(let je=0;je<=F;je++){ge(x,je),se.subVectors(x,I).normalize(),I.copy(x),ne.copy(x).setComponent(+t+1,0).normalize(),ue.crossVectors(se,ne).normalize();let Dt=je===0,ir=je===F,nh=Dt?3*Math.PI/2:j,ih=Dt?Vt:Ro,sh=Dt?G:Z,ah=Dt?0:$-G,lh=se.clone().multiplyScalar(Dt?-M:M).add(x),ch=se.clone().multiplyScalar(Dt?-1:1).normalize();for(let Lr=0;Lr<G;Lr++){let Pc=Lr*Q;if(C.addVectors(h.copy(ne).multiplyScalar(c*Math.cos(Pc)),g.copy(ue).multiplyScalar(c*Math.sin(Pc))),N.copy(C).normalize(),Dt||ir){f||(q=ah+Lr,[0,1,2].forEach(wt=>{re[q*3+wt]=lh.getComponent(wt),ce[q*3+wt]=ch.getComponent(wt)}),ie[q*2]=+ir,ie[q*2+1]=Lr/l),g.copy(N).multiplyScalar(z),v.addVectors(x,g);for(let wt=0;wt<d;wt++){let Ha=wt*j+nh;k.addVectors(h.copy(se).multiplyScalar(M*Math.sin(Ha)),g.copy(N).multiplyScalar(M*Math.cos(Ha))),W.copy(k).normalize(),g.addVectors(v,k),k.normalize(),q=sh+wt*G+Lr,[0,1,2].forEach(ts=>{re[q*3+ts]=g.getComponent(ts),ce[q*3+ts]=W.getComponent(ts)});let uh=+Dt+Math.sin(Ha);ie[q*2]=(ih+M*uh)/St,ie[q*2+1]=Lr/l}}g.addVectors(x,C),q=H+je*G+Lr,[0,1,2].forEach(wt=>{re[q*3+wt]=g.getComponent(wt),ce[q*3+wt]=N.getComponent(wt)}),ie[q*2]=(Te+je*$e)/St,ie[q*2+1]=Lr/l}}let Mt=E+2*d+J,Fo=1,[Ji,es]=f?[Fo,Fo+E-1]:[0,Mt-1];for(let je=Ji;je<=es-1;je++){let Dt=f&&je===es-1;for(let ir=0;ir<G-1;ir++)A=je*G+ir,S=A+1,b=(Dt?ir:A)+G,D=(Dt?ir+1:S)+G,je===0?me.push(S,D,b):je===Mt-2?me.push(A,S,b):me.push(A,S,b,S,D,b)}this.setIndex(me),this.setAttribute("position",new Fr.Float32BufferAttribute(re,3)),this.setAttribute("normal",new Fr.Float32BufferAttribute(ce,3)),this.setAttribute("uv",new Fr.Float32BufferAttribute(ie,2))}};var wf=require("three");var _f=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 yi(t*.5,i,s):new wf.IcosahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},yi=class extends oo{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 yi(t.radius,t.corner,t.cornerSides)}};var ma=require("three"),Tf=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 ma.Shape;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 ma.LatheBufferGeometry(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var hr=require("three");var Vr=require("three");var oe=require("three"),mr=new oe.Matrix4,Vl=new oe.Object3D,ha=new oe.Vector3,no=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new oe.Matrix3().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 mr.makeRotationX(t),this.applyMatrix4(mr),this}rotateY(t){return mr.makeRotationY(t),this.applyMatrix4(mr),this}rotateZ(t){return mr.makeRotationZ(t),this.applyMatrix4(mr),this}translate(t,e,r){return mr.makeTranslation(t,e,r),this.applyMatrix4(mr),this}scale(t,e,r){return mr.makeScale(t,e,r),this.applyMatrix4(mr),this}lookAt(t){return Vl.lookAt(t),Vl.updateMatrix(),this.applyMatrix4(Vl.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 oe.Vector3().fromBufferAttribute(i,d)),a!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(a,d));function l(d,f,m,h){let g=a===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[m].clone()],x=s===void 0?[]:[new oe.Vector3().fromBufferAttribute(s,d),new oe.Vector3().fromBufferAttribute(s,f),new oe.Vector3().fromBufferAttribute(s,m)],v=new Tn(d,f,m,x,g,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(c,d),new oe.Vector2().fromBufferAttribute(c,f),new oe.Vector2().fromBufferAttribute(c,m)]),p!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(p,d),new oe.Vector2().fromBufferAttribute(p,f),new oe.Vector2().fromBufferAttribute(p,m)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let f=u[d],m=f.start,h=f.count;for(let g=m,x=m+h;g<x;g+=3)r!==void 0?l(r.getX(g),r.getX(g+1),r.getX(g+2),f.materialIndex):l(g,g+1,g+2,f.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(ha).negate(),this.translate(ha.x,ha.y,ha.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new oe.Matrix4;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 oe.Vector3,e=new oe.Vector3;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 oe.Vector3;if(t){let r=new oe.Vector3,o=new oe.Vector3;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 no;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 oe.Vector3,l={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};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 oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),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 oe.Matrix3().getNormalMatrix(e));for(let d=0,f=a.length;d<f;d++){let h=a[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,f=u.length;d<f;d++)l.push(u[d].clone());for(let d=0,f=p.length;d<f;d++){let m=p[d],h,g,x=m.vertexNormals,v=m.vertexColors,A=new Tn(m.a+i,m.b+i,m.c+i);A.normal.copy(m.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let S=0,b=x.length;S<b;S++)h=x[S].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)g=v[S],A.vertexColors.push(g.clone());A.materialIndex=m.materialIndex+r,c.push(A)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=m.length;h<g;h++){let x=m[h],v=[];for(let A=0,S=x.length;A<S;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 oe.Vector3(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 m=this.parameters;for(let h in m)m[h]!==void 0&&(t[h]=m[h]);return t}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let r=[],o=[],i={},s=[],a={},c=[],p={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],g=!0,x=!1,v=this.faceVertexUvs[0][m]!==void 0,A=h.normal.length()>0,S=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,w=0;if(w=l(w,0,0),w=l(w,1,g),w=l(w,2,x),w=l(w,3,v),w=l(w,4,A),w=l(w,5,S),w=l(w,6,b),w=l(w,7,D),r.push(w),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let y=this.faceVertexUvs[0][m];r.push(f(y[0]),f(y[1]),f(y[2]))}if(A&&r.push(u(h.normal)),S){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(m,h,g){return g?m|1<<h:m&~(1<<h)}function u(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function d(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return a[h]!==void 0||(a[h]=s.length,s.push(m.getHex())),a[h]}function f(m){let h=m.x.toString()+m.y.toString();return p[h]!==void 0||(p[h]=c.length/2,c.push(m.x,m.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 no().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,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=m.length;h<g;h++){let x=m[h],v=[];for(let A=0,S=x.length;A<S;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let i=t.morphTargets;for(let d=0,f=i.length;d<f;d++){let m={};if(m.name=i[d].name,i[d].vertices!==void 0){m.vertices=[];for(let h=0,g=i[d].vertices.length;h<g;h++)m.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){m.normals=[];for(let h=0,g=i[d].normals.length;h<g;h++)m.normals.push(i[d].normals[h].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let d=0,f=s.length;d<f;d++){let m={};if(s[d].vertexNormals!==void 0){m.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(),m.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){m.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)m.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(m)}let a=t.skinWeights;for(let d=0,f=a.length;d<f;d++)this.skinWeights.push(a[d].clone());let c=t.skinIndices;for(let d=0,f=c.length;d<f;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,f=p.length;d<f;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 zl().fromGeometry(this),e=new oe.BufferGeometry,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new oe.BufferAttribute(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new oe.BufferAttribute(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new oe.BufferAttribute(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new oe.BufferAttribute(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 oe.Float32BufferAttribute(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 oe.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new oe.Float32BufferAttribute(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 oe.BufferGeometry,r=t.geometry;if(t.isPoints||t.isLine){let o=new oe.Float32BufferAttribute(r.vertices.length*3,3),i=new oe.Float32BufferAttribute(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 oe.Float32BufferAttribute(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}};no.prototype.isGeometry=!0;var zl=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 f=t.skinIndices,m=t.skinWeights,h=f.length===r.length,g=m.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 S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[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 oe.Vector2,new oe.Vector2,new oe.Vector2))}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 oe.Vector2,new oe.Vector2,new oe.Vector2))}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(f[v.a],f[v.b],f[v.c]),g&&this.skinWeights.push(m[v.a],m[v.b],m[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 oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new oe.Color,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 Yb=["a","b","c"];function Kb(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Ul(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function jl(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 Qb(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],jl(s.a,s.b,n,r,s,e),jl(s.b,s.c,n,r,s,e),jl(s.c,s.a,n,r,s,e)}function ga(n,t,e,r,o){n.push(new Tn(t,e,r,void 0,void 0,o))}function An(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function ya(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var xa=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Vr.BufferGeometry?t=new no().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 Vr.Vector3,r,o,i,s,a,c=t.vertices,p=t.faces,l=t.faceVertexUvs[0],u=l!==void 0&&l.length>0,d=[],f=new Map;Qb(c,p,d,f);let m=[],h,g,x,v,A,S,b;for(let V of Array.from(f.keys())){for(g=f.get(V),x=new Vr.Vector3,A=3/8,S=1/8,b=g.faces.length,b!=2&&(A=.5,S=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[Kb(v,Yb[a])],!(h!==g.a&&h!==g.b));a++);h&&e.add(h)}e.multiplyScalar(S),x.add(e),g.newEdge=m.length,m.push(x)}let D,w,y,L,T,I,C,N=[];for(o=0,i=c.length;o<i;o++){for(I=c[o],T=d[o].edges,r=T.length,r==3?D=3/16:r>3&&(D=3/(8*r)),w=1-r*Number(D),y=D,r<=2&&(r==2?(w=3/4,y=1/8):r==1||r==0),C=I.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)L=T[s],h=L.a!==I?L.a:L.b,e.add(h);e.multiplyScalar(Number(y)),C.add(e),N.push(C)}let k=N.concat(m),W=N.length,ne,ue,se,K=[],U=[],F,E,B,O,G=new Vr.Vector2,Q=new Vr.Vector2,j=new Vr.Vector2;for(o=0,i=p.length;o<i;o++)v=p[o],ne=Number(Ul(v.a,v.b,f).newEdge)+W,ue=Number(Ul(v.b,v.c,f).newEdge)+W,se=Number(Ul(v.c,v.a,f).newEdge)+W,ga(K,ne,ue,se,v.materialIndex),ga(K,v.a,ne,se,v.materialIndex),ga(K,v.b,ue,ne,v.materialIndex),ga(K,v.c,se,ue,v.materialIndex),u&&(F=l[o],E=F[0],B=F[1],O=F[2],G.set(An(E.x,B.x),An(E.y,B.y)),Q.set(An(B.x,O.x),An(B.y,O.y)),j.set(An(E.x,O.x),An(E.y,O.y)),ya(U,G,Q,j),ya(U,E,G,j),ya(U,B,Q,G),ya(U,O,j,Q));t.vertices=k,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var et=new hr.Vector3,Af=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new hr.BufferGeometry().copy(new hr.BoxBufferGeometry(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(et),r={width:et.x,height:et.y,depth:et.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 hr.BufferGeometry().copy(new hr.BoxBufferGeometry(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(et)):et.set(s.width,s.height,s.depth),(t!==et.x||e!==et.y||r!==et.z)&&i.scale(et.x===0?1:t/et.x,et.y===0?1:e/et.y,et.z===0?1:r/et.z);let a=i.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new xa(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 hr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(et);let s=100/et.x;Object.assign(i.parameters,{width:100,height:et.y*s,depth:et.z*s}),t(this.build(i))})}};var Cf=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 Ae?n.shape:new Ae,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,f=2*Math.PI/r;for(let h=0;h<r;h++){let g=f*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 m=xt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var ve=require("three"),Nf=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 Hl(t*.5,e,o,i,s,a,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function xi(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function kl(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 Zb(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Hl=class extends ve.BufferGeometry{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,f=e/2,m=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 ve.Vector3(0,-f,0),S=new ve.Vector3(0,f,0),b=new ve.Vector2(t,-f),D=new ve.Vector2(h,-f),w=new ve.Vector2(0,S.y).sub(D),y=new ve.Vector2(0,S.y).sub(b),L=new ve.Vector2(w.y,-w.x).normalize(),T=new ve.Vector2(y.y,-y.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,C);let N;{let U=new ve.Vector3(L.x,L.y,0),F=new ve.Vector3(Math.cos(g)*U.x,U.y,Math.sin(g)*U.x);N=U.angleTo(F)}let k=s/Math.tan((Math.PI-w.angle())/2),W=s/Math.tan((Math.PI-N)/2),ne=new ve.Vector3;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=k/Math.cos(Math.PI/r);E.x-=B;for(let O=0;O<r;O++){let G=O/r*Math.PI*2+m,Q=new ve.Vector2(Math.sin(G),Math.cos(G));xi(E,Q,ne),p.push(ne.x,ne.y,ne.z),l.push(0,-1,0),u.push(0,0),F.push(d++)}for(let O=0;O<F.length;O++)c.push(F[O],U,F[(O+1)%F.length])}let ue=[];{let U=new ve.Vector3,F=new ve.Vector3,E=new ve.Vector3,B=new ve.Vector3,O=new ve.Vector3,G=new ve.Vector3;for(let Q=0;Q<r;Q++){let j=Q/r*Math.PI*2+m,V=(Q+.5)/r*Math.PI*2+m,z=(Q+1)/r*Math.PI*2+m,M=new ve.Vector2(Math.sin(j),Math.cos(j)),q=new ve.Vector2(Math.sin(V),Math.cos(V)),J=new ve.Vector2(Math.sin(z),Math.cos(z));xi(b,M,F),xi(b,J,E),xi(L,q,U),kl(S,F,E,W,W,B),p.push(B.x,B.y,B.z),kl(F,S,E,W,k,O),p.push(O.x,O.y,O.z),kl(E,F,S,k,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 ce=F.clone().add(E).multiplyScalar(.5),ie=S.clone().sub(ce).normalize(),Re=A.clone().sub(ce).normalize().add(ie).normalize().multiplyScalar(-1),ge=G.clone().sub(O);se(ce,ge,Re,w.angle())}let $,re;{let ce=new ve.Vector3;xi(T,J,ce);let ie=G.clone().add(B).multiplyScalar(.5);ie=Zb(ie,E,S);let me=G.clone().sub(B);[$,re]=se(ie,me,ce,N,B.y)}{let ce=$,ie=ce.clone().setY(0).normalize(),me=new ve.Vector3(0,-1,0),Re=ie.clone().cross(me);K(ce,ie,me,Re)}ue.concat(re);{let ce=w.angle(),ie=Math.PI-ce,me=S.clone();me.y-=s/Math.sin(ce-Math.PI/2);let Re=new ve.Vector3,ge=[];for(let Te=0;Te<a;Te++){let St=[],Vt=Math.PI/2-ie*Te/a,Ro=Math.cos(Vt),Mt=Math.sin(Vt),Fo=V;for(let Ji=0;Ji<=Te;Ji++){let es=Math.cos(Fo),je=Math.sin(Fo);U.x=Ro*je,U.y=Mt,U.z=Ro*es,Re.copy(me).addScaledVector(U,s),p.push(Re.x,Re.y,Re.z),l.push(U.x,U.y,U.z),u.push(0,0),St.push(d++),Fo+=Math.PI*2/Te/r}ge.push(St)}re.reverse(),ge.push(re);let $e=ge.length-1;for(let Te=0;Te<$e;Te++){let St=ge[Te],Vt=ge[Te+1],Ro=St.length-1;c.push(Vt[1],St[0],Vt[0]);for(let Mt=1;Mt<=Ro;Mt++)c.push(St[Mt],St[Mt-1],Vt[Mt]),c.push(Vt[Mt+1],St[Mt],Vt[Mt])}}}}}this.setIndex(c),this.setAttribute("position",new ve.Float32BufferAttribute(p,3)),this.setAttribute("normal",new ve.Float32BufferAttribute(l,3)),this.setAttribute("uv",new ve.Float32BufferAttribute(u,2));function se(U,F,E,B,O){let G=-B/2,Q=(Math.PI-B)/2,j=F.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let V=new ve.Vector3,z=new ve.Vector3,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(j,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),O!=null){let re=Math.max(0,V.y-O);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,ce=Z+1;c.push(Z,$,ce),c.push($,re,ce)}return[U.clone().addScaledVector(F,.5),J]}function K(U,F,E,B){let O=Math.PI/2,G=y.angle()-O,Q=[],j=new ve.Vector3,V=new ve.Vector3;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),ce=Math.atan(Math.tan(G)*$),ie=(O+ce)*J,me=Math.cos(ie),Re=Math.sin(ie);j.set(0,0,0),j.addScaledVector(F,Re*$),j.addScaledVector(E,me),j.addScaledVector(B,Re*re),V.copy(U).addScaledVector(j,s),p.push(V.x,V.y,V.z),l.push(j.x,j.y,j.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 Pf=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 Ae?n.shape:new Ae,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(S,b,D){return b>e&&D>r?Math.min(S*e/b,S*r/D):b>e?S*e/b:D>r?S*r/D:S}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let m=l.x,h=u.x,g=u.y,x=l.y;t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(m,x)),t.isClosed=!0;let v=!0;for(let S=0,b=t.points.length;S<b;S++)t.points[S].roundness=f[S],S>0&&f[S]!==f[S-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=xt.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...n,type:"RectangleGeometry"}})}};var If=require("three"),Lf=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 If.SphereBufferGeometry(.5*t,o,i,s,a,c,p);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};var Of=require("three"),Mf=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 Of.PlaneBufferGeometry(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var io=require("three"),Df=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 Wl(t,e,r,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},Wl=class extends io.BufferGeometry{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,f=(V=0,z=0,M=0)=>new io.Vector3(V,z,M),m=f(),h=f(),[g,x,v]=[e/2,t/2,r/2],A=-x,S=+x,[b,D,w]=[f(A,-g,+v),f(A,-g,-v),f(A,+g,-v)],y=(V,z=!1)=>Math.sin(V-Math.PI/(1+ +z)),L=(V,z=!1)=>Math.cos(V-Math.PI/(1+ +z));w.y=Math.sin(o)*e-g;let T=Math.cos(o)*e-v,I=b.z-l;o<=d?(w.z=Math.min(T,I),w.z==I&&(w.y-=(T-I)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-l),m.subVectors(b,D),h.subVectors(w,D);let C=Math.min(m.length(),h.length())*i/100,N=C*Math.tan(o/2),k=C/Math.cos(o/2),W=m.clone().normalize().add(h.normalize()).setLength(k).add(D);m.set(0,y(o,!0),L(o,!0)),u.push([w,m.clone()]);let ne=(Math.PI-o)/s;for(let V=0;V<=s;V++){let z=d+o+V*ne;m.set(0,Math.sin(z)*N,Math.cos(z)*N),m.add(W),h.set(0,y(z),L(z)),u.push([m.clone(),h.clone()])}u.push([b,f(0,1,0)]);let ue=Math.sin(ne/2)*N*2,se=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[se-1][0].distanceTo(u[se][0]),F=K+ue*s+U;u[0].push(1);for(let V=0;V<=s;V++)u[V+1].push(1-(K+V*ue)/F);u[se].push(0);let[E,B,O]=u[0],G,Q,j;for(let V=1;V<u.length;V++)[G,Q,j]=u[V],a.push(A,E.y,E.z,A,G.y,G.z,S,E.y,E.z,S,E.y,E.z,A,G.y,G.z,S,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,O,0,j,1,O,1,O,0,j,1,j),[E,B,O]=[G,Q,j];this.setAttribute("position",new io.Float32BufferAttribute(a,3)),this.setAttribute("normal",new io.Float32BufferAttribute(c,3)),this.setAttribute("uv",new io.Float32BufferAttribute(p,2))}};var Bf=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 Ae?n.shape:new Ae,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,f=0,m=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 S=0;S<o;S++){let b=h*S,D=f+Math.sin(b)*u,w=m+Math.cos(b)*d;l.addPoint(l.createPoint(D,w))}}else for(let S=0;S<o;S++){let b=f+Math.cos(g)*u,D=m+Math.sin(g)*d;l.addPoint(l.createPoint(b,D)),g+=h,b=f+Math.cos(g)*x,D=m+Math.sin(g)*v,S<=o,l.addPoint(l.createPoint(b,D)),g+=h}l.isClosed=!0;for(let S=0,b=l.points.length;S<b;S++)l.points[S].roundness=i;l.roundness=i,l.update();let A=xt.create({shape:l,parameters:{roundness:i,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...n,type:"StarGeometry"}})}};var Ef=require("three"),va=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},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 Ef.PlaneBufferGeometry(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Gf=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=Jb(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 Jb(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 gi(!0,n,t,e,r,o,i,s,a,c,p,l)}var Rf=require("three"),Ff=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 Rf.TorusKnotBufferGeometry(a,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Vf=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 Ae?n.shape:new Ae,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,f=c.points.length;d<f;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=xt.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};var He=require("three");var eS,ba=new Promise(n=>{eS=n});var zf=require("three");function Sa(n,t){return tS(n)}function tS(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=Ae.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 zf.BufferGeometryLoader().parse(n));let e;try{e=vi(t)}catch(r){console.error(r)}if(!e){let r=Ae.createFromState(pn.defaultData(),100,100);t.shape=r,e=vi(t)}return e}var de;ba.then(n=>{de=n});var Uf=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),jf=new Uint32Array([0,1,2,3]),kf=new Uint8Array([4]),Ht=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&&(de.free_bvh(e),de.free_subdivision_surface(e));try{i=Ht.allocate(n,o)}catch(p){console.error(p,n),i=Ht.allocate({positionWASM:Uf,indexWASM:jf,verticesPerFaceWASM:kf},o)}de.set_destination_refinement_level(i,0),s=Ht.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Ht.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(de.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?a=Ht.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:Sa(n),r,o,i,s;({positions:r,triIndices:s}=Yl(e.getAttribute("position"),e.getIndex()));let a;if(n.type==="CylinderGeometry"&&n.cornerRadius===0&&n.hollow===0&&n.openEnded===!1){let c=n.radialSegments*n.heightSegments*3*2,p=c+n.radialSegments*3;a=[c,p]}return{indices:o,verticesPerFace:i}=Kl(r,s,e,a),{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=Uf,r=jf,o=kf);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,f=l*Float32Array.BYTES_PER_ELEMENT,m=u*Uint32Array.BYTES_PER_ELEMENT,h=de._malloc(d),g=new Float32Array(de.HEAPF32.buffer,h,l),x=new Uint32Array(de.HEAPU32.buffer,h+f,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(S=>S!==1)&&(v=new He.Matrix4().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?de.alloc_subdivision_surface2(h,a,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):de.alloc_subdivision_surface(h,a,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return de._free(h),A}static buildLevel(n,t,e,r,o){let i=o?de.get_mesh_data2(n,t?de.Level.CONTROL:de.Level.REFINED,e,o.elements):de.get_mesh_data(n,t?de.Level.CONTROL:de.Level.REFINED,e),s=8,a=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(4,4+4),p=0,l=de.HEAPU32[a[p]>>2],u=de.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=de.HEAPU32[a[p]>>2],f=de.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=de.HEAPU32[a[p]>>2],h=de.HEAPU32.subarray(m>>2,(m>>2)+c[p]);p++;let g=de.HEAPU32[a[p]>>2],x=de.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new He.BufferGeometry;if(v.setIndex(new He.Uint32BufferAttribute(x,1)),v.setAttribute("position",new He.Float32BufferAttribute(u,3)),v.setAttribute("normal",new He.Float32BufferAttribute(f,3)),t){v.setAttribute("faceMap",new He.Uint32BufferAttribute(h,1));let A=new Float32Array(f.length/3*4).fill(0);v.setAttribute("color",new He.BufferAttribute(A,4))}return de.free_mesh_data(i),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(f),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,de.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=de.get_wireframe_data_for_base_level(n),o=4,i=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),a=0,c=de.HEAPU32[i[a]>>2],p=de.HEAPF32.subarray(c>>2,(c>>2)+s[a]);a++;let l=de.HEAPU32[i[a]>>2],u=de.HEAPU32.subarray(l>>2,(l>>2)+s[a]);if(t===void 0){let d=new He.BufferGeometry;d.setAttribute("position",new He.Float32BufferAttribute(p,3));let f=new Float32Array(p.length);for(let m=0,h=p.length;m<h;)f[m++]=e.r,f[m++]=e.g,f[m++]=e.b;return d.setAttribute("color",new He.BufferAttribute(f,3)),d.setIndex(new He.Uint32BufferAttribute(u,1)),de.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||de.set_destination_refinement_level(n,t);let o=e?de.get_topological_data2(n,r?de.Level.CONTROL:de.Level.REFINED,e.elements):de.get_topological_data(n,r?de.Level.CONTROL:de.Level.REFINED),i=6,s=de.HEAPU32.subarray(o>>2,(o>>2)+i),a=s.subarray(3,3+3),c=0,p=de.HEAPU32[s[c]>>2],l=new Float32Array(de.HEAPF32.subarray(p>>2,(p>>2)+a[c]));c++;let u=de.HEAPU32[s[c]>>2],d=new Uint32Array(de.HEAPU32.subarray(u>>2,(u>>2)+a[c]));c++;let f=de.HEAPU32[s[c]>>2],m=new Uint8Array(de.HEAPU32.subarray(f>>2,(f>>2)+a[c]));return de.free_topological_data(o),{positions:l,indices:d,verticesPerFace:m}}};var Hf=["getX","getY","getZ"];function Yl(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[Hf[d]](l)*a)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[Hf[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 wa=new He.Vector3,ql=new He.Vector3,$l=new He.Vector3,Xl=new He.Vector3;function Kl(n,t,e,r){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let p=0;p<s.length;p+=2)a+=(s[p]-s[(p===0?s.length:p)-2])*(s[p+1]+s[(p===0?s.length:p)-1]);n.length=0;let c=0;if(a<0)for(let p=0;p<s.length;p+=2)n.push(s[p],s[p+1],0),o.push(c++);else for(let p=s.length-2;p>=0;p-=2)n.push(s[p],s[p+1],0),o.push(c++);return i.push(c),{indices:o,verticesPerFace:i}}for(let s=0,a=e.capStartIndex??t.length;s<a;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){wa.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),ql.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),$l.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Xl.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),ql.sub(wa).normalize(),$l.sub(wa).normalize(),Xl.sub(wa).normalize();let c=ql.cross($l).dot(Xl);Math.abs(c)>.005||r&&r.some((p,l)=>l%2===1?!1:s>=r[l]&&s<r[l+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],c=0,p=new Float32Array([e.userData.parameters.depth])[0];for(let l=0,u=0;l<n.length;l+=3,u++)n[l+2]===0&&(s.push(u),c++),n[l+2]===p&&a.push(u);if(e.userData.parameters.extrudeBevelSize===0){let l=a[0];a[0]=a[1],a[1]=l}s.reverse(),o.push(...s,...a),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Zt={};Lc(Zt,{calcBoolean:()=>iS,calcBooleanTopological:()=>nS,freeMeshSet:()=>lS,getMeshSet:()=>sS,transformMeshSet:()=>aS});var rS,Wf=new Promise(n=>{rS=n});var bi=require("three");var ye,Cn;Wf.then(n=>ye=n);function oS(n,t,e){let r,{positions:o,triIndices:i}=Yl(n.getAttribute("position"),n.getIndex()),s;if(t&&e){let{indices:a,verticesPerFace:c}=Kl(o,i,n);s=c.length,r=[];for(let p=0,l=0;p<s;p++){r.push(c[p]);for(let u=0;u<c[p];u++)r.push(a[l++])}}else{let a=i.length;r=Array(a+a/3),s=0;for(let c=0,p=0;p<r.length;)r[p++]=3,s++,r[p++]=i[c++],r[p++]=i[c++],r[p++]=i[c++]}return{positions:o,faceIndices:r,nFaces:s}}function qf(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=ye._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ye.HEAPU32.buffer,i,t):new Float32Array(ye.HEAPF32.buffer,i,t)).set(n,0),i}function $f(n){switch(n){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function nS(n,t){Cn===void 0&&(Cn=ye.init_csg());let e=qf(n),r=ye.csg_calc_topological(Cn,e,n.length,$f(t));ye._free(e);let o=6,i=ye.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,c=ye.HEAPU32[i[a]>>2],p=new Float32Array(ye.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=ye.HEAPU32[i[a]>>2],u=new Uint32Array(ye.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let d=ye.HEAPU32[i[a]>>2],f=new Uint8Array(ye.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return ye.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:f}}function iS(n,t,e,r){Cn===void 0&&(Cn=ye.init_csg());let o=qf(n),i=ye.csg_calc(Cn,o,n.length,r,$f(t));ye._free(o);let s=5,a=ye.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+3),p=0,l=ye.HEAPU32[a[p]>>2],u=ye.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=ye.HEAPU32[a[p]>>2],f=ye.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=c[p];e.setAttribute("position",new bi.Float32BufferAttribute(u,3)),e.setAttribute("normal",new bi.Float32BufferAttribute(f,3));let h=ye.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new bi.Sphere),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},ye.free_mesh_data(i),m}function sS(n,t,e){if(ye===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((x,v)=>x+v,0)+i);for(let x=0,v=0,A=0;x<g.verticesPerFace.length;x++){o[A++]=g.verticesPerFace[x];for(let S=0;S<g.verticesPerFace[x];S++)o[A++]=g.indices[v++]}}else({positions:r,faceIndices:o,nFaces:i}=oS(n,t,e));let s=r.length,a=o.length,c=r.length,p=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,u=c*Float32Array.BYTES_PER_ELEMENT,d=p*Uint32Array.BYTES_PER_ELEMENT,f=ye._malloc(l),m=new Float32Array(ye.HEAPF32.buffer,f,c),h=new Uint32Array(ye.HEAPU32.buffer,f+u,p);return m.set(r,0),h.set(o,0),ye.get_csg_mesh(f,s,f+u,a,i)}function aS(n,t){ye.transform_csg_mesh(n,t.elements)}function lS(n){ye.free_csg_mesh(n)}var Ql={ConeGeometry:cf,CubeGeometry:uf,CylinderGeometry:af,DodecahedronGeometry:df,EllipseGeometry:yf,HelixGeometry:Sf,IcosahedronGeometry:_f,LatheGeometry:Tf,NonParametricGeometry:Af,PolygonGeometry:Cf,PyramidGeometry:Nf,RectangleGeometry:Pf,SphereGeometry:Lf,PlaneGeometry:Mf,BackdropGeometry:Df,StarGeometry:Bf,TextFrameGeometry:va,TorusGeometry:Gf,TorusKnotGeometry:Ff,TriangleGeometry:Vf,VectorGeometry:xt},vi=n=>Ql[n.type].create(n);var ec=require("three");var Ta=require("three");var Zl=require("three");function Qe(n,t){return t.color(n)}var Jl=n=>"isEntity"in n,gr=n=>"isAbstractMesh"in n,yr=n=>n!==null&&n.objectType==="BooleanObject",Xf=n=>n.objectType==="CombinedCamera";var _a=n=>"objectHelper"in n;function cS(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??Kr.identity)),e&&(n.updateMatrix(),yr(n.parent)&&gr(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 uS(n,t){cS(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function Yf(n,t,e){uS(n,t),t.color!==void 0&&(n.color=Qe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Zl.HemisphereLight)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Zl.HemisphereLight)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Kf(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 Aa=n=>class extends n{hasEntityChild(){return this.children.some(e=>Jl(e))}isDescendantOf(e){e instanceof Ta.Object3D&&(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 Ta.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Jl(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}};var Ue=require("three");var Nn=new Ue.Box3,xr=new Ue.Vector3,vr=new Ue.Vector3,Pn=new Ue.Matrix4,Zf=[new Ue.Vector3(-1,1,1),new Ue.Vector3(-1,-1,1),new Ue.Vector3(1,-1,1),new Ue.Vector3(1,1,1),new Ue.Vector3(-1,1,-1),new Ue.Vector3(-1,-1,-1),new Ue.Vector3(1,-1,-1),new Ue.Vector3(1,1,-1)],pS=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],dS=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function fS(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),f=t.getZ(l);u<o&&(o=u),d<i&&(i=d),f<s&&(s=f),u>a&&(a=u),d>c&&(c=d),f>p&&(p=f)}return n.min.set(o,i,s),n.max.set(a,c,p),n}var Qf=(n,t,e)=>{if(gr(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?xr.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(fS(Nn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),Nn.getCenter(xr)),n.forceComputeSize?Nn.getSize(vr).multiplyScalar(.5):vr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(_a(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");Nn.setFromArray(r.array),Nn.getCenter(xr),Nn.getSize(vr).multiplyScalar(.5)}else xr.setScalar(0),vr.setScalar(0);Pn.copy(t).multiply(n.matrixWorld),vr.x===0&&vr.y===0&&vr.z===0?e.push(new Ue.Vector3(xr.x,xr.y,xr.z).applyMatrix4(Pn)):Zf.forEach(r=>{e.push(r.clone().multiply(vr).add(xr).applyMatrix4(Pn))})},Si=class extends Ue.Box3{constructor(){super(...arguments);this.matrix=new Ue.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(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 Ue.Matrix4().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&&Qf(s,r,i)}):Qf(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(Pn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(vr).multiplyScalar(.5),this.getCenter(xr),Pn.copy(this.matrix).setPosition(xr),this.vertices=Zf.map(e=>e.clone().multiply(vr).applyMatrix4(Pn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=pS.map(([e,r])=>new Ue.Line3(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ue.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=dS.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var br=n=>"isEntity"in n,Jf=n=>"isAbstractMesh"in n,Wt=n=>class extends Aa(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new ec.Matrix4;this._singleBBox=new Si;this._recursiveBBox=new Si;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=>{br(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)br(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)br(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)br(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new ec.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)br(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 nn(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 nn(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}};var Ba=require("three");var er=require("three");var wi=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var em=require("three"),it=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=em.MathUtils.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 it&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var tc=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},tt=new tc;var rc=require("three");var tm=require("three"),le=class extends it{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=tm.MathUtils.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 Ie=class extends le{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 st=class extends Ie{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof rc.Vector2?e:new rc.Vector2(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};var oc=require("three");var ut=class extends Ie{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof oc.Vector3?e:new oc.Vector3(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};var rm=require("three"),rt=class extends rm.Color{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}};var qt=class extends Ie{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof rt?e:new rt(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var mS=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,om=/[a-z_0-9]+/gi,X=class extends le{constructor(e,r,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,s){let a,c=0,p=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let l=[];for(;a=om.exec(this.src);)l.push(a);for(let u=0;u<l.length;u++){let d=l[u],f=d[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&tt.containsKeyword(f)){let g=this.keywords[f];if(!g){let x=tt.getKeywordData(f);x.cache&&(g=e.keywords[f]),g=g||tt.getKeyword(f,e),x.cache&&(e.keywords[f]=g)}h=g.build(e)}f!==h&&p[d.index+c-1]!=="."&&(p=p.substring(0,d.index+c)+h+p.substring(d.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&tt.contains(h)&&e.include(tt.get(h))}return r==="source"?p:this.isMethod?(this.isInterface||e.include(this,void 0,p),this.name):e.format("( "+p+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=mS.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(om);if(a){let c=0;for(;c<a.length;){let p=a[c++],l;p==="in"||p==="out"||p==="inout"?l=a[c++]:(l=p,p="");let u=a[c++];this.inputs.push({name:u,type:l,qualifier:p})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var hS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,nc=class extends le{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||nc.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let a,c,p="",l=hS.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],a=l[2],p=l[3]):(a=this.src,c="f"),this.name=a,this.type=c,this.value=p}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}},Se=nc;Se.PI="PI",Se.PI2="PI2",Se.RECIPROCAL_PI="RECIPROCAL_PI",Se.RECIPROCAL_PI2="RECIPROCAL_PI2",Se.LOG2="LOG2",Se.EPSILON="EPSILON";var gS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
-
)*?)}`,"gim"),
|
|
3
|
-
`)),sRGBToLinear:new
|
|
4
|
-
`)),LinearTosRGB:new
|
|
5
|
-
`))},
|
|
1
|
+
var pv=Object.create;var hs=Object.defineProperty;var fv=Object.getOwnPropertyDescriptor;var dv=Object.getOwnPropertyNames;var hv=Object.getPrototypeOf,mv=Object.prototype.hasOwnProperty;var yc=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),Dp=(r,t)=>{for(var e in t)hs(r,e,{get:t[e],enumerable:!0})},Bp=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of dv(t))!mv.call(r,o)&&o!==e&&hs(r,o,{get:()=>t[o],enumerable:!(n=fv(t,o))||n.enumerable});return r};var Fp=(r,t,e)=>(e=r!=null?pv(hv(r)):{},Bp(t||!r||!r.__esModule?hs(e,"default",{value:r,enumerable:!0}):e,r)),gv=r=>Bp(hs({},"__esModule",{value:!0}),r);var Xu=yc(()=>{});var g0=yc((cc,m0)=>{(function(r,t){typeof cc=="object"&&typeof m0<"u"?t(cc):typeof define=="function"&&define.amd?define(["exports"],t):t((r=typeof globalThis<"u"?globalThis:r||self).SVDJS={})})(cc,function(r){"use strict";r.SVD=function(t,e,n,o,i){if(e=e===void 0||e,n=n===void 0||n,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var a,s,l,u,c,p,f,d,h,m,g,v,x=t[0].length,S=t.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],b=[],_=[],T=e==="f"?S:x,y=m=f=0;y<S;y++)b[y]=new Array(T).fill(0);for(y=0;y<x;y++)_[y]=new Array(x).fill(0);var I,A=new Array(x).fill(0);for(y=0;y<S;y++)for(a=0;a<x;a++)b[y][a]=t[y][a];for(y=0;y<x;y++){for(w[y]=f,h=0,l=y+1,a=y;a<S;a++)h+=Math.pow(b[a][y],2);if(h<i)f=0;else for(d=(p=b[y][y])*(f=p<0?Math.sqrt(h):-Math.sqrt(h))-h,b[y][y]=p-f,a=l;a<x;a++){for(h=0,s=y;s<S;s++)h+=b[s][y]*b[s][a];for(p=h/d,s=y;s<S;s++)b[s][a]=b[s][a]+p*b[s][y]}for(A[y]=f,h=0,a=l;a<x;a++)h+=Math.pow(b[y][a],2);if(h<i)f=0;else{for(d=(p=b[y][y+1])*(f=p<0?Math.sqrt(h):-Math.sqrt(h))-h,b[y][y+1]=p-f,a=l;a<x;a++)w[a]=b[y][a]/d;for(a=l;a<S;a++){for(h=0,s=l;s<x;s++)h+=b[a][s]*b[y][s];for(s=l;s<x;s++)b[a][s]=b[a][s]+h*w[s]}}m<(g=Math.abs(A[y])+Math.abs(w[y]))&&(m=g)}if(n)for(y=x-1;0<=y;y--){if(f!==0){for(d=b[y][y+1]*f,a=l;a<x;a++)_[a][y]=b[y][a]/d;for(a=l;a<x;a++){for(h=0,s=l;s<x;s++)h+=b[y][s]*_[s][a];for(s=l;s<x;s++)_[s][a]=_[s][a]+h*_[s][y]}}for(a=l;a<x;a++)_[y][a]=0,_[a][y]=0;_[y][y]=1,f=w[y],l=y}if(e){if(e==="f")for(y=x;y<S;y++){for(a=x;a<S;a++)b[y][a]=0;b[y][y]=1}for(y=x-1;0<=y;y--){for(l=y+1,f=A[y],a=l;a<T;a++)b[y][a]=0;if(f!==0){for(d=b[y][y]*f,a=l;a<T;a++){for(h=0,s=l;s<S;s++)h+=b[s][y]*b[s][a];for(p=h/d,s=y;s<S;s++)b[s][a]=b[s][a]+p*b[s][y]}for(a=y;a<S;a++)b[a][y]=b[a][y]/f}else for(a=y;a<S;a++)b[a][y]=0;b[y][y]=b[y][y]+1}}for(o*=m,s=x-1;0<=s;s--)for(var O=0;O<50;O++){for(I=!1,l=s;0<=l;l--){if(Math.abs(w[l])<=o){I=!0;break}if(Math.abs(A[l-1])<=o)break}if(!I){for(c=0,u=l-(h=1),y=l;y<s+1&&(p=h*w[y],w[y]=c*w[y],!(Math.abs(p)<=o));y++)if(f=A[y],A[y]=Math.sqrt(p*p+f*f),c=f/(d=A[y]),h=-p/d,e)for(a=0;a<S;a++)g=b[a][u],v=b[a][y],b[a][u]=g*c+v*h,b[a][y]=-g*h+v*c}if(v=A[s],l===s){if(v<0&&(A[s]=-v,n))for(a=0;a<x;a++)_[a][s]=-_[a][s];break}for(m=A[l],p=(((g=A[s-1])-v)*(g+v)+((f=w[s-1])-(d=w[s]))*(f+d))/(2*d*g),f=Math.sqrt(p*p+1),p=((m-v)*(m+v)+d*(g/(p<0?p-f:p+f)-d))/m,y=l+(h=c=1);y<s+1;y++){if(f=w[y],g=A[y],d=h*f,f*=c,v=Math.sqrt(p*p+d*d),p=m*(c=p/(w[y-1]=v))+f*(h=d/v),f=-m*h+f*c,d=g*h,g*=c,n)for(a=0;a<x;a++)m=_[a][y-1],v=_[a][y],_[a][y-1]=m*c+v*h,_[a][y]=-m*h+v*c;if(v=Math.sqrt(p*p+d*d),p=(c=p/(A[y-1]=v))*f+(h=d/v)*g,m=-h*f+c*g,e)for(a=0;a<S;a++)g=b[a][y-1],v=b[a][y],b[a][y-1]=g*c+v*h,b[a][y]=-g*h+v*c}w[l]=0,w[s]=p,A[s]=m}for(y=0;y<x;y++)A[y]<o&&(A[y]=0);return{u:b,q:A,v:_}},r.VERSION="1.1.1",Object.defineProperty(r,"__esModule",{value:!0})})});var N0=yc(pc=>{(function(){"use strict";var r=function(){this.init()};r.prototype={init:function(){var c=this||t;return c._counter=1e3,c._html5AudioPool=[],c.html5PoolSize=10,c._codecs={},c._howls=[],c._muted=!1,c._volume=1,c._canPlayEvent="canplaythrough",c._navigator=typeof window<"u"&&window.navigator?window.navigator:null,c.masterGain=null,c.noAudio=!1,c.usingWebAudio=!0,c.autoSuspend=!0,c.ctx=null,c.autoUnlock=!0,c._setup(),c},volume:function(c){var p=this||t;if(c=parseFloat(c),p.ctx||u(),typeof c<"u"&&c>=0&&c<=1){if(p._volume=c,p._muted)return p;p.usingWebAudio&&p.masterGain.gain.setValueAtTime(c,t.ctx.currentTime);for(var f=0;f<p._howls.length;f++)if(!p._howls[f]._webAudio)for(var d=p._howls[f]._getSoundIds(),h=0;h<d.length;h++){var m=p._howls[f]._soundById(d[h]);m&&m._node&&(m._node.volume=m._volume*c)}return p}return p._volume},mute:function(c){var p=this||t;p.ctx||u(),p._muted=c,p.usingWebAudio&&p.masterGain.gain.setValueAtTime(c?0:p._volume,t.ctx.currentTime);for(var f=0;f<p._howls.length;f++)if(!p._howls[f]._webAudio)for(var d=p._howls[f]._getSoundIds(),h=0;h<d.length;h++){var m=p._howls[f]._soundById(d[h]);m&&m._node&&(m._node.muted=c?!0:m._muted)}return p},stop:function(){for(var c=this||t,p=0;p<c._howls.length;p++)c._howls[p].stop();return c},unload:function(){for(var c=this||t,p=c._howls.length-1;p>=0;p--)c._howls[p].unload();return c.usingWebAudio&&c.ctx&&typeof c.ctx.close<"u"&&(c.ctx.close(),c.ctx=null,u()),c},codecs:function(c){return(this||t)._codecs[c.replace(/^x-/,"")]},_setup:function(){var c=this||t;if(c.state=c.ctx&&c.ctx.state||"suspended",c._autoSuspend(),!c.usingWebAudio)if(typeof Audio<"u")try{var p=new Audio;typeof p.oncanplaythrough>"u"&&(c._canPlayEvent="canplay")}catch{c.noAudio=!0}else c.noAudio=!0;try{var p=new Audio;p.muted&&(c.noAudio=!0)}catch{}return c.noAudio||c._setupCodecs(),c},_setupCodecs:function(){var c=this||t,p=null;try{p=typeof Audio<"u"?new Audio:null}catch{return c}if(!p||typeof p.canPlayType!="function")return c;var f=p.canPlayType("audio/mpeg;").replace(/^no$/,""),d=c._navigator?c._navigator.userAgent:"",h=d.match(/OPR\/([0-6].)/g),m=h&&parseInt(h[0].split("/")[1],10)<33,g=d.indexOf("Safari")!==-1&&d.indexOf("Chrome")===-1,v=d.match(/Version\/(.*?) /),x=g&&v&&parseInt(v[1],10)<15;return c._codecs={mp3:!!(!m&&(f||p.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!f,opus:!!p.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!p.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!p.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(p.canPlayType('audio/wav; codecs="1"')||p.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!p.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!p.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(p.canPlayType("audio/x-m4a;")||p.canPlayType("audio/m4a;")||p.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(p.canPlayType("audio/x-m4b;")||p.canPlayType("audio/m4b;")||p.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(p.canPlayType("audio/x-mp4;")||p.canPlayType("audio/mp4;")||p.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&p.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&p.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!p.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(p.canPlayType("audio/x-flac;")||p.canPlayType("audio/flac;")).replace(/^no$/,"")},c},_unlockAudio:function(){var c=this||t;if(!(c._audioUnlocked||!c.ctx)){c._audioUnlocked=!1,c.autoUnlock=!1,!c._mobileUnloaded&&c.ctx.sampleRate!==44100&&(c._mobileUnloaded=!0,c.unload()),c._scratchBuffer=c.ctx.createBuffer(1,1,22050);var p=function(f){for(;c._html5AudioPool.length<c.html5PoolSize;)try{var d=new Audio;d._unlocked=!0,c._releaseHtml5Audio(d)}catch{c.noAudio=!0;break}for(var h=0;h<c._howls.length;h++)if(!c._howls[h]._webAudio)for(var m=c._howls[h]._getSoundIds(),g=0;g<m.length;g++){var v=c._howls[h]._soundById(m[g]);v&&v._node&&!v._node._unlocked&&(v._node._unlocked=!0,v._node.load())}c._autoResume();var x=c.ctx.createBufferSource();x.buffer=c._scratchBuffer,x.connect(c.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof c.ctx.resume=="function"&&c.ctx.resume(),x.onended=function(){x.disconnect(0),c._audioUnlocked=!0,document.removeEventListener("touchstart",p,!0),document.removeEventListener("touchend",p,!0),document.removeEventListener("click",p,!0),document.removeEventListener("keydown",p,!0);for(var S=0;S<c._howls.length;S++)c._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",p,!0),document.addEventListener("touchend",p,!0),document.addEventListener("click",p,!0),document.addEventListener("keydown",p,!0),c}},_obtainHtml5Audio:function(){var c=this||t;if(c._html5AudioPool.length)return c._html5AudioPool.pop();var p=new Audio().play();return p&&typeof Promise<"u"&&(p instanceof Promise||typeof p.then=="function")&&p.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(c){var p=this||t;return c._unlocked&&p._html5AudioPool.push(c),p},_autoSuspend:function(){var c=this;if(!(!c.autoSuspend||!c.ctx||typeof c.ctx.suspend>"u"||!t.usingWebAudio)){for(var p=0;p<c._howls.length;p++)if(c._howls[p]._webAudio){for(var f=0;f<c._howls[p]._sounds.length;f++)if(!c._howls[p]._sounds[f]._paused)return c}return c._suspendTimer&&clearTimeout(c._suspendTimer),c._suspendTimer=setTimeout(function(){if(!!c.autoSuspend){c._suspendTimer=null,c.state="suspending";var d=function(){c.state="suspended",c._resumeAfterSuspend&&(delete c._resumeAfterSuspend,c._autoResume())};c.ctx.suspend().then(d,d)}},3e4),c}},_autoResume:function(){var c=this;if(!(!c.ctx||typeof c.ctx.resume>"u"||!t.usingWebAudio))return c.state==="running"&&c.ctx.state!=="interrupted"&&c._suspendTimer?(clearTimeout(c._suspendTimer),c._suspendTimer=null):c.state==="suspended"||c.state==="running"&&c.ctx.state==="interrupted"?(c.ctx.resume().then(function(){c.state="running";for(var p=0;p<c._howls.length;p++)c._howls[p]._emit("resume")}),c._suspendTimer&&(clearTimeout(c._suspendTimer),c._suspendTimer=null)):c.state==="suspending"&&(c._resumeAfterSuspend=!0),c}};var t=new r,e=function(c){var p=this;if(!c.src||c.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}p.init(c)};e.prototype={init:function(c){var p=this;return t.ctx||u(),p._autoplay=c.autoplay||!1,p._format=typeof c.format!="string"?c.format:[c.format],p._html5=c.html5||!1,p._muted=c.mute||!1,p._loop=c.loop||!1,p._pool=c.pool||5,p._preload=typeof c.preload=="boolean"||c.preload==="metadata"?c.preload:!0,p._rate=c.rate||1,p._sprite=c.sprite||{},p._src=typeof c.src!="string"?c.src:[c.src],p._volume=c.volume!==void 0?c.volume:1,p._xhr={method:c.xhr&&c.xhr.method?c.xhr.method:"GET",headers:c.xhr&&c.xhr.headers?c.xhr.headers:null,withCredentials:c.xhr&&c.xhr.withCredentials?c.xhr.withCredentials:!1},p._duration=0,p._state="unloaded",p._sounds=[],p._endTimers={},p._queue=[],p._playLock=!1,p._onend=c.onend?[{fn:c.onend}]:[],p._onfade=c.onfade?[{fn:c.onfade}]:[],p._onload=c.onload?[{fn:c.onload}]:[],p._onloaderror=c.onloaderror?[{fn:c.onloaderror}]:[],p._onplayerror=c.onplayerror?[{fn:c.onplayerror}]:[],p._onpause=c.onpause?[{fn:c.onpause}]:[],p._onplay=c.onplay?[{fn:c.onplay}]:[],p._onstop=c.onstop?[{fn:c.onstop}]:[],p._onmute=c.onmute?[{fn:c.onmute}]:[],p._onvolume=c.onvolume?[{fn:c.onvolume}]:[],p._onrate=c.onrate?[{fn:c.onrate}]:[],p._onseek=c.onseek?[{fn:c.onseek}]:[],p._onunlock=c.onunlock?[{fn:c.onunlock}]:[],p._onresume=[],p._webAudio=t.usingWebAudio&&!p._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(p),p._autoplay&&p._queue.push({event:"play",action:function(){p.play()}}),p._preload&&p._preload!=="none"&&p.load(),p},load:function(){var c=this,p=null;if(t.noAudio){c._emit("loaderror",null,"No audio support.");return}typeof c._src=="string"&&(c._src=[c._src]);for(var f=0;f<c._src.length;f++){var d,h;if(c._format&&c._format[f])d=c._format[f];else{if(h=c._src[f],typeof h!="string"){c._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}d=/^data:audio\/([^;,]+);/i.exec(h),d||(d=/\.([^.]+)$/.exec(h.split("?",1)[0])),d&&(d=d[1].toLowerCase())}if(d||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),d&&t.codecs(d)){p=c._src[f];break}}if(!p){c._emit("loaderror",null,"No codec support for selected audio sources.");return}return c._src=p,c._state="loading",window.location.protocol==="https:"&&p.slice(0,5)==="http:"&&(c._html5=!0,c._webAudio=!1),new n(c),c._webAudio&&i(c),c},play:function(c,p){var f=this,d=null;if(typeof c=="number")d=c,c=null;else{if(typeof c=="string"&&f._state==="loaded"&&!f._sprite[c])return null;if(typeof c>"u"&&(c="__default",!f._playLock)){for(var h=0,m=0;m<f._sounds.length;m++)f._sounds[m]._paused&&!f._sounds[m]._ended&&(h++,d=f._sounds[m]._id);h===1?c=null:d=null}}var g=d?f._soundById(d):f._inactiveSound();if(!g)return null;if(d&&!c&&(c=g._sprite||"__default"),f._state!=="loaded"){g._sprite=c,g._ended=!1;var v=g._id;return f._queue.push({event:"play",action:function(){f.play(v)}}),v}if(d&&!g._paused)return p||f._loadQueue("play"),g._id;f._webAudio&&t._autoResume();var x=Math.max(0,g._seek>0?g._seek:f._sprite[c][0]/1e3),S=Math.max(0,(f._sprite[c][0]+f._sprite[c][1])/1e3-x),w=S*1e3/Math.abs(g._rate),b=f._sprite[c][0]/1e3,_=(f._sprite[c][0]+f._sprite[c][1])/1e3;g._sprite=c,g._ended=!1;var T=function(){g._paused=!1,g._seek=x,g._start=b,g._stop=_,g._loop=!!(g._loop||f._sprite[c][2])};if(x>=_){f._ended(g);return}var y=g._node;if(f._webAudio){var I=function(){f._playLock=!1,T(),f._refreshBuffer(g);var N=g._muted||f._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,x,86400):y.bufferSource.noteGrainOn(0,x,S):g._loop?y.bufferSource.start(0,x,86400):y.bufferSource.start(0,x,S),w!==1/0&&(f._endTimers[g._id]=setTimeout(f._ended.bind(f,g),w)),p||setTimeout(function(){f._emit("play",g._id),f._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?I():(f._playLock=!0,f.once("resume",I),f._clearTimer(g._id))}else{var A=function(){y.currentTime=x,y.muted=g._muted||f._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")?(f._playLock=!0,T(),N.then(function(){f._playLock=!1,y._unlocked=!0,p?f._loadQueue():f._emit("play",g._id)}).catch(function(){f._playLock=!1,f._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})):p||(f._playLock=!1,T(),f._emit("play",g._id)),y.playbackRate=g._rate,y.paused){f._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}c!=="__default"||g._loop?f._endTimers[g._id]=setTimeout(f._ended.bind(f,g),w):(f._endTimers[g._id]=function(){f._ended(g),y.removeEventListener("ended",f._endTimers[g._id],!1)},y.addEventListener("ended",f._endTimers[g._id],!1))}catch(P){f._emit("playerror",g._id,P)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=f._src,y.load());var O=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||O)A();else{f._playLock=!0,f._state="loading";var C=function(){f._state="loaded",A(),y.removeEventListener(t._canPlayEvent,C,!1)};y.addEventListener(t._canPlayEvent,C,!1),f._clearTimer(g._id)}}return g._id},pause:function(c){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"pause",action:function(){p.pause(c)}}),p;for(var f=p._getSoundIds(c),d=0;d<f.length;d++){p._clearTimer(f[d]);var h=p._soundById(f[d]);if(h&&!h._paused&&(h._seek=p.seek(f[d]),h._rateSeek=0,h._paused=!0,p._stopFade(f[d]),h._node))if(p._webAudio){if(!h._node.bufferSource)continue;typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)}else(!isNaN(h._node.duration)||h._node.duration===1/0)&&h._node.pause();arguments[1]||p._emit("pause",h?h._id:null)}return p},stop:function(c,p){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"stop",action:function(){f.stop(c)}}),f;for(var d=f._getSoundIds(c),h=0;h<d.length;h++){f._clearTimer(d[h]);var m=f._soundById(d[h]);m&&(m._seek=m._start||0,m._rateSeek=0,m._paused=!0,m._ended=!0,f._stopFade(d[h]),m._node&&(f._webAudio?m._node.bufferSource&&(typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),f._cleanBuffer(m._node)):(!isNaN(m._node.duration)||m._node.duration===1/0)&&(m._node.currentTime=m._start||0,m._node.pause(),m._node.duration===1/0&&f._clearSound(m._node))),p||f._emit("stop",m._id))}return f},mute:function(c,p){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"mute",action:function(){f.mute(c,p)}}),f;if(typeof p>"u")if(typeof c=="boolean")f._muted=c;else return f._muted;for(var d=f._getSoundIds(p),h=0;h<d.length;h++){var m=f._soundById(d[h]);m&&(m._muted=c,m._interval&&f._stopFade(m._id),f._webAudio&&m._node?m._node.gain.setValueAtTime(c?0:m._volume,t.ctx.currentTime):m._node&&(m._node.muted=t._muted?!0:c),f._emit("mute",m._id))}return f},volume:function(){var c=this,p=arguments,f,d;if(p.length===0)return c._volume;if(p.length===1||p.length===2&&typeof p[1]>"u"){var h=c._getSoundIds(),m=h.indexOf(p[0]);m>=0?d=parseInt(p[0],10):f=parseFloat(p[0])}else p.length>=2&&(f=parseFloat(p[0]),d=parseInt(p[1],10));var g;if(typeof f<"u"&&f>=0&&f<=1){if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"volume",action:function(){c.volume.apply(c,p)}}),c;typeof d>"u"&&(c._volume=f),d=c._getSoundIds(d);for(var v=0;v<d.length;v++)g=c._soundById(d[v]),g&&(g._volume=f,p[2]||c._stopFade(d[v]),c._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(f,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=f*t.volume()),c._emit("volume",g._id))}else return g=d?c._soundById(d):c._sounds[0],g?g._volume:0;return c},fade:function(c,p,f,d){var h=this;if(h._state!=="loaded"||h._playLock)return h._queue.push({event:"fade",action:function(){h.fade(c,p,f,d)}}),h;c=Math.min(Math.max(0,parseFloat(c)),1),p=Math.min(Math.max(0,parseFloat(p)),1),f=parseFloat(f),h.volume(c,d);for(var m=h._getSoundIds(d),g=0;g<m.length;g++){var v=h._soundById(m[g]);if(v){if(d||h._stopFade(m[g]),h._webAudio&&!v._muted){var x=t.ctx.currentTime,S=x+f/1e3;v._volume=c,v._node.gain.setValueAtTime(c,x),v._node.gain.linearRampToValueAtTime(p,S)}h._startFadeInterval(v,c,p,f,m[g],typeof d>"u")}}return h},_startFadeInterval:function(c,p,f,d,h,m){var g=this,v=p,x=f-p,S=Math.abs(x/.01),w=Math.max(4,S>0?d/S:d),b=Date.now();c._fadeTo=f,c._interval=setInterval(function(){var _=(Date.now()-b)/d;b=Date.now(),v+=x*_,v=Math.round(v*100)/100,x<0?v=Math.max(f,v):v=Math.min(f,v),g._webAudio?c._volume=v:g.volume(v,c._id,!0),m&&(g._volume=v),(f<p&&v<=f||f>p&&v>=f)&&(clearInterval(c._interval),c._interval=null,c._fadeTo=null,g.volume(f,c._id),g._emit("fade",c._id))},w)},_stopFade:function(c){var p=this,f=p._soundById(c);return f&&f._interval&&(p._webAudio&&f._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(f._interval),f._interval=null,p.volume(f._fadeTo,c),f._fadeTo=null,p._emit("fade",c)),p},loop:function(){var c=this,p=arguments,f,d,h;if(p.length===0)return c._loop;if(p.length===1)if(typeof p[0]=="boolean")f=p[0],c._loop=f;else return h=c._soundById(parseInt(p[0],10)),h?h._loop:!1;else p.length===2&&(f=p[0],d=parseInt(p[1],10));for(var m=c._getSoundIds(d),g=0;g<m.length;g++)h=c._soundById(m[g]),h&&(h._loop=f,c._webAudio&&h._node&&h._node.bufferSource&&(h._node.bufferSource.loop=f,f&&(h._node.bufferSource.loopStart=h._start||0,h._node.bufferSource.loopEnd=h._stop,c.playing(m[g])&&(c.pause(m[g],!0),c.play(m[g],!0)))));return c},rate:function(){var c=this,p=arguments,f,d;if(p.length===0)d=c._sounds[0]._id;else if(p.length===1){var h=c._getSoundIds(),m=h.indexOf(p[0]);m>=0?d=parseInt(p[0],10):f=parseFloat(p[0])}else p.length===2&&(f=parseFloat(p[0]),d=parseInt(p[1],10));var g;if(typeof f=="number"){if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"rate",action:function(){c.rate.apply(c,p)}}),c;typeof d>"u"&&(c._rate=f),d=c._getSoundIds(d);for(var v=0;v<d.length;v++)if(g=c._soundById(d[v]),g){c.playing(d[v])&&(g._rateSeek=c.seek(d[v]),g._playStart=c._webAudio?t.ctx.currentTime:g._playStart),g._rate=f,c._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(f,t.ctx.currentTime):g._node&&(g._node.playbackRate=f);var x=c.seek(d[v]),S=(c._sprite[g._sprite][0]+c._sprite[g._sprite][1])/1e3-x,w=S*1e3/Math.abs(g._rate);(c._endTimers[d[v]]||!g._paused)&&(c._clearTimer(d[v]),c._endTimers[d[v]]=setTimeout(c._ended.bind(c,g),w)),c._emit("rate",g._id)}}else return g=c._soundById(d),g?g._rate:c._rate;return c},seek:function(){var c=this,p=arguments,f,d;if(p.length===0)c._sounds.length&&(d=c._sounds[0]._id);else if(p.length===1){var h=c._getSoundIds(),m=h.indexOf(p[0]);m>=0?d=parseInt(p[0],10):c._sounds.length&&(d=c._sounds[0]._id,f=parseFloat(p[0]))}else p.length===2&&(f=parseFloat(p[0]),d=parseInt(p[1],10));if(typeof d>"u")return 0;if(typeof f=="number"&&(c._state!=="loaded"||c._playLock))return c._queue.push({event:"seek",action:function(){c.seek.apply(c,p)}}),c;var g=c._soundById(d);if(g)if(typeof f=="number"&&f>=0){var v=c.playing(d);v&&c.pause(d,!0),g._seek=f,g._ended=!1,c._clearTimer(d),!c._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=f);var x=function(){v&&c.play(d,!0),c._emit("seek",d)};if(v&&!c._webAudio){var S=function(){c._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(c._webAudio){var w=c.playing(d)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+w*Math.abs(g._rate))}else return g._node.currentTime;return c},playing:function(c){var p=this;if(typeof c=="number"){var f=p._soundById(c);return f?!f._paused:!1}for(var d=0;d<p._sounds.length;d++)if(!p._sounds[d]._paused)return!0;return!1},duration:function(c){var p=this,f=p._duration,d=p._soundById(c);return d&&(f=p._sprite[d._sprite][1]/1e3),f},state:function(){return this._state},unload:function(){for(var c=this,p=c._sounds,f=0;f<p.length;f++)p[f]._paused||c.stop(p[f]._id),c._webAudio||(c._clearSound(p[f]._node),p[f]._node.removeEventListener("error",p[f]._errorFn,!1),p[f]._node.removeEventListener(t._canPlayEvent,p[f]._loadFn,!1),p[f]._node.removeEventListener("ended",p[f]._endFn,!1),t._releaseHtml5Audio(p[f]._node)),delete p[f]._node,c._clearTimer(p[f]._id);var d=t._howls.indexOf(c);d>=0&&t._howls.splice(d,1);var h=!0;for(f=0;f<t._howls.length;f++)if(t._howls[f]._src===c._src||c._src.indexOf(t._howls[f]._src)>=0){h=!1;break}return o&&h&&delete o[c._src],t.noAudio=!1,c._state="unloaded",c._sounds=[],c=null,null},on:function(c,p,f,d){var h=this,m=h["_on"+c];return typeof p=="function"&&m.push(d?{id:f,fn:p,once:d}:{id:f,fn:p}),h},off:function(c,p,f){var d=this,h=d["_on"+c],m=0;if(typeof p=="number"&&(f=p,p=null),p||f)for(m=0;m<h.length;m++){var g=f===h[m].id;if(p===h[m].fn&&g||!p&&g){h.splice(m,1);break}}else if(c)d["_on"+c]=[];else{var v=Object.keys(d);for(m=0;m<v.length;m++)v[m].indexOf("_on")===0&&Array.isArray(d[v[m]])&&(d[v[m]]=[])}return d},once:function(c,p,f){var d=this;return d.on(c,p,f,1),d},_emit:function(c,p,f){for(var d=this,h=d["_on"+c],m=h.length-1;m>=0;m--)(!h[m].id||h[m].id===p||c==="load")&&(setTimeout(function(g){g.call(this,p,f)}.bind(d,h[m].fn),0),h[m].once&&d.off(c,h[m].fn,h[m].id));return d._loadQueue(c),d},_loadQueue:function(c){var p=this;if(p._queue.length>0){var f=p._queue[0];f.event===c&&(p._queue.shift(),p._loadQueue()),c||f.action()}return p},_ended:function(c){var p=this,f=c._sprite;if(!p._webAudio&&c._node&&!c._node.paused&&!c._node.ended&&c._node.currentTime<c._stop)return setTimeout(p._ended.bind(p,c),100),p;var d=!!(c._loop||p._sprite[f][2]);if(p._emit("end",c._id),!p._webAudio&&d&&p.stop(c._id,!0).play(c._id),p._webAudio&&d){p._emit("play",c._id),c._seek=c._start||0,c._rateSeek=0,c._playStart=t.ctx.currentTime;var h=(c._stop-c._start)*1e3/Math.abs(c._rate);p._endTimers[c._id]=setTimeout(p._ended.bind(p,c),h)}return p._webAudio&&!d&&(c._paused=!0,c._ended=!0,c._seek=c._start||0,c._rateSeek=0,p._clearTimer(c._id),p._cleanBuffer(c._node),t._autoSuspend()),!p._webAudio&&!d&&p.stop(c._id,!0),p},_clearTimer:function(c){var p=this;if(p._endTimers[c]){if(typeof p._endTimers[c]!="function")clearTimeout(p._endTimers[c]);else{var f=p._soundById(c);f&&f._node&&f._node.removeEventListener("ended",p._endTimers[c],!1)}delete p._endTimers[c]}return p},_soundById:function(c){for(var p=this,f=0;f<p._sounds.length;f++)if(c===p._sounds[f]._id)return p._sounds[f];return null},_inactiveSound:function(){var c=this;c._drain();for(var p=0;p<c._sounds.length;p++)if(c._sounds[p]._ended)return c._sounds[p].reset();return new n(c)},_drain:function(){var c=this,p=c._pool,f=0,d=0;if(!(c._sounds.length<p)){for(d=0;d<c._sounds.length;d++)c._sounds[d]._ended&&f++;for(d=c._sounds.length-1;d>=0;d--){if(f<=p)return;c._sounds[d]._ended&&(c._webAudio&&c._sounds[d]._node&&c._sounds[d]._node.disconnect(0),c._sounds.splice(d,1),f--)}}},_getSoundIds:function(c){var p=this;if(typeof c>"u"){for(var f=[],d=0;d<p._sounds.length;d++)f.push(p._sounds[d]._id);return f}else return[c]},_refreshBuffer:function(c){var p=this;return c._node.bufferSource=t.ctx.createBufferSource(),c._node.bufferSource.buffer=o[p._src],c._panner?c._node.bufferSource.connect(c._panner):c._node.bufferSource.connect(c._node),c._node.bufferSource.loop=c._loop,c._loop&&(c._node.bufferSource.loopStart=c._start||0,c._node.bufferSource.loopEnd=c._stop||0),c._node.bufferSource.playbackRate.setValueAtTime(c._rate,t.ctx.currentTime),p},_cleanBuffer:function(c){var p=this,f=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&c.bufferSource&&(c.bufferSource.onended=null,c.bufferSource.disconnect(0),f))try{c.bufferSource.buffer=t._scratchBuffer}catch{}return c.bufferSource=null,p},_clearSound:function(c){var p=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);p||(c.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var n=function(c){this._parent=c,this.init()};n.prototype={init:function(){var c=this,p=c._parent;return c._muted=p._muted,c._loop=p._loop,c._volume=p._volume,c._rate=p._rate,c._seek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,p._sounds.push(c),c.create(),c},create:function(){var c=this,p=c._parent,f=t._muted||c._muted||c._parent._muted?0:c._volume;return p._webAudio?(c._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),c._node.gain.setValueAtTime(f,t.ctx.currentTime),c._node.paused=!0,c._node.connect(t.masterGain)):t.noAudio||(c._node=t._obtainHtml5Audio(),c._errorFn=c._errorListener.bind(c),c._node.addEventListener("error",c._errorFn,!1),c._loadFn=c._loadListener.bind(c),c._node.addEventListener(t._canPlayEvent,c._loadFn,!1),c._endFn=c._endListener.bind(c),c._node.addEventListener("ended",c._endFn,!1),c._node.src=p._src,c._node.preload=p._preload===!0?"auto":p._preload,c._node.volume=f*t.volume(),c._node.load()),c},reset:function(){var c=this,p=c._parent;return c._muted=p._muted,c._loop=p._loop,c._volume=p._volume,c._rate=p._rate,c._seek=0,c._rateSeek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,c},_errorListener:function(){var c=this;c._parent._emit("loaderror",c._id,c._node.error?c._node.error.code:0),c._node.removeEventListener("error",c._errorFn,!1)},_loadListener:function(){var c=this,p=c._parent;p._duration=Math.ceil(c._node.duration*10)/10,Object.keys(p._sprite).length===0&&(p._sprite={__default:[0,p._duration*1e3]}),p._state!=="loaded"&&(p._state="loaded",p._emit("load"),p._loadQueue()),c._node.removeEventListener(t._canPlayEvent,c._loadFn,!1)},_endListener:function(){var c=this,p=c._parent;p._duration===1/0&&(p._duration=Math.ceil(c._node.duration*10)/10,p._sprite.__default[1]===1/0&&(p._sprite.__default[1]=p._duration*1e3),p._ended(c)),c._node.removeEventListener("ended",c._endFn,!1)}};var o={},i=function(c){var p=c._src;if(o[p]){c._duration=o[p].duration,l(c);return}if(/^data:[^;]+;base64,/.test(p)){for(var f=atob(p.split(",")[1]),d=new Uint8Array(f.length),h=0;h<f.length;++h)d[h]=f.charCodeAt(h);s(d.buffer,c)}else{var m=new XMLHttpRequest;m.open(c._xhr.method,p,!0),m.withCredentials=c._xhr.withCredentials,m.responseType="arraybuffer",c._xhr.headers&&Object.keys(c._xhr.headers).forEach(function(g){m.setRequestHeader(g,c._xhr.headers[g])}),m.onload=function(){var g=(m.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="3"){c._emit("loaderror",null,"Failed loading audio file with status: "+m.status+".");return}s(m.response,c)},m.onerror=function(){c._webAudio&&(c._html5=!0,c._webAudio=!1,c._sounds=[],delete o[p],c.load())},a(m)}},a=function(c){try{c.send()}catch{c.onerror()}},s=function(c,p){var f=function(){p._emit("loaderror",null,"Decoding audio data failed.")},d=function(h){h&&p._sounds.length>0?(o[p._src]=h,l(p,h)):f()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(c).then(d).catch(f):t.ctx.decodeAudioData(c,d,f)},l=function(c,p){p&&!c._duration&&(c._duration=p.duration),Object.keys(c._sprite).length===0&&(c._sprite={__default:[0,c._duration*1e3]}),c._state!=="loaded"&&(c._state="loaded",c._emit("load"),c._loadQueue())},u=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var c=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),p=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),f=p?parseInt(p[1],10):null;if(c&&f&&f<9){var d=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!d&&(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 pc<"u"&&(pc.Howler=t,pc.Howl=e),typeof global<"u"?(global.HowlerGlobal=r,global.Howler=t,global.Howl=e,global.Sound=n):typeof window<"u"&&(window.HowlerGlobal=r,window.Howler=t,window.Howl=e,window.Sound=n)})();(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 n=e._howls.length-1;n>=0;n--)e._howls[n].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,n){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,n=typeof n!="number"?o._pos[2]:n,typeof t=="number")o._pos=[t,e,n],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,n,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var l=s._orientation;if(e=typeof e!="number"?l[1]:e,n=typeof n!="number"?l[2]:n,o=typeof o!="number"?l[3]:o,i=typeof i!="number"?l[4]:i,a=typeof a!="number"?l[5]:a,typeof t=="number")s._orientation=[t,e,n,o,i,a],typeof s.ctx.listener.forwardX<"u"?(s.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(n,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(t,e,n,o,i,a);else return l;return s},Howl.prototype.init=function(t){return function(e){var n=this;return n._orientation=e.orientation||[1,0,0],n._stereo=e.stereo||null,n._pos=e.pos||null,n._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},n._onstereo=e.onstereo?[{fn:e.onstereo}]:[],n._onpos=e.onpos?[{fn:e.onpos}]:[],n._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var n=this;if(!n._webAudio)return n;if(n._state!=="loaded")return n._queue.push({event:"stereo",action:function(){n.stereo(t,e)}}),n;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")n._stereo=t,n._pos=[t,0,0];else return n._stereo;for(var i=n._getSoundIds(e),a=0;a<i.length;a++){var s=n._soundById(i[a]);if(s)if(typeof t=="number")s._stereo=t,s._pos=[t,0,0],s._node&&(s._pannerAttr.panningModel="equalpower",(!s._panner||!s._panner.pan)&&r(s,o),o==="spatial"?typeof s._panner.positionX<"u"?(s._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),s._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),s._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):s._panner.setPosition(t,0,0):s._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),n._emit("stereo",s._id);else return s._stereo}return n},Howl.prototype.pos=function(t,e,n,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,n,o)}}),i;if(e=typeof e!="number"?0:e,n=typeof n!="number"?-.5:n,typeof o>"u")if(typeof t=="number")i._pos=[t,e,n];else return i._pos;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._pos=[t,e,n],l._node&&((!l._panner||l._panner.pan)&&r(l,"spatial"),typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(n,Howler.ctx.currentTime)):l._panner.setPosition(t,e,n)),i._emit("pos",l._id);else return l._pos}return i},Howl.prototype.orientation=function(t,e,n,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,n,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,n=typeof n!="number"?i._orientation[2]:n,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,n];else return i._orientation;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._orientation=[t,e,n],l._node&&(l._panner||(l._pos||(l._pos=i._pos||[0,0,-.5]),r(l,"spatial")),typeof l._panner.orientationX<"u"?(l._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.orientationZ.setValueAtTime(n,Howler.ctx.currentTime)):l._panner.setOrientation(t,e,n)),i._emit("orientation",l._id);else return l._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,n,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")n=e[0],typeof o>"u"&&(n.pannerAttr||(n.pannerAttr={coneInnerAngle:n.coneInnerAngle,coneOuterAngle:n.coneOuterAngle,coneOuterGain:n.coneOuterGain,distanceModel:n.distanceModel,maxDistance:n.maxDistance,refDistance:n.refDistance,rolloffFactor:n.rolloffFactor,panningModel:n.panningModel}),t._pannerAttr={coneInnerAngle:typeof n.pannerAttr.coneInnerAngle<"u"?n.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof n.pannerAttr.coneOuterAngle<"u"?n.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof n.pannerAttr.coneOuterGain<"u"?n.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof n.pannerAttr.distanceModel<"u"?n.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof n.pannerAttr.maxDistance<"u"?n.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof n.pannerAttr.refDistance<"u"?n.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof n.pannerAttr.rolloffFactor<"u"?n.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof n.pannerAttr.panningModel<"u"?n.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(n=e[0],o=parseInt(e[1],10));for(var a=t._getSoundIds(o),s=0;s<a.length;s++)if(i=t._soundById(a[s]),i){var l=i._pannerAttr;l={coneInnerAngle:typeof n.coneInnerAngle<"u"?n.coneInnerAngle:l.coneInnerAngle,coneOuterAngle:typeof n.coneOuterAngle<"u"?n.coneOuterAngle:l.coneOuterAngle,coneOuterGain:typeof n.coneOuterGain<"u"?n.coneOuterGain:l.coneOuterGain,distanceModel:typeof n.distanceModel<"u"?n.distanceModel:l.distanceModel,maxDistance:typeof n.maxDistance<"u"?n.maxDistance:l.maxDistance,refDistance:typeof n.refDistance<"u"?n.refDistance:l.refDistance,rolloffFactor:typeof n.rolloffFactor<"u"?n.rolloffFactor:l.rolloffFactor,panningModel:typeof n.panningModel<"u"?n.panningModel:l.panningModel};var u=i._panner;u?(u.coneInnerAngle=l.coneInnerAngle,u.coneOuterAngle=l.coneOuterAngle,u.coneOuterGain=l.coneOuterGain,u.distanceModel=l.distanceModel,u.maxDistance=l.maxDistance,u.refDistance=l.refDistance,u.rolloffFactor=l.rolloffFactor,u.panningModel=l.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),r(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,n=e._parent;e._orientation=n._orientation,e._stereo=n._stereo,e._pos=n._pos,e._pannerAttr=n._pannerAttr,t.call(this),e._stereo?n.stereo(e._stereo):e._pos&&n.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,n=e._parent;return e._orientation=n._orientation,e._stereo=n._stereo,e._pos=n._pos,e._pannerAttr=n._pannerAttr,e._stereo?n.stereo(e._stereo):e._pos?n.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,n._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var r=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 aL={};Dp(aL,{default:()=>hc});module.exports=gv(aL);var mc=require("three");function to(r,t){return Object.setPrototypeOf(r,t),r}function Rp(r){return Array.isArray(r)?r:[r]}var yv=typeof global=="object"&&global&&global.Object===Object&&global,ms=yv;var vv=typeof self=="object"&&self&&self.Object===Object&&self,xv=ms||vv||Function("return this")(),it=xv;var bv=it.Symbol,Pt=bv;var kp=Object.prototype,Sv=kp.hasOwnProperty,wv=kp.toString,Wi=Pt?Pt.toStringTag:void 0;function Tv(r){var t=Sv.call(r,Wi),e=r[Wi];try{r[Wi]=void 0;var n=!0}catch{}var o=wv.call(r);return n&&(t?r[Wi]=e:delete r[Wi]),o}var Gp=Tv;var Cv=Object.prototype,Av=Cv.toString;function _v(r){return Av.call(r)}var Up=_v;var Iv="[object Null]",Ov="[object Undefined]",Vp=Pt?Pt.toStringTag:void 0;function Lv(r){return r==null?r===void 0?Ov:Iv:Vp&&Vp in Object(r)?Gp(r):Up(r)}var $t=Lv;function Nv(r){return r!=null&&typeof r=="object"}var It=Nv;var Pv="[object Symbol]";function Mv(r){return typeof r=="symbol"||It(r)&&$t(r)==Pv}var No=Mv;function Ev(r,t){for(var e=-1,n=r==null?0:r.length,o=Array(n);++e<n;)o[e]=t(r[e],e,r);return o}var gs=Ev;var Dv=Array.isArray,Xe=Dv;var Bv=1/0,zp=Pt?Pt.prototype:void 0,jp=zp?zp.toString:void 0;function Hp(r){if(typeof r=="string")return r;if(Xe(r))return gs(r,Hp)+"";if(No(r))return jp?jp.call(r):"";var t=r+"";return t=="0"&&1/r==-Bv?"-0":t}var Wp=Hp;function Fv(r){var t=typeof r;return r!=null&&(t=="object"||t=="function")}var st=Fv;function Rv(r){return r}var ys=Rv;var kv="[object AsyncFunction]",Gv="[object Function]",Uv="[object GeneratorFunction]",Vv="[object Proxy]";function zv(r){if(!st(r))return!1;var t=$t(r);return t==Gv||t==Uv||t==kv||t==Vv}var Po=zv;var jv=it["__core-js_shared__"],vs=jv;var qp=function(){var r=/[^.]+$/.exec(vs&&vs.keys&&vs.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function Hv(r){return!!qp&&qp in r}var Xp=Hv;var Wv=Function.prototype,qv=Wv.toString;function Xv(r){if(r!=null){try{return qv.call(r)}catch{}try{return r+""}catch{}}return""}var ln=Xv;var Yv=/[\\^$.*+?()[\]{}|]/g,$v=/^\[object .+?Constructor\]$/,Kv=Function.prototype,Zv=Object.prototype,Qv=Kv.toString,Jv=Zv.hasOwnProperty,ex=RegExp("^"+Qv.call(Jv).replace(Yv,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tx(r){if(!st(r)||Xp(r))return!1;var t=Po(r)?ex:$v;return t.test(ln(r))}var Yp=tx;function rx(r,t){return r?.[t]}var $p=rx;function nx(r,t){var e=$p(r,t);return Yp(e)?e:void 0}var Rt=nx;var ox=Rt(it,"WeakMap"),xs=ox;var Kp=Object.create,ix=function(){function r(){}return function(t){if(!st(t))return{};if(Kp)return Kp(t);r.prototype=t;var e=new r;return r.prototype=void 0,e}}(),Zp=ix;function ax(r,t,e){switch(e.length){case 0:return r.call(t);case 1:return r.call(t,e[0]);case 2:return r.call(t,e[0],e[1]);case 3:return r.call(t,e[0],e[1],e[2])}return r.apply(t,e)}var Qp=ax;function sx(r,t){var e=-1,n=r.length;for(t||(t=Array(n));++e<n;)t[e]=r[e];return t}var bs=sx;var lx=800,cx=16,ux=Date.now;function px(r){var t=0,e=0;return function(){var n=ux(),o=cx-(n-e);if(e=n,o>0){if(++t>=lx)return arguments[0]}else t=0;return r.apply(void 0,arguments)}}var Jp=px;function fx(r){return function(){return r}}var ef=fx;var dx=function(){try{var r=Rt(Object,"defineProperty");return r({},"",{}),r}catch{}}(),Mo=dx;var hx=Mo?function(r,t){return Mo(r,"toString",{configurable:!0,enumerable:!1,value:ef(t),writable:!0})}:ys,tf=hx;var mx=Jp(tf),Ss=mx;function gx(r,t){for(var e=-1,n=r==null?0:r.length;++e<n&&t(r[e],e,r)!==!1;);return r}var rf=gx;var yx=9007199254740991,vx=/^(?:0|[1-9]\d*)$/;function xx(r,t){var e=typeof r;return t=t??yx,!!t&&(e=="number"||e!="symbol"&&vx.test(r))&&r>-1&&r%1==0&&r<t}var wn=xx;function bx(r,t,e){t=="__proto__"&&Mo?Mo(r,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):r[t]=e}var Eo=bx;function Sx(r,t){return r===t||r!==r&&t!==t}var Tn=Sx;var wx=Object.prototype,Tx=wx.hasOwnProperty;function Cx(r,t,e){var n=r[t];(!(Tx.call(r,t)&&Tn(n,e))||e===void 0&&!(t in r))&&Eo(r,t,e)}var Do=Cx;function Ax(r,t,e,n){var o=!e;e||(e={});for(var i=-1,a=t.length;++i<a;){var s=t[i],l=n?n(e[s],r[s],s,e,r):void 0;l===void 0&&(l=r[s]),o?Eo(e,s,l):Do(e,s,l)}return e}var or=Ax;var nf=Math.max;function _x(r,t,e){return t=nf(t===void 0?r.length-1:t,0),function(){for(var n=arguments,o=-1,i=nf(n.length-t,0),a=Array(i);++o<i;)a[o]=n[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=n[o];return s[t]=e(a),Qp(r,this,s)}}var ws=_x;function Ix(r,t){return Ss(ws(r,t,ys),r+"")}var of=Ix;var Ox=9007199254740991;function Lx(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=Ox}var Bo=Lx;function Nx(r){return r!=null&&Bo(r.length)&&!Po(r)}var Cn=Nx;function Px(r,t,e){if(!st(e))return!1;var n=typeof t;return(n=="number"?Cn(e)&&wn(t,e.length):n=="string"&&t in e)?Tn(e[t],r):!1}var af=Px;function Mx(r){return of(function(t,e){var n=-1,o=e.length,i=o>1?e[o-1]:void 0,a=o>2?e[2]:void 0;for(i=r.length>3&&typeof i=="function"?(o--,i):void 0,a&&af(e[0],e[1],a)&&(i=o<3?void 0:i,o=1),t=Object(t);++n<o;){var s=e[n];s&&r(t,s,n,i)}return t})}var sf=Mx;var Ex=Object.prototype;function Dx(r){var t=r&&r.constructor,e=typeof t=="function"&&t.prototype||Ex;return r===e}var Fo=Dx;function Bx(r,t){for(var e=-1,n=Array(r);++e<r;)n[e]=t(e);return n}var lf=Bx;var Fx="[object Arguments]";function Rx(r){return It(r)&&$t(r)==Fx}var vc=Rx;var cf=Object.prototype,kx=cf.hasOwnProperty,Gx=cf.propertyIsEnumerable,Ux=vc(function(){return arguments}())?vc:function(r){return It(r)&&kx.call(r,"callee")&&!Gx.call(r,"callee")},cn=Ux;function Vx(){return!1}var uf=Vx;var df=typeof exports=="object"&&exports&&!exports.nodeType&&exports,pf=df&&typeof module=="object"&&module&&!module.nodeType&&module,zx=pf&&pf.exports===df,ff=zx?it.Buffer:void 0,jx=ff?ff.isBuffer:void 0,Hx=jx||uf,Ro=Hx;var Wx="[object Arguments]",qx="[object Array]",Xx="[object Boolean]",Yx="[object Date]",$x="[object Error]",Kx="[object Function]",Zx="[object Map]",Qx="[object Number]",Jx="[object Object]",eb="[object RegExp]",tb="[object Set]",rb="[object String]",nb="[object WeakMap]",ob="[object ArrayBuffer]",ib="[object DataView]",ab="[object Float32Array]",sb="[object Float64Array]",lb="[object Int8Array]",cb="[object Int16Array]",ub="[object Int32Array]",pb="[object Uint8Array]",fb="[object Uint8ClampedArray]",db="[object Uint16Array]",hb="[object Uint32Array]",je={};je[ab]=je[sb]=je[lb]=je[cb]=je[ub]=je[pb]=je[fb]=je[db]=je[hb]=!0;je[Wx]=je[qx]=je[ob]=je[Xx]=je[ib]=je[Yx]=je[$x]=je[Kx]=je[Zx]=je[Qx]=je[Jx]=je[eb]=je[tb]=je[rb]=je[nb]=!1;function mb(r){return It(r)&&Bo(r.length)&&!!je[$t(r)]}var hf=mb;function gb(r){return function(t){return r(t)}}var ko=gb;var mf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,qi=mf&&typeof module=="object"&&module&&!module.nodeType&&module,yb=qi&&qi.exports===mf,xc=yb&&ms.process,vb=function(){try{var r=qi&&qi.require&&qi.require("util").types;return r||xc&&xc.binding&&xc.binding("util")}catch{}}(),un=vb;var gf=un&&un.isTypedArray,xb=gf?ko(gf):hf,Ts=xb;var bb=Object.prototype,Sb=bb.hasOwnProperty;function wb(r,t){var e=Xe(r),n=!e&&cn(r),o=!e&&!n&&Ro(r),i=!e&&!n&&!o&&Ts(r),a=e||n||o||i,s=a?lf(r.length,String):[],l=s.length;for(var u in r)(t||Sb.call(r,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||wn(u,l)))&&s.push(u);return s}var Cs=wb;function Tb(r,t){return function(e){return r(t(e))}}var As=Tb;var Cb=As(Object.keys,Object),yf=Cb;var Ab=Object.prototype,_b=Ab.hasOwnProperty;function Ib(r){if(!Fo(r))return yf(r);var t=[];for(var e in Object(r))_b.call(r,e)&&e!="constructor"&&t.push(e);return t}var vf=Ib;function Ob(r){return Cn(r)?Cs(r):vf(r)}var Go=Ob;function Lb(r){var t=[];if(r!=null)for(var e in Object(r))t.push(e);return t}var xf=Lb;var Nb=Object.prototype,Pb=Nb.hasOwnProperty;function Mb(r){if(!st(r))return xf(r);var t=Fo(r),e=[];for(var n in r)n=="constructor"&&(t||!Pb.call(r,n))||e.push(n);return e}var bf=Mb;function Eb(r){return Cn(r)?Cs(r,!0):bf(r)}var Mr=Eb;var Db=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Bb=/^\w*$/;function Fb(r,t){if(Xe(r))return!1;var e=typeof r;return e=="number"||e=="symbol"||e=="boolean"||r==null||No(r)?!0:Bb.test(r)||!Db.test(r)||t!=null&&r in Object(t)}var Sf=Fb;var Rb=Rt(Object,"create"),pn=Rb;function kb(){this.__data__=pn?pn(null):{},this.size=0}var wf=kb;function Gb(r){var t=this.has(r)&&delete this.__data__[r];return this.size-=t?1:0,t}var Tf=Gb;var Ub="__lodash_hash_undefined__",Vb=Object.prototype,zb=Vb.hasOwnProperty;function jb(r){var t=this.__data__;if(pn){var e=t[r];return e===Ub?void 0:e}return zb.call(t,r)?t[r]:void 0}var Cf=jb;var Hb=Object.prototype,Wb=Hb.hasOwnProperty;function qb(r){var t=this.__data__;return pn?t[r]!==void 0:Wb.call(t,r)}var Af=qb;var Xb="__lodash_hash_undefined__";function Yb(r,t){var e=this.__data__;return this.size+=this.has(r)?0:1,e[r]=pn&&t===void 0?Xb:t,this}var _f=Yb;function Uo(r){var t=-1,e=r==null?0:r.length;for(this.clear();++t<e;){var n=r[t];this.set(n[0],n[1])}}Uo.prototype.clear=wf;Uo.prototype.delete=Tf;Uo.prototype.get=Cf;Uo.prototype.has=Af;Uo.prototype.set=_f;var bc=Uo;function $b(){this.__data__=[],this.size=0}var If=$b;function Kb(r,t){for(var e=r.length;e--;)if(Tn(r[e][0],t))return e;return-1}var An=Kb;var Zb=Array.prototype,Qb=Zb.splice;function Jb(r){var t=this.__data__,e=An(t,r);if(e<0)return!1;var n=t.length-1;return e==n?t.pop():Qb.call(t,e,1),--this.size,!0}var Of=Jb;function e1(r){var t=this.__data__,e=An(t,r);return e<0?void 0:t[e][1]}var Lf=e1;function t1(r){return An(this.__data__,r)>-1}var Nf=t1;function r1(r,t){var e=this.__data__,n=An(e,r);return n<0?(++this.size,e.push([r,t])):e[n][1]=t,this}var Pf=r1;function Vo(r){var t=-1,e=r==null?0:r.length;for(this.clear();++t<e;){var n=r[t];this.set(n[0],n[1])}}Vo.prototype.clear=If;Vo.prototype.delete=Of;Vo.prototype.get=Lf;Vo.prototype.has=Nf;Vo.prototype.set=Pf;var _n=Vo;var n1=Rt(it,"Map"),In=n1;function o1(){this.size=0,this.__data__={hash:new bc,map:new(In||_n),string:new bc}}var Mf=o1;function i1(r){var t=typeof r;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?r!=="__proto__":r===null}var Ef=i1;function a1(r,t){var e=r.__data__;return Ef(t)?e[typeof t=="string"?"string":"hash"]:e.map}var On=a1;function s1(r){var t=On(this,r).delete(r);return this.size-=t?1:0,t}var Df=s1;function l1(r){return On(this,r).get(r)}var Bf=l1;function c1(r){return On(this,r).has(r)}var Ff=c1;function u1(r,t){var e=On(this,r),n=e.size;return e.set(r,t),this.size+=e.size==n?0:1,this}var Rf=u1;function zo(r){var t=-1,e=r==null?0:r.length;for(this.clear();++t<e;){var n=r[t];this.set(n[0],n[1])}}zo.prototype.clear=Mf;zo.prototype.delete=Df;zo.prototype.get=Bf;zo.prototype.has=Ff;zo.prototype.set=Rf;var Xi=zo;var p1="Expected a function";function Sc(r,t){if(typeof r!="function"||t!=null&&typeof t!="function")throw new TypeError(p1);var e=function(){var n=arguments,o=t?t.apply(this,n):n[0],i=e.cache;if(i.has(o))return i.get(o);var a=r.apply(this,n);return e.cache=i.set(o,a)||i,a};return e.cache=new(Sc.Cache||Xi),e}Sc.Cache=Xi;var kf=Sc;var f1=500;function d1(r){var t=kf(r,function(n){return e.size===f1&&e.clear(),n}),e=t.cache;return t}var Gf=d1;var h1=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,m1=/\\(\\)?/g,g1=Gf(function(r){var t=[];return r.charCodeAt(0)===46&&t.push(""),r.replace(h1,function(e,n,o,i){t.push(o?i.replace(m1,"$1"):n||e)}),t}),Uf=g1;function y1(r){return r==null?"":Wp(r)}var Vf=y1;function v1(r,t){return Xe(r)?r:Sf(r,t)?[r]:Uf(Vf(r))}var ir=v1;var x1=1/0;function b1(r){if(typeof r=="string"||No(r))return r;var t=r+"";return t=="0"&&1/r==-x1?"-0":t}var Ln=b1;function S1(r,t){t=ir(t,r);for(var e=0,n=t.length;r!=null&&e<n;)r=r[Ln(t[e++])];return e&&e==n?r:void 0}var _s=S1;function w1(r,t){for(var e=-1,n=t.length,o=r.length;++e<n;)r[o+e]=t[e];return r}var jo=w1;var zf=Pt?Pt.isConcatSpreadable:void 0;function T1(r){return Xe(r)||cn(r)||!!(zf&&r&&r[zf])}var jf=T1;function Hf(r,t,e,n,o){var i=-1,a=r.length;for(e||(e=jf),o||(o=[]);++i<a;){var s=r[i];t>0&&e(s)?t>1?Hf(s,t-1,e,n,o):jo(o,s):n||(o[o.length]=s)}return o}var Wf=Hf;function C1(r){var t=r==null?0:r.length;return t?Wf(r,1):[]}var qf=C1;function A1(r){return Ss(ws(r,void 0,qf),r+"")}var Is=A1;var _1=As(Object.getPrototypeOf,Object),Ho=_1;var I1="[object Object]",O1=Function.prototype,L1=Object.prototype,Xf=O1.toString,N1=L1.hasOwnProperty,P1=Xf.call(Object);function M1(r){if(!It(r)||$t(r)!=I1)return!1;var t=Ho(r);if(t===null)return!0;var e=N1.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Xf.call(e)==P1}var Os=M1;function E1(r,t,e){var n=-1,o=r.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);++n<o;)i[n]=r[n+t];return i}var Yf=E1;function D1(){this.__data__=new _n,this.size=0}var $f=D1;function B1(r){var t=this.__data__,e=t.delete(r);return this.size=t.size,e}var Kf=B1;function F1(r){return this.__data__.get(r)}var Zf=F1;function R1(r){return this.__data__.has(r)}var Qf=R1;var k1=200;function G1(r,t){var e=this.__data__;if(e instanceof _n){var n=e.__data__;if(!In||n.length<k1-1)return n.push([r,t]),this.size=++e.size,this;e=this.__data__=new Xi(n)}return e.set(r,t),this.size=e.size,this}var Jf=G1;function Wo(r){var t=this.__data__=new _n(r);this.size=t.size}Wo.prototype.clear=$f;Wo.prototype.delete=Kf;Wo.prototype.get=Zf;Wo.prototype.has=Qf;Wo.prototype.set=Jf;var Ls=Wo;function U1(r,t){return r&&or(t,Go(t),r)}var ed=U1;function V1(r,t){return r&&or(t,Mr(t),r)}var td=V1;var id=typeof exports=="object"&&exports&&!exports.nodeType&&exports,rd=id&&typeof module=="object"&&module&&!module.nodeType&&module,z1=rd&&rd.exports===id,nd=z1?it.Buffer:void 0,od=nd?nd.allocUnsafe:void 0;function j1(r,t){if(t)return r.slice();var e=r.length,n=od?od(e):new r.constructor(e);return r.copy(n),n}var Ns=j1;function H1(r,t){for(var e=-1,n=r==null?0:r.length,o=0,i=[];++e<n;){var a=r[e];t(a,e,r)&&(i[o++]=a)}return i}var ad=H1;function W1(){return[]}var Ps=W1;var q1=Object.prototype,X1=q1.propertyIsEnumerable,sd=Object.getOwnPropertySymbols,Y1=sd?function(r){return r==null?[]:(r=Object(r),ad(sd(r),function(t){return X1.call(r,t)}))}:Ps,qo=Y1;function $1(r,t){return or(r,qo(r),t)}var ld=$1;var K1=Object.getOwnPropertySymbols,Z1=K1?function(r){for(var t=[];r;)jo(t,qo(r)),r=Ho(r);return t}:Ps,Ms=Z1;function Q1(r,t){return or(r,Ms(r),t)}var cd=Q1;function J1(r,t,e){var n=t(r);return Xe(r)?n:jo(n,e(r))}var Es=J1;function eS(r){return Es(r,Go,qo)}var ud=eS;function tS(r){return Es(r,Mr,Ms)}var Ds=tS;var rS=Rt(it,"DataView"),Bs=rS;var nS=Rt(it,"Promise"),Fs=nS;var oS=Rt(it,"Set"),Rs=oS;var pd="[object Map]",iS="[object Object]",fd="[object Promise]",dd="[object Set]",hd="[object WeakMap]",md="[object DataView]",aS=ln(Bs),sS=ln(In),lS=ln(Fs),cS=ln(Rs),uS=ln(xs),ro=$t;(Bs&&ro(new Bs(new ArrayBuffer(1)))!=md||In&&ro(new In)!=pd||Fs&&ro(Fs.resolve())!=fd||Rs&&ro(new Rs)!=dd||xs&&ro(new xs)!=hd)&&(ro=function(r){var t=$t(r),e=t==iS?r.constructor:void 0,n=e?ln(e):"";if(n)switch(n){case aS:return md;case sS:return pd;case lS:return fd;case cS:return dd;case uS:return hd}return t});var Xo=ro;var pS=Object.prototype,fS=pS.hasOwnProperty;function dS(r){var t=r.length,e=new r.constructor(t);return t&&typeof r[0]=="string"&&fS.call(r,"index")&&(e.index=r.index,e.input=r.input),e}var gd=dS;var hS=it.Uint8Array,wc=hS;function mS(r){var t=new r.constructor(r.byteLength);return new wc(t).set(new wc(r)),t}var Yo=mS;function gS(r,t){var e=t?Yo(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.byteLength)}var yd=gS;var yS=/\w*$/;function vS(r){var t=new r.constructor(r.source,yS.exec(r));return t.lastIndex=r.lastIndex,t}var vd=vS;var xd=Pt?Pt.prototype:void 0,bd=xd?xd.valueOf:void 0;function xS(r){return bd?Object(bd.call(r)):{}}var Sd=xS;function bS(r,t){var e=t?Yo(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.length)}var ks=bS;var SS="[object Boolean]",wS="[object Date]",TS="[object Map]",CS="[object Number]",AS="[object RegExp]",_S="[object Set]",IS="[object String]",OS="[object Symbol]",LS="[object ArrayBuffer]",NS="[object DataView]",PS="[object Float32Array]",MS="[object Float64Array]",ES="[object Int8Array]",DS="[object Int16Array]",BS="[object Int32Array]",FS="[object Uint8Array]",RS="[object Uint8ClampedArray]",kS="[object Uint16Array]",GS="[object Uint32Array]";function US(r,t,e){var n=r.constructor;switch(t){case LS:return Yo(r);case SS:case wS:return new n(+r);case NS:return yd(r,e);case PS:case MS:case ES:case DS:case BS:case FS:case RS:case kS:case GS:return ks(r,e);case TS:return new n;case CS:case IS:return new n(r);case AS:return vd(r);case _S:return new n;case OS:return Sd(r)}}var wd=US;function VS(r){return typeof r.constructor=="function"&&!Fo(r)?Zp(Ho(r)):{}}var Gs=VS;var zS="[object Map]";function jS(r){return It(r)&&Xo(r)==zS}var Td=jS;var Cd=un&&un.isMap,HS=Cd?ko(Cd):Td,Ad=HS;var WS="[object Set]";function qS(r){return It(r)&&Xo(r)==WS}var _d=qS;var Id=un&&un.isSet,XS=Id?ko(Id):_d,Od=XS;var YS=1,$S=2,KS=4,Ld="[object Arguments]",ZS="[object Array]",QS="[object Boolean]",JS="[object Date]",ew="[object Error]",Nd="[object Function]",tw="[object GeneratorFunction]",rw="[object Map]",nw="[object Number]",Pd="[object Object]",ow="[object RegExp]",iw="[object Set]",aw="[object String]",sw="[object Symbol]",lw="[object WeakMap]",cw="[object ArrayBuffer]",uw="[object DataView]",pw="[object Float32Array]",fw="[object Float64Array]",dw="[object Int8Array]",hw="[object Int16Array]",mw="[object Int32Array]",gw="[object Uint8Array]",yw="[object Uint8ClampedArray]",vw="[object Uint16Array]",xw="[object Uint32Array]",Ve={};Ve[Ld]=Ve[ZS]=Ve[cw]=Ve[uw]=Ve[QS]=Ve[JS]=Ve[pw]=Ve[fw]=Ve[dw]=Ve[hw]=Ve[mw]=Ve[rw]=Ve[nw]=Ve[Pd]=Ve[ow]=Ve[iw]=Ve[aw]=Ve[sw]=Ve[gw]=Ve[yw]=Ve[vw]=Ve[xw]=!0;Ve[ew]=Ve[Nd]=Ve[lw]=!1;function Us(r,t,e,n,o,i){var a,s=t&YS,l=t&$S,u=t&KS;if(e&&(a=o?e(r,n,o,i):e(r)),a!==void 0)return a;if(!st(r))return r;var c=Xe(r);if(c){if(a=gd(r),!s)return bs(r,a)}else{var p=Xo(r),f=p==Nd||p==tw;if(Ro(r))return Ns(r,s);if(p==Pd||p==Ld||f&&!o){if(a=l||f?{}:Gs(r),!s)return l?cd(r,td(a,r)):ld(r,ed(a,r))}else{if(!Ve[p])return o?r:{};a=wd(r,p,s)}}i||(i=new Ls);var d=i.get(r);if(d)return d;i.set(r,a),Od(r)?r.forEach(function(g){a.add(Us(g,t,e,g,r,i))}):Ad(r)&&r.forEach(function(g,v){a.set(v,Us(g,t,e,v,r,i))});var h=u?l?Ds:ud:l?Mr:Go,m=c?void 0:h(r);return rf(m||r,function(g,v){m&&(v=g,g=r[v]),Do(a,v,Us(g,t,e,v,r,i))}),a}var Vs=Us;var bw=1,Sw=4;function ww(r){return Vs(r,bw|Sw)}var Yi=ww;function Tw(r,t){return r!=null&&t in Object(r)}var Md=Tw;function Cw(r,t,e){t=ir(t,r);for(var n=-1,o=t.length,i=!1;++n<o;){var a=Ln(t[n]);if(!(i=r!=null&&e(r,a)))break;r=r[a]}return i||++n!=o?i:(o=r==null?0:r.length,!!o&&Bo(o)&&wn(a,o)&&(Xe(r)||cn(r)))}var Ed=Cw;function Aw(r,t){return r!=null&&Ed(r,t,Md)}var Dd=Aw;function _w(r){return function(t,e,n){for(var o=-1,i=Object(t),a=n(t),s=a.length;s--;){var l=a[r?s:++o];if(e(i[l],l,i)===!1)break}return t}}var Bd=_w;var Iw=Bd(),Fd=Iw;function Ow(r,t,e){(e!==void 0&&!Tn(r[t],e)||e===void 0&&!(t in r))&&Eo(r,t,e)}var $i=Ow;function Lw(r){return It(r)&&Cn(r)}var Rd=Lw;function Nw(r,t){if(!(t==="constructor"&&typeof r[t]=="function")&&t!="__proto__")return r[t]}var Ki=Nw;function Pw(r){return or(r,Mr(r))}var kd=Pw;function Mw(r,t,e,n,o,i,a){var s=Ki(r,e),l=Ki(t,e),u=a.get(l);if(u){$i(r,e,u);return}var c=i?i(s,l,e+"",r,t,a):void 0,p=c===void 0;if(p){var f=Xe(l),d=!f&&Ro(l),h=!f&&!d&&Ts(l);c=l,f||d||h?Xe(s)?c=s:Rd(s)?c=bs(s):d?(p=!1,c=Ns(l,!0)):h?(p=!1,c=ks(l,!0)):c=[]:Os(l)||cn(l)?(c=s,cn(s)?c=kd(s):(!st(s)||Po(s))&&(c=Gs(l))):p=!1}p&&(a.set(l,c),o(c,l,n,i,a),a.delete(l)),$i(r,e,c)}var Gd=Mw;function Ud(r,t,e,n,o){r!==t&&Fd(t,function(i,a){if(o||(o=new Ls),st(i))Gd(r,t,a,e,Ud,n,o);else{var s=n?n(Ki(r,a),i,a+"",r,t,o):void 0;s===void 0&&(s=i),$i(r,a,s)}},Mr)}var Vd=Ud;function Ew(r){var t=r==null?0:r.length;return t?r[t-1]:void 0}var zd=Ew;function Dw(r,t){return t.length<2?r:_s(r,Yf(t,0,-1))}var jd=Dw;var Bw=sf(function(r,t,e){Vd(r,t,e)}),no=Bw;function Fw(r,t){return t=ir(t,r),r=jd(r,t),r==null||delete r[Ln(zd(t))]}var Hd=Fw;function Rw(r){return Os(r)?void 0:r}var Wd=Rw;var kw=1,Gw=2,Uw=4,Vw=Is(function(r,t){var e={};if(r==null)return e;var n=!1;t=gs(t,function(i){return i=ir(i,r),n||(n=i.length>1),i}),or(r,Ds(r),e),n&&(e=Vs(e,kw|Gw|Uw,Wd));for(var o=t.length;o--;)Hd(e,t[o]);return e}),$o=Vw;function zw(r,t,e,n){if(!st(r))return r;t=ir(t,r);for(var o=-1,i=t.length,a=i-1,s=r;s!=null&&++o<i;){var l=Ln(t[o]),u=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return r;if(o!=a){var c=s[l];u=n?n(c,l,s):void 0,u===void 0&&(u=st(c)?c:wn(t[o+1])?[]:{})}Do(s,l,u),s=s[l]}return r}var qd=zw;function jw(r,t,e){for(var n=-1,o=t.length,i={};++n<o;){var a=t[n],s=_s(r,a);e(s,a)&&qd(i,ir(a,r),s)}return i}var Xd=jw;function Hw(r,t){return Xd(r,t,function(e,n){return Dd(r,n)})}var Yd=Hw;var Ww=Is(function(r,t){return r==null?{}:Yd(r,t)}),Tc=Ww;var Ko;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(n){return e.all.includes(n)}e.is=t})(Ko||(Ko={}));var oo;(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 n(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=n})(oo||(oo={}));var $d;(e=>{function r(n,o){return n[0]===o[0]&&n[1]===o[1]}e.isEqual=r;function t(n,o,i){return[n[0]+(o[0]-n[0])*i,n[1]+(o[1]-n[1])*i]}e.lerp=t})($d||($d={}));var Zo;(o=>{function r(i,a){return i[0]===a[0]&&i[1]===a[1]&&i[2]===a[2]}o.isEqual=r;function t(i,a){return[i[0]+a[0],i[1]+a[1],i[2]+a[2]]}o.add=t;function e(i,a){return[i[0]-a[0],i[1]-a[1],i[2]-a[2]]}o.sub=e;function n(i,a,s){return[i[0]+(a[0]-i[0])*s,i[1]+(a[1]-i[1])*s,i[2]+(a[2]-i[2])*s]}o.lerp=n})(Zo||(Zo={}));var Kd;(e=>{function r(n,o){return n[0]===o[0]&&n[1]===o[1]&&n[2]===o[2]&&n[3]===o[3]}e.isEqual=r;function t(n,o,i){return[n[0]+(o[0]-n[0])*i,n[1]+(o[1]-n[1])*i,n[2]+(o[2]-n[2])*i,n[3]+(o[3]-n[3])*i]}e.lerp=t})(Kd||(Kd={}));var Nn;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function n(i,a){let s=a.slice(0);for(var l=0,u=a.length;l<u;l+=3){let c=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/c,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/c,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/c}return s}o.applyMatrix4=n})(Nn||(Nn={}));var kt;(l=>{l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function n(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:1}}l.toRgb255a1=n;function o(u){return{r:u.r,g:u.g,b:u.b}}l.clone=o;function i(u){return u=Math.floor(u),{r:(u>>16&255)/255,g:(u>>8&255)/255,b:(u&255)/255}}l.fromHex=i;function a(u,c){return u.r===c.r&&u.g===c.g&&u.b===c.b}l.equals=a;function s(u,c,p){return{r:u.r+(c.r-u.r)*p,g:u.g+(c.g-u.g)*p,b:u.b+(c.b-u.b)*p}}l.lerp=s})(kt||(kt={}));var dr;(s=>{s.white={...kt.white,a:1},s.transparent={...kt.white,a:0};function e(l){return{r:l[0],g:l[1],b:l[2],a:l[3]}}s.from0to1=e;function n(l,u){return{...kt.fromHex(l),a:u}}s.fromHexAndA=n;function o(l){return{r:Math.round(l.r*255),g:Math.round(l.g*255),b:Math.round(l.b*255),a:l.a}}s.toRgb255a1=o;function i(l,u){return kt.equals(l,u)&&l.a===u.a}s.equals=i;function a(l,u,c){return{r:l.r+(u.r-l.r)*c,g:l.g+(u.g-l.g)*c,b:l.b+(u.b-l.b)*c,a:l.a+(u.a-l.a)*c}}s.lerp=a})(dr||(dr={}));var zs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(zs||(zs={}));var Zd;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Zd||(Zd={}));var Qd;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Qd||(Qd={}));var js;(t=>{function r(e,n=.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]*n,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+n)),useCenter:!0}}}t.defaultData=r})(js||(js={}));var Ye=class{modifyById(t,e){let n=this;if(n[t]===void 0)throw new Error("not expected");{let i={...n,[t]:e};return Object.setPrototypeOf(i,Ye.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 n=e[t.id],o;n===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:n};let{id:i,data:a}=t,s={...e,[i]:a};return Object.setPrototypeOf(s,Ye.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:n}=t,o=e[n];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ye.prototype),delete i[n],{data:i,actual:t,reverse:{type:1,id:n,data:o}}}}throw new Error("illegal arg")}};function Zi(r){if(r.deepFreeze!==void 0){r.deepFreeze(r);return}let t=Object.getOwnPropertyNames(r);for(let e of t){let n=r[e];n&&typeof n=="object"&&Zi(n)}return Object.freeze(r)}function Jd(r,t){let e=0;for(;e<r.length&&e<t.length;){if(r[e]<t[e])return-1;if(r[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==r.length?1:0}var Hs=class extends Error{};function Er(r,t,e){if(r===void 0?t===void 0?(r=0,t=10):r=t-10:t===void 0&&(t=r+10),r>t){let i=r;r=t,t=i}let n=[],o=1/(e+1);for(let i=0;i<e;i++){let a=r+(t-r)*(i+.75+Math.random()*.5)*o;n.push(a)}return n}function io(r){return r instanceof Uint8Array||r instanceof Uint16Array||r instanceof Uint32Array||r instanceof Int8Array||r instanceof Int16Array||r instanceof Int32Array||r instanceof Float32Array||r instanceof Float64Array}function eh(){return typeof process<"u"}function th(r,t){for(let e of r)t(e.id,e.data),th(e.children,t)}function rh(r,t){t(r.id,r.data);for(let e of r.children)rh(e,t)}var Gt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Gt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Zi(this[e]),e++}fillCaches0(e,n){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,n);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,n){for(;e;){let o=this.parent(e);if(o===n)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,n){if(e===null)this.traverse(n);else{let o=this.get(e);o&&rh(o,n)}}traverse(e){th(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,n){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:n},this.modifyArrayBy(i,a)}}modifyArrayBy(e,n){let o=e,i=n;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(c=>c.id===l);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:s}}Object.setPrototypeOf(i,Gt.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:n}){if(this.get(e)!==void 0)return!0;for(let o of n)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:n,fi:o,id:i,data:a,children:s}=e;if(n!==null&&this.get(n)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=n,u=this.childrenArray(l),c={fi:o,id:i,data:a,children:s};return u=[...u,c],u.sort((f,d)=>f.fi-d.fi),e.localIndex=u.indexOf(c),{data:this.modifyArrayBy(l,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:n}=e;if(this.get(n)===null)return null;{let o=this.parent(n);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(u=>u.id===n);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:n,fi:o,id:i}=e;if(n!==null&&this.get(n)===void 0)return this.deleteOp({type:8,id:i});if(n!==null){let d=n;for(;d!==null;){if(d===void 0)throw new Error;if(d===i)throw new Hs("cyclic tree");d=this.parent(d)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),u=l.findIndex(d=>d.id===i);l=[...l];let c=l.splice(u,1)[0],p=this.modifyArrayBy(a,l);a=n,l=p.childrenArray(a);let f=c.fi;return c={...c,fi:o},l=[...l,c],l.sort((d,h)=>d.fi-h.fi),e.localIndex=l.indexOf(c),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:f,id:i}}}previous(e,n){if(n===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===n)return o;o=i.id}return null}traverseSortNext(e){let n=this.parent(e);if(n!==void 0){let o=this.childrenArray(n),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(n)return this.traverseSortNext(n)}}sortNext(e){let n=this.childrenArray(e);return n.length>0?n[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let n=this.childrenArray(e);return n.length>0?this.traverseSortPrevious(n[n.length-1].id):e}sortPrevious(e){let n=this.parent(e);if(n!==void 0){let o=this.childrenArray(n),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):n}}getAllSorted(e){let n=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&n.push({...o,...i})}n.sort((o,i)=>Jd(o.sortKey,i.sortKey));for(let o of n)delete o.sortKey;return n}getWithSortKey(e){var n=e;let o=[],i=this.get(n),a=i;if(i!==void 0){for(;n;)o.splice(0,0,i.fi),n=this.parent(n),n!==null&&(i=this.get(n));return{...a,sortKey:o}}}insertBeforeHelper(e,n,o){return this.insertAfterHelper(e,this.previous(e,n),o)}insertAfterHelper(e,n,o){let i=this.childrenArray(e);if(n===null){if(i.length===0)return Er(0,o,o);{let a=i[0].fi;return Er(a-o,a,o)}}else{let a=this.get(n);if(a===void 0||this.parent(n)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return Er(l,l+o,o)}else return Er(a.fi,s.fi,o)}}};var Ws;(t=>{function r(e,n){if(Array.isArray(e)){let o=n.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let u=parseInt(l);if(isNaN(u))throw new Error("wrong index");i[l]=a[u],a[u]=o[l],s=!0}return s?{data:a,actual:n,reverse:{type:0,props:i}}:null}else{let o=n.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let u=o[l];u===void 0?delete a[l]:a[l]=u,s=!0}return s?{data:a,actual:n,reverse:{type:0,props:i}}:null}}t.runOp=r})(Ws||(Ws={}));var He=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,He.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Zi(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,n){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:n},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,He.prototype);let n=e;return eh()||n.fillCaches(),n}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:n,id:o,data:i}=e,a=this,s={fi:n,id:o,data:i};return a=[...a,s],a.sort((u,c)=>u.fi-c.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:n}=e,o=this,i=o.findIndex(l=>l.id===n);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:n,id:o}=e,i=this;i=[...i];let a=i.findIndex(c=>c.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:n};return i[a]=l,i.sort((c,p)=>c.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let n=null;for(let o of this){if(o.id===e)return n;n=o.id}return null}insertBeforeHelper(e,n){return this.insertAfterHelper(this.previous(e),n)}insertAfterHelper(e,n){let o=this;if(e===null){if(o.length===0)return Er(0,n,n);{let i=o[0].fi;return Er(i-n,i,n)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Er(s,s+n,n)}else return Er(i.fi,a.fi,n)}}};var fn=class{unusedFun(t){}runOp(t){let e=[],n=this,o=0,i={};for(;o<t.path.length;)e.push(n),n=n===void 0?void 0:n[t.path[o]],o+=1;n={...n};for(let[l,u]of Object.entries(t.props)){let c=n[l];i[l]=c,u===void 0?delete n[l]:n[l]=u}for(;o>0;)Object.keys(n).length===0?(n={...e[o-1]},delete n[t.path[o-1]]):n={...e[o-1],[t.path[o-1]]:n},o-=1;let a=Object.setPrototypeOf(n,fn.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},nh;(e=>{function r(n,o){return Qi(n,o)??n}e.apply=r;function t(n,o){if(o.type===0){let i=ao.zoom(n,o.path);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||io(i))return;if(i&&typeof i=="object"){let a={...o.props};for(let s of Object.keys(i))delete a[s];return{...o,props:a}}else return}else if(o.type===1||o.type===4||o.type===7){let i=ao.zoom(n,[...o.path,o.id]);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||io(i))return;if(i&&typeof i=="object"){let a={...o.data,...i};return{...o,data:a}}else return}else return o}e.filterOp=t})(nh||(nh={}));function oh(r,t){if(t===void 0)return;let e=!1,n=r.map(o=>{let i=o.id,a=Qi(o.data,t[i]);e=e||a!==void 0,a===void 0&&(a=o.data);let s=oh(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}});if(e)return n}function qw(r,t){if(t===void 0)return;let e=!1,n=r.map(o=>{let i=o.id,a=Qi(o.data,t[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(n,Object.getPrototypeOf(r)),n}function Qi(r,t){if(t!==void 0)if(r instanceof Gt){let e=oh(r,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(r)),e}else{if(r instanceof He)return qw(r,t);if(Array.isArray(r)){let e=!1,n=r.map((o,i)=>{let a=Qi(o,t[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(n,Object.getPrototypeOf(r)),n):void 0}else if(r&&typeof r=="object"){let e={},n=!1;for(let[o,i]of Object.entries(r)){let a=Qi(i,t[o]);n=n||a!==void 0,a===void 0&&(a=i),e[o]=a}return n?(Object.setPrototypeOf(e,Object.getPrototypeOf(r)),e):void 0}else return t??r}}var ih=Symbol(),Ji=Symbol(),so=class{reportOp(t,e,n=[]){let o=this;if(e===null)return;o._current=e.data;let i=n;for(;!(o instanceof qs);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let n=e[Ji];n&&n(),delete this._children[t]}}}},Ac=class extends so{constructor(t,e,n){super(),this._parent=t,this._path=e,this._current=n}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,Ws.runOp(this._current,t),t.path)}},_c=class extends so{constructor(t,e,n){super(),this._parent=t,this._path=e,this._current=n}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,Ye.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},ah={get(r,t){if(t===Ji)return()=>{r._parent=null};if(t===ih)return r._current;let{_current:e,_children:n}=r;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=n===void 0?void 0:n[t];if(o!==void 0)return o;let i=e[t],a=Xs(r,t,i);return a!==i?(n===void 0&&(n={},r._children=n),n[t]=a,a):i},has(r,t){return t in r._current},ownKeys(r){return Reflect.ownKeys(r._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(r){return Object.getPrototypeOf(r._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(r,t){let e=r._current,n=Reflect.getOwnPropertyDescriptor(e,t);return n&&{writable:!0,configurable:!0,enumerable:n.enumerable,value:e[t]}}},Xw={...ah,set(r,t,e){let n={type:0,props:{[t]:Ut(e)??e}};return r.deleteChildren(t),r.runOp(n),!0},deleteProperty(r,t){let e={type:0,props:{[t]:void 0}};return r.deleteChildren(t),r.runOp(e),!0}},Yw={...ah,set(r,t,e){return e===void 0?this.deleteProperty(r,t):(r.deleteChildren(t),r.runOp({type:1,id:t,data:e})),!0},deleteProperty(r,t){return r.runOp({type:2,id:t}),!0}},Qo=class extends so{constructor(t,e,n){super(),this._children={},this._parent=t,this._path=e,this._current=n,this[Ji]=()=>{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,n)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:n}=this,o=n===void 0?void 0:n[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=Xs(this,t,i);return a!==i?(n===void 0&&(n={},this._children=n),n[t]=a,a):i}add(t,e,n,o,i){this.runOp({type:7,parent:t,fi:e,id:n,data:o,children:i})}move(t,e,n){this.runOp({type:9,parent:t,fi:e,id:n})}insertAfter(t,e,n){let o=this._current.insertAfterHelper(t,e,n.length);for(let i=0;i<n.length;i++){let a=n[i];this.add(t,o[i],a.id,a.data,a.children)}}insertBefore(t,e,n){let o=this._current.insertBeforeHelper(t,e,n.length);for(let i=0;i<n.length;i++){let a=n[i];this.add(t,o[i],a.id,a.data,a.children)}}moveAfter(t,e,n){let o=this._current.insertAfterHelper(t,e,n.length);for(let i=0;i<n.length;i++){let a=n[i];this.move(t,o[i],a)}}moveBefore(t,e,n){let o=this._current.insertBeforeHelper(t,e,n.length);for(let i=0;i<n.length;i++){let a=n[i];this.move(t,o[i],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Ic=class extends so{constructor(t,e,n){super(),this._parent=t,this._path=e,this._current=n,this[Ji]=()=>{this._parent=null}}feedOp(t){let{path:e,...n}=t;this.reportOp(n,this._current.runOp(t),e)}},Jo=class extends so{constructor(t,e,n){super(),this._children={},this._parent=t,this._path=e,this._current=n,this[Ji]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let n=0;n<e;n++){let o=this._current[n].id;t(this.data(this._current[n].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:n}=this,o=n===void 0?void 0:n[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=Xs(this,t,i);return a!==i?(n===void 0&&(n={},this._children=n),n[t]=a,a):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,n){this.runOp({type:4,fi:t,id:e,data:n})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let n=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(n[o],i.id,i.data)}}insertBefore(t,e){let n=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(n[o],i.id,i.data)}}moveAfter(t,e){let n=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(n[o],i)}}moveBefore(t,e){let n=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(n[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Cc(r,t,e){if(r.length>0){let n=r[r.length-1];if(n.type===0&&t.type===0&&ao.equal(n.path,e)){Object.assign(n.props,t.props);return}}r.push({...t,path:e})}var qs=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,n,o){Cc(this.ts,e,t),Cc(this.actual,n,t),Cc(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Xs(r,t,e){return e instanceof Gt?new Qo(r,t,e):e instanceof He?new Jo(r,t,e):e instanceof fn?new Ic(r,t,e):e instanceof Ye?new Proxy(new _c(r,t,e),Yw):e!==null&&typeof e=="object"?io(e)?e:new Proxy(new Ac(r,t,e),Xw):e}function Oc(r){let t=new qs(r);return[Xs(t,"",r),t]}function Lc(r,t){let[e,n]=Oc(r);return t(e),n.result()}function Ut(r){return r instanceof Qo||r instanceof Jo?r._current:r!==null&&typeof r=="object"?r[ih]:r}var ao;(o=>{function r(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=r;function t(i,a,s){let l=n(s,i);if(l!==void 0&&typeof l=="object"&&l!==null){let u={...a};return Object.keys(l).forEach(c=>{delete u[c]}),u}else return a}o.removeOverridden=t;function e(i,a){if((i instanceof Gt||i instanceof Qo)&&typeof a=="string")return i.data(a);if((i instanceof He||i instanceof Jo)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object")return i[a]}o.zoomOnce=e;function n(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=n})(ao||(ao={}));var Ys=class{},ea=class extends Ys{constructor(e){super();this.id=e}},ta=class extends Ys{constructor(e){super();this.data=e}};var Pc;try{Pc=new TextDecoder}catch{}var se,Mn,L=0;var hh=[],Mc=hh,Ec=0,Vt={},Ne,Pn,ar=0,Dr=0,Kt,dn,Mt=[],Be,sh={useRecords:!1,mapsAsObjects:!0},ra=class{},Bc=new ra;Bc.name="MessagePack 0xC1";var ei=!1,Br=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(se)return xh(()=>(Ks(),this?this.unpack(t,e):Br.prototype.unpack.call(sh,t,e)));Mn=e>-1?e:t.length,L=0,Ec=0,Dr=0,Pn=null,Mc=hh,Kt=null,se=t;try{Be=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(n){throw se=null,t instanceof Uint8Array?n:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Br){if(Vt=this,this.structures)return Ne=this.structures,$s();(!Ne||Ne.length>0)&&(Ne=[])}else Vt=sh,(!Ne||Ne.length>0)&&(Ne=[]);return $s()}unpackMultiple(t,e){let n,o=0;try{ei=!0;let i=t.length,a=this?this.unpack(t,i):Js.unpack(t,i);if(e){for(e(a);L<i;)if(o=L,e($s())===!1)return}else{for(n=[a];L<i;)o=L,n.push($s());return n}}catch(i){throw i.lastPosition=o,i.values=n,i}finally{ei=!1,Ks()}}_mergeStructures(t,e){t=t||[];for(let n=0,o=t.length;n<o;n++){let i=t[n];i&&(i.isShared=!0,n>=32&&(i.highByte=n-32>>5))}t.sharedLength=t.length;for(let n in e||[])if(n>=0){let o=t[n],i=e[n];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[n]=o),t[n]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function $s(){try{if(!Vt.trusted&&!ei){let t=Ne.sharedLength||0;t<Ne.length&&(Ne.length=t)}let r=$e();if(L==Mn)Ne.restoreStructures&&lh(),Ne=null,se=null,dn&&(dn=null);else if(L>Mn){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!ei)throw new Error("Data read, but end of buffer not reached");return r}catch(r){throw Ne.restoreStructures&&lh(),Ks(),(r instanceof RangeError||r.message.startsWith("Unexpected end of buffer"))&&(r.incomplete=!0),r}}function lh(){for(let r in Ne.restoreStructures)Ne[r]=Ne.restoreStructures[r];Ne.restoreStructures=null}function $e(){let r=se[L++];if(r<160)if(r<128){if(r<64)return r;{let t=Ne[r&63]||Vt.getStructures&&mh()[r&63];return t?(t.read||(t.read=Fc(t,r&63)),t.read()):r}}else if(r<144)if(r-=128,Vt.mapsAsObjects){let t={};for(let e=0;e<r;e++)t[yh()]=$e();return t}else{let t=new Map;for(let e=0;e<r;e++)t.set($e(),$e());return t}else{r-=144;let t=new Array(r);for(let e=0;e<r;e++)t[e]=$e();return t}else if(r<192){let t=r-160;if(Dr>=L)return Pn.slice(L-ar,(L+=t)-ar);if(Dr==0&&Mn<140){let e=t<16?Rc(t):gh(t);if(e!=null)return e}return Dc(t)}else{let t;switch(r){case 192:return null;case 193:return Kt?(t=$e(),t>0?Kt[1].slice(Kt.position1,Kt.position1+=t):Kt[0].slice(Kt.position0,Kt.position0-=t)):Bc;case 194:return!1;case 195:return!0;case 196:return Nc(se[L++]);case 197:return t=Be.getUint16(L),L+=2,Nc(t);case 198:return t=Be.getUint32(L),L+=4,Nc(t);case 199:return lo(se[L++]);case 200:return t=Be.getUint16(L),L+=2,lo(t);case 201:return t=Be.getUint32(L),L+=4,lo(t);case 202:if(t=Be.getFloat32(L),Vt.useFloat32>2){let e=Qs[(se[L]&127)<<1|se[L+1]>>7];return L+=4,(e*t+(t>0?.5:-.5)>>0)/e}return L+=4,t;case 203:return t=Be.getFloat64(L),L+=8,t;case 204:return se[L++];case 205:return t=Be.getUint16(L),L+=2,t;case 206:return t=Be.getUint32(L),L+=4,t;case 207:return Vt.int64AsNumber?(t=Be.getUint32(L)*4294967296,t+=Be.getUint32(L+4)):t=Be.getBigUint64(L),L+=8,t;case 208:return Be.getInt8(L++);case 209:return t=Be.getInt16(L),L+=2,t;case 210:return t=Be.getInt32(L),L+=4,t;case 211:return Vt.int64AsNumber?(t=Be.getInt32(L)*4294967296,t+=Be.getUint32(L+4)):t=Be.getBigInt64(L),L+=8,t;case 212:if(t=se[L++],t==114)return dh(se[L++]&63);{let e=Mt[t];if(e)return e.read?(L++,e.read($e())):e.noBuffer?(L++,e()):e(se.subarray(L,++L));throw new Error("Unknown extension "+t)}case 213:return t=se[L],t==114?(L++,dh(se[L++]&63,se[L++])):lo(2);case 214:return lo(4);case 215:return lo(8);case 216:return lo(16);case 217:return t=se[L++],Dr>=L?Pn.slice(L-ar,(L+=t)-ar):Kw(t);case 218:return t=Be.getUint16(L),L+=2,Dr>=L?Pn.slice(L-ar,(L+=t)-ar):Zw(t);case 219:return t=Be.getUint32(L),L+=4,Dr>=L?Pn.slice(L-ar,(L+=t)-ar):Qw(t);case 220:return t=Be.getUint16(L),L+=2,uh(t);case 221:return t=Be.getUint32(L),L+=4,uh(t);case 222:return t=Be.getUint16(L),L+=2,ph(t);case 223:return t=Be.getUint32(L),L+=4,ph(t);default:if(r>=224)return r-256;if(r===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+r)}}}var $w=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Fc(r,t){function e(){if(e.count++>2){let o=r.read=new Function("r","return function(){return {"+r.map(i=>$w.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")($e);return r.highByte===0&&(r.read=ch(t,r.read)),o()}let n={};for(let o=0,i=r.length;o<i;o++){let a=r[o];n[a]=$e()}return n}return e.count=0,r.highByte===0?ch(t,e):e}var ch=(r,t)=>function(){let e=se[L++];if(e===0)return t();let n=r<32?-(r+(e<<5)):r+(e<<5),o=Ne[n]||mh()[n];if(!o)throw new Error("Record id is not defined for "+n);return o.read||(o.read=Fc(o,r)),o.read()};function mh(){let r=xh(()=>(se=null,Vt.getStructures()));return Ne=Vt._mergeStructures(r,Ne)}var Dc=Zs,Kw=Zs,Zw=Zs,Qw=Zs;function Zs(r){let t;if(r<16&&(t=Rc(r)))return t;if(r>64&&Pc)return Pc.decode(se.subarray(L,L+=r));let e=L+r,n=[];for(t="";L<e;){let o=se[L++];if((o&128)===0)n.push(o);else if((o&224)===192){let i=se[L++]&63;n.push((o&31)<<6|i)}else if((o&240)===224){let i=se[L++]&63,a=se[L++]&63;n.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=se[L++]&63,a=se[L++]&63,s=se[L++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|l&1023),n.push(l)}else n.push(o);n.length>=4096&&(t+=gt.apply(String,n),n.length=0)}return n.length>0&&(t+=gt.apply(String,n)),t}function uh(r){let t=new Array(r);for(let e=0;e<r;e++)t[e]=$e();return t}function ph(r){if(Vt.mapsAsObjects){let t={};for(let e=0;e<r;e++)t[yh()]=$e();return t}else{let t=new Map;for(let e=0;e<r;e++)t.set($e(),$e());return t}}var gt=String.fromCharCode;function gh(r){let t=L,e=new Array(r);for(let n=0;n<r;n++){let o=se[L++];if((o&128)>0){L=t;return}e[n]=o}return gt.apply(String,e)}function Rc(r){if(r<4)if(r<2){if(r===0)return"";{let t=se[L++];if((t&128)>1){L-=1;return}return gt(t)}}else{let t=se[L++],e=se[L++];if((t&128)>0||(e&128)>0){L-=2;return}if(r<3)return gt(t,e);let n=se[L++];if((n&128)>0){L-=3;return}return gt(t,e,n)}else{let t=se[L++],e=se[L++],n=se[L++],o=se[L++];if((t&128)>0||(e&128)>0||(n&128)>0||(o&128)>0){L-=4;return}if(r<6){if(r===4)return gt(t,e,n,o);{let i=se[L++];if((i&128)>0){L-=5;return}return gt(t,e,n,o,i)}}else if(r<8){let i=se[L++],a=se[L++];if((i&128)>0||(a&128)>0){L-=6;return}if(r<7)return gt(t,e,n,o,i,a);let s=se[L++];if((s&128)>0){L-=7;return}return gt(t,e,n,o,i,a,s)}else{let i=se[L++],a=se[L++],s=se[L++],l=se[L++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){L-=8;return}if(r<10){if(r===8)return gt(t,e,n,o,i,a,s,l);{let u=se[L++];if((u&128)>0){L-=9;return}return gt(t,e,n,o,i,a,s,l,u)}}else if(r<12){let u=se[L++],c=se[L++];if((u&128)>0||(c&128)>0){L-=10;return}if(r<11)return gt(t,e,n,o,i,a,s,l,u,c);let p=se[L++];if((p&128)>0){L-=11;return}return gt(t,e,n,o,i,a,s,l,u,c,p)}else{let u=se[L++],c=se[L++],p=se[L++],f=se[L++];if((u&128)>0||(c&128)>0||(p&128)>0||(f&128)>0){L-=12;return}if(r<14){if(r===12)return gt(t,e,n,o,i,a,s,l,u,c,p,f);{let d=se[L++];if((d&128)>0){L-=13;return}return gt(t,e,n,o,i,a,s,l,u,c,p,f,d)}}else{let d=se[L++],h=se[L++];if((d&128)>0||(h&128)>0){L-=14;return}if(r<15)return gt(t,e,n,o,i,a,s,l,u,c,p,f,d,h);let m=se[L++];if((m&128)>0){L-=15;return}return gt(t,e,n,o,i,a,s,l,u,c,p,f,d,h,m)}}}}}function Nc(r){return Vt.copyBuffers?Uint8Array.prototype.slice.call(se,L,L+=r):se.subarray(L,L+=r)}function lo(r){let t=se[L++];if(Mt[t])return Mt[t](se.subarray(L,L+=r));throw new Error("Unknown extension type "+t)}var fh=new Array(4096);function yh(){let r=se[L++];if(r>=160&&r<192){if(r=r-160,Dr>=L)return Pn.slice(L-ar,(L+=r)-ar);if(!(Dr==0&&Mn<180))return Dc(r)}else return L--,$e();let t=(r<<5^(r>1?Be.getUint16(L):r>0?se[L]:0))&4095,e=fh[t],n=L,o=L+r-3,i,a=0;if(e&&e.bytes==r){for(;n<o;){if(i=Be.getUint32(n),i!=e[a++]){n=1879048192;break}n+=4}for(o+=3;n<o;)if(i=se[n++],i!=e[a++]){n=1879048192;break}if(n===o)return L=n,e.string;o-=3,n=L}for(e=[],fh[t]=e,e.bytes=r;n<o;)i=Be.getUint32(n),e.push(i),n+=4;for(o+=3;n<o;)i=se[n++],e.push(i);let s=r<16?Rc(r):gh(r);return s!=null?e.string=s:e.string=Dc(r)}var dh=(r,t)=>{var e=$e();let n=r;t!==void 0&&(r=r<32?-((t<<5)+r):(t<<5)+r,e.highByte=t);let o=Ne[r];return o&&o.isShared&&((Ne.restoreStructures||(Ne.restoreStructures=[]))[r]=o),Ne[r]=e,e.read=Fc(e,n),e.read()},vh=typeof self=="object"?self:global;Mt[0]=()=>{};Mt[0].noBuffer=!0;Mt[101]=()=>{let r=$e();return(vh[r[0]]||Error)(r[1])};Mt[105]=r=>{let t=Be.getUint32(L-4);dn||(dn=new Map);let e=se[L],n;e>=144&&e<160||e==220||e==221?n=[]:n={};let o={target:n};dn.set(t,o);let i=$e();return o.used?Object.assign(n,i):(o.target=i,i)};Mt[112]=r=>{let t=Be.getUint32(L-4),e=dn.get(t);return e.used=!0,e.target};Mt[115]=()=>new Set($e());var kc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(r=>r+"Array");Mt[116]=r=>{let t=r[0],e=kc[t];if(!e)throw new Error("Could not find typed array for code "+t);return new vh[e](Uint8Array.prototype.slice.call(r,1).buffer)};Mt[120]=()=>{let r=$e();return new RegExp(r[0],r[1])};Mt[98]=r=>{let t=(r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3],e=L;L+=t-4,Kt=[$e(),$e()],Kt.position0=0,Kt.position1=0;let n=L;L=e;try{return $e()}finally{L=n}};Mt[255]=r=>r.length==4?new Date((r[0]*16777216+(r[1]<<16)+(r[2]<<8)+r[3])*1e3):r.length==8?new Date(((r[0]<<22)+(r[1]<<14)+(r[2]<<6)+(r[3]>>2))/1e6+((r[3]&3)*4294967296+r[4]*16777216+(r[5]<<16)+(r[6]<<8)+r[7])*1e3):r.length==12?new Date(((r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3])/1e6+((r[4]&128?-281474976710656:0)+r[6]*1099511627776+r[7]*4294967296+r[8]*16777216+(r[9]<<16)+(r[10]<<8)+r[11])*1e3):new Date("invalid");function xh(r){let t=Mn,e=L,n=Ec,o=ar,i=Dr,a=Pn,s=Mc,l=dn,u=Kt,c=new Uint8Array(se.slice(0,Mn)),p=Ne,f=Ne.slice(0,Ne.length),d=Vt,h=ei,m=r();return Mn=t,L=e,Ec=n,ar=o,Dr=i,Pn=a,Mc=s,dn=l,Kt=u,se=c,ei=h,Ne=p,Ne.splice(0,Ne.length,...f),Vt=d,Be=new DataView(se.buffer,se.byteOffset,se.byteLength),m}function Ks(){se=null,dn=null,Ne=null}function bh(r){r.unpack?Mt[r.type]=r.unpack:Mt[r.type]=r}var Qs=new Array(147);for(let r=0;r<256;r++)Qs[r]=+("1e"+Math.floor(45.15-r*.30103));var Js=new Br({useRecords:!1}),Jw=Js.unpack,eT=Js.unpackMultiple,tT=Js.unpack,el={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},rT=new Float32Array(1),SR=new Uint8Array(rT.buffer,0,4);var tl;try{tl=new TextEncoder}catch{}var rl,Uc,nl=typeof Buffer<"u",Gc=nl?Buffer.allocUnsafeSlow:Uint8Array,Ch=nl?Buffer:Uint8Array,Sh=nl?4294967296:2144337920,k,tt,M=0,Fr,Rr=null,nT=/[\u0080-\uFFFF]/,na=Symbol("record-id"),co=class extends Br{constructor(t){super(t),this.offset=0;let e,n,o,i,a,s,l=0,u=Ch.prototype.utf8Write?function(y,I,A){return k.utf8Write(y,I,A)}:tl&&tl.encodeInto?function(y,I){return tl.encodeInto(y,k.subarray(I)).written}:!1,c=this;t||(t={});let p=t&&t.sequential,f=t.structures||t.saveStructures,d=t.maxSharedStructures;if(d==null&&(d=f?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=f?32:64),p&&!t.saveStructures&&(this.structures=[]);let m=d>32||h+d>64,g=d+64,v=d+h+64;if(v>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],S=0,w=0;this.pack=this.encode=function(y,I){if(k||(k=new Gc(8192),tt=new DataView(k.buffer,0,8192),M=0),Fr=k.length-10,Fr-M<2048?(k=new Gc(k.length),tt=new DataView(k.buffer,0,k.length),Fr=k.length-10,M=0):M=M+7&2147483640,n=M,s=c.structuredClone?new Map:null,c.bundleStrings?(Rr=["",""],k[M++]=214,k[M++]=98,Rr.position=M-n,M+=4):Rr=null,o=c.structures,o){o.uninitialized&&(o=c._mergeStructures(c.getStructures()));let A=o.sharedLength||0;if(A>d)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<A;O++){let C=o[O];if(!C)continue;let N,P=o.transitions;for(let G=0,$=C.length;G<$;G++){let Y=C[G];N=P[Y],N||(N=P[Y]=Object.create(null)),P=N}P[na]=O+64}l=A}p||(o.nextId=A+64)}i&&(i=!1),a=o||[];try{if(b(y),Rr){tt.setUint32(Rr.position+n,M-Rr.position-n);let A=Rr;Rr=null,b(A[0]),b(A[1])}if(c.offset=M,s&&s.idsToInsert){M+=s.idsToInsert.length*6,M>Fr&&T(M),c.offset=M;let A=iT(k.subarray(n,M),s.idsToInsert);return s=null,A}return I&_h?(k.start=n,k.end=M,k):k.subarray(n,M)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,x.length>0&&(x=[]);else if(x.length>0&&!p){for(let A=0,O=x.length;A<O;A++)x[A][na]=0;x=[]}if(i&&c.saveStructures){let A=o.sharedLength||d;o.length>A&&(o=o.slice(0,A));let O=k.subarray(n,M);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(y)):(l=A,O)}}I&fT&&(M=n)}};let b=y=>{M>Fr&&(k=T(M));var I=typeof y,A;if(I==="string"){let O=y.length;if(Rr&&O>=8&&O<4096){let P=nT.test(y);Rr[P?0:1]+=y,k[M++]=193,b(P?-O:O);return}let C;O<32?C=1:O<256?C=2:O<65536?C=3:C=5;let N=O*3;if(M+N>Fr&&(k=T(M+N)),O<64||!u){let P,G,$,Y=M+C;for(P=0;P<O;P++)G=y.charCodeAt(P),G<128?k[Y++]=G:G<2048?(k[Y++]=G>>6|192,k[Y++]=G&63|128):(G&64512)===55296&&(($=y.charCodeAt(P+1))&64512)===56320?(G=65536+((G&1023)<<10)+($&1023),P++,k[Y++]=G>>18|240,k[Y++]=G>>12&63|128,k[Y++]=G>>6&63|128,k[Y++]=G&63|128):(k[Y++]=G>>12|224,k[Y++]=G>>6&63|128,k[Y++]=G&63|128);A=Y-M-C}else A=u(y,M+C,N);A<32?k[M++]=160|A:A<256?(C<2&&k.copyWithin(M+2,M+1,M+1+A),k[M++]=217,k[M++]=A):A<65536?(C<3&&k.copyWithin(M+3,M+2,M+2+A),k[M++]=218,k[M++]=A>>8,k[M++]=A&255):(C<5&&k.copyWithin(M+5,M+3,M+3+A),k[M++]=219,tt.setUint32(M,A),M+=4),M+=A}else if(I==="number")if(y>>>0===y)y<64?k[M++]=y:y<256?(k[M++]=204,k[M++]=y):y<65536?(k[M++]=205,k[M++]=y>>8,k[M++]=y&255):(k[M++]=206,tt.setUint32(M,y),M+=4);else if(y>>0===y)y>=-32?k[M++]=256+y:y>=-128?(k[M++]=208,k[M++]=y+256):y>=-32768?(k[M++]=209,tt.setInt16(M,y),M+=2):(k[M++]=210,tt.setInt32(M,y),M+=4);else{let O;if((O=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){k[M++]=202,tt.setFloat32(M,y);let C;if(O<4||(C=y*Qs[(k[M]&127)<<1|k[M+1]>>7])>>0===C){M+=4;return}else M--}k[M++]=203,tt.setFloat64(M,y),M+=8}else if(I==="object")if(!y)k[M++]=192;else{if(s){let C=s.get(y);if(C){if(!C.id){let N=s.idsToInsert||(s.idsToInsert=[]);C.id=N.push(C)}k[M++]=214,k[M++]=112,tt.setUint32(M,C.id),M+=4;return}else s.set(y,{offset:M-n})}let O=y.constructor;if(O===Object)_(y,!0);else if(O===Array){A=y.length,A<16?k[M++]=144|A:A<65536?(k[M++]=220,k[M++]=A>>8,k[M++]=A&255):(k[M++]=221,tt.setUint32(M,A),M+=4);for(let C=0;C<A;C++)b(y[C])}else if(O===Map){A=y.size,A<16?k[M++]=128|A:A<65536?(k[M++]=222,k[M++]=A>>8,k[M++]=A&255):(k[M++]=223,tt.setUint32(M,A),M+=4);for(let[C,N]of y)b(C),b(N)}else{for(let C=0,N=rl.length;C<N;C++){let P=Uc[C];if(y instanceof P){let G=rl[C];if(G.write){G.type&&(k[M++]=212,k[M++]=G.type,k[M++]=0),b(G.write.call(this,y));return}let $=k,Y=tt,ie=M;k=null;let j;try{j=G.pack.call(this,y,H=>(k=$,$=null,M+=H,M>Fr&&T(M),{target:k,targetView:tt,position:M-H}),b)}finally{$&&(k=$,tt=Y,M=ie,Fr=k.length-10)}j&&(j.length+M>Fr&&T(j.length+M),M=oT(j,k,M,G.type));return}}_(y,!y.hasOwnProperty)}}else if(I==="boolean")k[M++]=y?195:194;else if(I==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))k[M++]=211,tt.setBigInt64(M,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)k[M++]=207,tt.setBigUint64(M,y);else if(this.largeBigIntToFloat)k[M++]=203,tt.setFloat64(M,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");M+=8}else if(I==="undefined")this.encodeUndefinedAsNil?k[M++]=192:(k[M++]=212,k[M++]=0,k[M++]=0);else if(I==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},_=this.useRecords===!1?this.variableMapSize?y=>{let I=Object.keys(y),A=I.length;A<16?k[M++]=128|A:A<65536?(k[M++]=222,k[M++]=A>>8,k[M++]=A&255):(k[M++]=223,tt.setUint32(M,A),M+=4);let O;for(let C=0;C<A;C++)b(O=I[C]),b(y[O])}:(y,I)=>{k[M++]=222;let A=M-n;M+=2;let O=0;for(let C in y)(I||y.hasOwnProperty(C))&&(b(C),b(y[C]),O++);k[A+++n]=O>>8,k[A+n]=O&255}:y=>{let I=Object.keys(y),A,O=a.transitions||(a.transitions=Object.create(null)),C=0;for(let P=0,G=I.length;P<G;P++){let $=I[P];A=O[$],A||(A=O[$]=Object.create(null),C++),O=A}let N=O[na];if(N)N>=96&&m?(k[M++]=((N-=96)&31)+96,k[M++]=N>>5):k[M++]=N;else{N=a.nextId,N||(N=64),N<g&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(N=a.nextOwnId,N<v||(N=g),a.nextOwnId=N+1):(N>=v&&(N=g),a.nextId=N+1);let P=I.highByte=N>=96&&m?N-96>>5:-1;O[na]=N,a[N-64]=I,N<g?(I.isShared=!0,a.sharedLength=N-63,i=!0,P>=0?(k[M++]=(N&31)+96,k[M++]=P):k[M++]=N):(P>=0?(k[M++]=213,k[M++]=114,k[M++]=(N&31)+96,k[M++]=P):(k[M++]=212,k[M++]=114,k[M++]=N),C&&(S+=w*C),x.length>=h&&(x.shift()[na]=0),x.push(O),b(I))}for(let P=0,G=I.length;P<G;P++)b(y[I[P]])},T=y=>{let I;if(y>16777216){if(y-n>Sh)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(Sh,Math.round(Math.max((y-n)*(y>67108864?1.25:2),4194304)/4096)*4096)}else I=(Math.max(y-n<<2,k.length-1)>>12)+1<<12;let A=new Gc(I);return tt=new DataView(A.buffer,0,I),k.copy?k.copy(A,0,n,y):A.set(k.slice(n,y)),M-=n,n=0,Fr=A.length-10,k=A}}useBuffer(t){k=t,tt=new DataView(k.buffer,k.byteOffset,k.byteLength),M=0}};Uc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ra];rl=[{pack(r,t,e){let n=r.getTime()/1e3;if((this.useTimestamp32||r.getMilliseconds()===0)&&n>=0&&n<4294967296){let{target:o,targetView:i,position:a}=t(6);o[a++]=214,o[a++]=255,i.setUint32(a,n)}else if(n>0&&n<17179869184){let{target:o,targetView:i,position:a}=t(10);o[a++]=215,o[a++]=255,i.setUint32(a,r.getMilliseconds()*4e6+(n/1e3/4294967296>>0)),i.setUint32(a+4,n)}else if(isNaN(n)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,r.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(n)))}}},{pack(r,t,e){let n=Array.from(r),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(n)}},{pack(r,t,e){let{target:n,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(n[o++]=212,n[o++]=101,n[o++]=0),e([r.name,r.message])}},{pack(r,t,e){let{target:n,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(n[o++]=212,n[o++]=120,n[o++]=0),e([r.source,r.flags])}},{pack(r,t){this.structuredClone?wh(r,16,t):Th(nl?Buffer.from(r):new Uint8Array(r),t)}},{pack(r,t){let e=r.constructor;e!==Ch&&this.structuredClone?wh(r,kc.indexOf(e.name),t):Th(r,t)}},{pack(r,t){let{target:e,position:n}=t(1);e[n]=193}}];function wh(r,t,e,n){let o=r.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=t,i.set(new Uint8Array(r.buffer,r.byteOffset,r.byteLength),a)}function Th(r,t){let e=r.byteLength;var n,o;if(e<256){var{target:n,position:o}=t(e+2);n[o++]=196,n[o++]=e}else if(e<65536){var{target:n,position:o}=t(e+3);n[o++]=197,n[o++]=e>>8,n[o++]=e&255}else{var{target:n,position:o,targetView:i}=t(e+5);n[o++]=198,i.setUint32(o,e),o+=4}n.set(r,o)}function oT(r,t,e,n){let o=r.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++]=n,t.set(r,e),e+=o,e}function iT(r,t){let e,n=t.length*6,o=r.length-n;for(t.sort((i,a)=>i.offset>a.offset?1:-1);e=t.pop();){let i=e.offset,a=e.id;r.copyWithin(i+n,i,o),n-=6;let s=i+n;r[s++]=214,r[s++]=105,r[s++]=a>>24,r[s++]=a>>16&255,r[s++]=a>>8&255,r[s++]=a&255,o=i}return r}function En(r){if(r.Class){if(!r.pack&&!r.write)throw new Error("Extension has no pack or write function");if(r.pack&&!r.type)throw new Error("Extension has no type (numeric code to identify the extension)");Uc.unshift(r.Class),rl.unshift(r)}bh(r)}var Ah=new co({useRecords:!1}),aT=Ah.pack,sT=Ah.pack;var{NEVER:lT,ALWAYS:cT,DECIMAL_ROUND:uT,DECIMAL_FIT:pT}=el,_h=512,fT=1024;var Ih=new co({structuredClone:!0});En({Class:Ye.prototype.constructor,type:1,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,Ye.prototype),r}});En({Class:He.prototype.constructor,type:2,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,He.prototype),r}});En({Class:Gt.prototype.constructor,type:3,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Gt.prototype),r}});En({Class:ea.prototype.constructor,type:4,write(r){return r.id},read(r){return new ea(r)}});En({Class:ta.prototype.constructor,type:5,write(r){return r.data},read(r){return new ta(r)}});En({Class:fn.prototype.constructor,type:6,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,fn.prototype),r}});function dT(r){var t=0;if(r.length===0)return t;for(let e=0;e<r.length;e++){let n=r[e];t=(t<<5)-t+n,t=t&t}return t}function Vc(r){if(io(r))return r;if(Array.isArray(r))return r.map(Vc);if(typeof r=="object"&&r!==null){let t={};for(let e of Object.keys(r).sort())t[e]=Vc(r[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(r)),t}else return r}var ol;(n=>{function r(o){return Ih.pack(o)}n.serialize=r;function t(o){return Ih.unpack(o)}n.deserialize=t;function e(o){return dT(r(Vc(o))).toString()}n.checksum=e})(ol||(ol={}));var il;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(n){return e.all.includes(n)}e.is=t})(il||(il={}));var al;(e=>{function r(n){return t(n)}e.defaultData=r;function t(n){if(n==="PointLight")return{type:n,color:dr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(n==="SpotLight")return{type:n,color:dr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(n==="DirectionalLight")return{type:n,color:dr.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(al||(al={}));var zc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(n,o){return n.castShadow===o.castShadow&&n.receiveShadow===o.receiveShadow}e.equals=t})(zc||(zc={}));var jc;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(n,o){return n.flatShading===o.flatShading&&n.side===o.side&&n.wireframe===o.wireframe}e.equals=t})(jc||(jc={}));var sl;(t=>t.defaultData={...jc.defaultData,...zc.defaultData,cloner:null,booleanExclude:null})(sl||(sl={}));var Oh=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Lh=["wrapping","image"],Dn;(n=>{function r(o,i){return o==="light"&&i?t(i):e(o)}n.defaultData=r;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:kt.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]],steps:[0,1],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:{...kt.fromHex(6710886),a:1},colorB:{...kt.fromHex(6710886),a:1},colorC:{...kt.fromHex(16777215),a:1},colorD:{...kt.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:dr.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:dr.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:dr.fromHexAndA(0,1),contourColor:dr.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}}}})(Dn||(Dn={}));var Zt;(s=>{function r(l){return!l.layers.some(c=>{if(c.data.type==="texture"&&c.data.projection!==0||c.data.type==="depth"&&!c.data.isWorldSpace||c.data.type==="noise"||c.data.type==="displace")return!0})&&!e(l)}s.isMergable=r;function t(l){let u="";return l.layers.forEach(c=>{Object.entries(c.data).forEach(([p,f])=>{u+=`${p}${f}`,Array.isArray(f)?f.forEach(d=>u+=`${d}`):typeof f=="object"?Object.values(f).forEach(d=>{typeof d=="number"?u+=`${d.toFixed(4)}`:u+=`${d}`}):u+=`${f}`})}),u}s.getHash=t;function e(l){let u=0;for(let c of l.layers)"alpha"in c.data&&c.data.type!=="light"&&c.data.type!=="fresnel"&&(u+=(1-u)*c.data.alpha);return u<1}s.isTransparent=e;function n(){return{layers:new He}}s.defaultEmptyData=n;function o(l="layer1",u="layer2"){return i("phong",l,u)}s.defaultData=o;function i(l,u="layer1",c="layer2"){let p=new He;return p.push({fi:0,data:Dn.defaultData("light",l),id:u}),p.push({fi:1,data:Dn.defaultData("color"),id:c}),{layers:p}}s.defaultTwoLayerData=i;function a(l,u="basic",c="layer1",p="layer2"){let f=Dn.defaultData("texture");Object.assign(f.texture,{image:l});let d=new He;return d.push({fi:0,data:f,id:c}),d.push({fi:1,data:Dn.defaultData("light",u),id:p}),{layers:d}}s.defaultTwoLayerTextureData=a})(Zt||(Zt={}));var ti;(t=>{function r(){return{points:new He,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=r})(ti||(ti={}));var ll;(t=>{function r(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=r})(ll||(ll={}));var Bn;(t=>{function r(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:ti.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}t.defaultData=r})(Bn||(Bn={}));var oa;(o=>{o.identity={...zs.identity,hiddenMatrix:Nn.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function n(i,a){return{position:Zo.isEqual(i.position,a.position)?null:a.position,rotation:Zo.isEqual(i.rotation,a.rotation)?null:a.rotation,scale:Zo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:Nn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?null:a.hiddenMatrix}}o.diff=n})(oa||(oa={}));var Hc;(t=>t.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(Hc||(Hc={}));var hr;(t=>t.defaultData={states:new He,events:new He,visible:!0,raycastLock:!1,physics:null,...oa.identity})(hr||(hr={}));var Nh;(t=>t.defaultData={type:"Empty",...hr.defaultData})(Nh||(Nh={}));var uo;(t=>t.defaultData={type:"Mesh",...hr.defaultData,...sl.defaultData})(uo||(uo={}));var cl;(t=>t.defaultData={...hr.defaultData,...oa.identity,...oo.defaultData})(cl||(cl={}));var Ph;(t=>{function r(e){return{...hr.defaultData,...al.defaultData(e)}}t.defaultData=r})(Ph||(Ph={}));var Mh;(o=>(o.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Nn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Hc.defaultData,states:new He,events:new He,...oo.defaultData},o.defaultMeshObject={name:"Rectangle",...hr.defaultData,...uo.defaultData,geometry:Bn.defaultData("RectangleGeometry"),material:Zt.defaultTwoLayerData("basic","layer1","layer2")},o.defaultBooleanObject={name:"Boolean",...hr.defaultData,...uo.defaultData,geometry:Bn.defaultData("BooleanGeometry"),material:Zt.defaultTwoLayerData("phong","layer1","layer2")},o.defaultTextObject={name:"Text",...hr.defaultData,...uo.defaultData,geometry:Bn.defaultData("TextGeometry"),material:Zt.defaultTwoLayerData("phong","layer1","layer2")}))(Mh||(Mh={}));var Eh;(e=>{function r(n,o){if(o===void 0)return n;let i={...n};return"material"in i&&"material"in o&&o.material&&(i.material=Lc(i.material,a=>{if(typeof a!="string")for(let[s,l]of Object.entries(o.material.layers)){let u=a.layers.data(s);u&&no(u,l)}}).data),i.materials&&o.materials&&(i.materials=Lc(i.materials,a=>{for(let s=0;s<i.materials.length;s++){let l=o.materials[s];if(typeof l!="string")for(let[u,c]of Object.entries(l.layers)){let p=a[s]?.layers?.data(u);p&&no(p,c)}}}).data),i}e.patchMaterialState=r;function t(n,o){if(o===void 0)return n;let i={...n};if(Object.assign(i,oa.merge(i,o)),Ko.is(n.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let a=o;a.orthographic?.zoom!==void 0&&(i.orthographic.zoom=a.orthographic.zoom),a.perspective?.zoom!==void 0&&(i.perspective.zoom=a.perspective.zoom),a.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=a.isUpVectorFlipped),a.targetOffset!==void 0&&(i.targetOffset=a.targetOffset)}else if(n.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=r(i,o);else if(il.is(n.type)){let a=o;a.intensity!==void 0&&(i.intensity=a.intensity),a.color!==void 0&&(typeof a.color=="string"?i.color=a.color:i.color=kt.clone(a.color))}return i}e.patch=t})(Eh||(Eh={}));var ri;(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,isTouchZoom:!0,orbitTouches:2,panTouches:3})(ri||(ri={}));var ul;(t=>t.defaultData={orbitControls:ri.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:1,stopMode:"manual",duration:5e3},web:{compress:!0,preset:1,preload:!0}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,n)=>{let o=0,i=0;return n<5?i=-30:n<10&&(i=30),n===0||n===10||n===5?o=30:(n===4||n===11||n===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null})(ul||(ul={}));var pl;(e=>{function r(){let n={};return n["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},to(n,Ye.prototype)}e.defaultColors=r;function t(){return{materials:new Ye,images:new Ye,colors:new Ye,audios:new Ye,fonts:new Ye,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(pl||(pl={}));function Dh(r){r.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,n=t.colorB,o=[[e.r,e.g,e.b,e.a],[n.r,n.g,n.b,n.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Tc(Ut(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...Ut(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Wc(r,t){Object.values(r.shared.materials).forEach(e=>t(e))}function qc(r,t){r.scene.objects.traverse((e,n)=>{"materials"in n?n.materials.forEach(o=>{typeof o!="string"&&t(o)}):"material"in n&&typeof n.material!="string"&&t(n.material)})}function hT(r){Object.assign(r.scene.publish,{orbitControls:{...ri.defaultData,...Ut(r.scene.publish.orbitControls)}})}function mT(r){Object.assign(r.scene.publish.settings,{video:{...ul.defaultData.settings.video,...Ut(r.scene.publish.settings.video)}})}function gT(r){function t(e){if(e.layers){for(let n of Object.values(e.layers))if(n){for(let[o,i]of Object.entries(n))if((Oh.includes(o)||typeof i=="boolean")&&delete n[o],o==="texture")for(let[a,s]of Object.entries(i))(Lh.includes(a)||typeof s=="boolean")&&delete i[a]}}}r.scene.objects.traverse((e,n)=>{n.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(a=>{t(a)})})})}function yT(r){r.scene.publish.withBackground=!0}function vT(r){r.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function xT(r){r.scene.objects.traverse((t,e)=>{let n=e.cloner;n&&(n.radial.scale=n.radial.scale.map(o=>o+1),n.linear.scale=n.linear.scale.map(o=>o+1))})}function bT(r){r.scene.objects.traverse((t,e)=>{let n=e.geometry;n&&(n.type==="DodecahedronGeometry"||n.type==="IcosahedronGeometry")&&(n.detail=Math.round(n.detail))})}function ST(r){r.scene.objects.traverse((t,e)=>{let n=r.scene.objects.parent(t);e.type==="Mesh"&&(!n||r.scene.objects.data(n).geometry?.type!=="BooleanGeometry")&&(e.booleanExclude=null)})}function Bh(r){r.layers===void 0&&Object.assign(r,Zt.defaultTwoLayerData("lambert"))}function Xc(r){!r.layers||r.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let n=[...t.steps];n.push(t.steps[9]);let o={...Ut(t),colors:e,steps:n};Object.assign(t,o)}})}function wT(r){r.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Fh(r){r.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(n=>{typeof n!="string"&&Xc(n)}):"material"in e&&typeof e.material!="string"&&Xc(e.material)}),Object.values(r.shared.materials).forEach(t=>Xc(t))}function TT(r){r.scene.environment.ambientLight.softShadows=!1,r.scene.environment.ambientLight.softShadowQuality="low",r.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),r.shared.penumbraSize=new Array(5).fill(.5)}function CT(r){r.shared.audios=to({},Ye.prototype)}function AT(r){let t=r.shared.materials;Object.entries(t).forEach(([e,n])=>{if(!n.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"basic",alpha:1,visible:!0,mode:0},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function _T(r){Object.entries(Ut(r.shared.images)).filter(n=>n[1].asset===!1).map(n=>n[0]).forEach(n=>{delete r.shared.images[n]}),Object.entries(Ut(r.shared.audios)).filter(n=>n[1].asset===!1).map(n=>n[0]).forEach(n=>{delete r.shared.audios[n]})}function IT(r){r.scene.publish.settings.web.preload=!1}function Rh(r){r.layers&&r.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function OT(r){r.shared.fonts=to({},Ye.prototype)}function LT(r){return r.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function NT(r){let t=[];r.scene.objects.traverse((e,n)=>{let o=n;if(o.type==="TextFrame"){let i=Zt.defaultTwoLayerData("basic"),a=typeof o.color=="string"?r.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=LT(o.font);r.shared.fonts[s]===void 0&&(r.shared.fonts[s]={name:s});let l={name:o.name,...hr.defaultData,...uo.defaultData,flatShading:!1,wireframe:!1,geometry:{...Bn.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:Ut(o.states),events:Ut(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Ut(r.scene.objects).parent(e);r.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{r.scene.objects.delete(e)})}var kh=20;function Gh(r){let t=r.schema??0;t!==kh&&(console.warn("updating from ",t,"to ",kh),t<1&&(qc(r,Dh),Wc(r,Dh),r.schema=1),t<2&&(hT(r),r.schema=2),t<3&&(gT(r),r.schema=3),t<4&&(yT(r),r.schema=4),t<5&&(vT(r),r.schema=5),t<6&&(xT(r),r.schema=6),t<7&&(bT(r),r.schema=7),t<8&&(ST(r),r.schema=8),t<9&&(Fh(r),r.schema=9),t<10&&(wT(r),r.schema=10),t<11&&(TT(r),r.schema=11),t<12&&(Fh(r),r.schema=12),t<13&&(CT(r),r.schema=13),t<14&&(AT(r),r.schema=14),t<15&&(_T(r),r.schema=15),t<16&&(IT(r),r.schema=16),t<17&&(qc(r,Rh),Wc(r,Rh),r.schema=17),t<18&&(qc(r,Bh),Wc(r,Bh),r.schema=18),t<19&&(mT(r),r.schema=19),t<20&&(OT(r),NT(r),r.schema=20))}var fl;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(fl||(fl={}));var at=require("three");var Uh=require("three"),Yc=class extends Uh.Object3D{},dl=class extends Yc{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 po=class extends at.Object3D{constructor(e,n={}){super();this.object=e;let o=e.recursiveBBox.getSize(new at.Vector3),i=.1;this.parameters=js.defaultData(o.toArray(),i),no(this.parameters,n),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 n=0,o=e-this.children.length;n<o;++n){let i=new dl(this.object);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let n=0,o=this.children.length-e;n<o;++n)this.remove(this.children[0])}_updateRadial(e){let n=e.radial,o=n.start*at.MathUtils.DEG2RAD,i=n.end*at.MathUtils.DEG2RAD,a=o-i,s=new at.Euler(n.rotation[0]*at.MathUtils.DEG2RAD,n.rotation[1]*at.MathUtils.DEG2RAD,n.rotation[2]*at.MathUtils.DEG2RAD),l;switch(n.axis){case"z":l=new at.Vector3(0,0,1);break;case"y":l=new at.Vector3(0,1,0);break;default:case"x":l=new at.Vector3(1,0,0);break}for(let[u,c]of this.children.entries()){c.scale.x=n.scale[0],c.scale.y=n.scale[1],c.scale.z=n.scale[2],c.position.setScalar(0);let p=a/e.count*u-o;switch(n.axis){case"x":c.rotation.set(0,p,0);break;case"y":c.rotation.set(0,0,p);break;case"z":c.rotation.set(p,0,0);break}c.translateOnAxis(l,n.radius),c.position.x+=n.position[0],c.position.y+=n.position[1],c.position.z+=n.position[2],n.alignment===!0?(c.rotation.x+=s.x,c.rotation.y+=s.y,c.rotation.z+=s.z):c.rotation.copy(s)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let n=e.linear,o=new at.Euler(n.rotation[0]*at.MathUtils.DEG2RAD,n.rotation[1]*at.MathUtils.DEG2RAD,n.rotation[2]*at.MathUtils.DEG2RAD);for(let[i,a]of this.children.entries())a.scale.x=1+(n.scale[0]-1)*i,a.scale.y=1+(n.scale[1]-1)*i,a.scale.z=1+(n.scale[2]-1)*i,a.rotation.x=o.x*i,a.rotation.y=o.y*i,a.rotation.z=o.z*i,a.position.x=n.position[0]*i,a.position.y=n.position[1]*i,a.position.z=n.position[2]*i}_updateGrid(e){let n=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},a=new at.Vector3(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 s=0;s<o.count[0];s++)for(let l=0;l<o.count[1];l++)for(let u=0;u<o.count[2];u++){let c=this.children[n++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*s-a.x,c.position.y=o.size[1]*l-a.y,c.position.z=o.size[2]*u-a.z}}else for(let i=0;i<o.count[0];i++)for(let a=0;a<o.count[1];a++)for(let s=0;s<o.count[2];s++){let l=this.children[n++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*i,l.position.y=-o.size[1]*a,l.position.z=-o.size[2]*s}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),no(this.parameters,e),this.update(),this}};var on=require("three");var qe=require("three");var Vh=require("three"),kr=r=>{var t;return t=class extends r{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new Vh.BoxBufferGeometry(30,30,30),t};var Tt=require("three");var Ot=require("three"),hl=new Ot.Ray,$c=new Ot.Sphere,zh=new Ot.Matrix4,Gr=(r,t,e,n,o=!1)=>{let i=t,a=r.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),$c.copy(i.boundingSphere),$c.applyMatrix4(a),e.ray.intersectsSphere($c)===!1||(zh.copy(a).invert(),hl.copy(e.ray).applyMatrix4(zh),i.boundingBox!==null&&hl.intersectsBox(i.boundingBox)===!1))return;let s,l,u,c,p=i.index,f=i.attributes.position,d=i.drawRange,h,m;if(o===!1){let v=Math.max(0,d.start),x=Math.min(p.count,d.start+d.count);for(h=v,m=x;h<m;h+=3)if(l=p.getX(h),u=p.getX(h+1),c=p.getX(h+2),s=g(r,e,hl,f,l,u,c),s){s.faceIndex=Math.floor(h/3),n.push(s);return}}else{let x=i.attributes.position,S=new Ot.Vector3,w=new Ot.Vector3,b=new Ot.Vector3,_=new Ot.Vector3,T=2,I=1/((r.scale.x+r.scale.y+r.scale.z)/3),A=I*I,O=Math.max(0,d.start),C=Math.min(x.count,d.start+d.count);for(let N=O,P=C-1;N<P;N+=T){if(S.fromBufferAttribute(x,N),w.fromBufferAttribute(x,N+1),hl.distanceSqToSegment(S,w,_,b)>A)continue;_.applyMatrix4(r.matrixWorld);let $=e.ray.origin.distanceTo(_);$<e.near||$>e.far||n.push({distance:$,point:b.clone().applyMatrix4(r.matrixWorld),object:r})}}function g(v,x,S,w,b,_,T){let y=new Ot.Vector3,I=new Ot.Vector3,A=new Ot.Vector3,O=new Ot.Vector3,C=new Ot.Vector3;if(y.fromBufferAttribute(w,b),I.fromBufferAttribute(w,_),A.fromBufferAttribute(w,T),S.intersectTriangle(y,I,A,!1,O)===null)return null;C.copy(O),C.applyMatrix4(v.matrixWorld);let P=x.ray.origin.distanceTo(C);return P<x.near||P>x.far?null:{faceIndex:1,distance:P,point:C.clone(),object:v}}};var ml=new Tt.Vector3,sr=new Tt.Camera,Kc=class extends Tt.LineSegments{constructor(e){let n=new Tt.BufferGeometry,o=new Tt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new Tt.Color(15711266),u=new Tt.Color(15711266),c=new Tt.Color(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",u),p("p","n2",u),p("p","n3",u),p("p","n4",u),p("u1","u2",c),p("u2","u3",c),p("u3","u1",c);function p(d,h,m){f(d,m),f(h,m)}function f(d,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[d]===void 0&&(s[d]=[]),s[d].push(i.length/3-1)}n.setAttribute("position",new Tt.Float32BufferAttribute(i,3)),n.setAttribute("color",new Tt.Float32BufferAttribute(a,3));super(n,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,n=this.pointMap,o=!0;sr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;mr("n1",n,e,sr,-i,-a,s),mr("n2",n,e,sr,i,-a,s),mr("n3",n,e,sr,-i,a,s),mr("n4",n,e,sr,i,a,s);let l=s;mr("f1",n,e,sr,-i,-a,l),mr("f2",n,e,sr,i,-a,l),mr("f3",n,e,sr,-i,a,l),mr("f4",n,e,sr,i,a,l);let u=l,c=.5;mr("u1",n,e,sr,i*.7*c,a*1.1,u),mr("u2",n,e,sr,-i*.7*c,a*1.1,u),mr("u3",n,e,sr,0,a*(1.1+.9*c),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function mr(r,t,e,n,o,i,a){ml.set(o,i,a).unproject(n);let s=t[r];if(s!==void 0){let l=e.getAttribute("position");for(let u=0,c=s.length;u<c;u++)l.setXYZ(s[u],ml.x,ml.y,ml.z)}}var gl=class extends kr(Kc){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,n){Gr(this.object,this.geometry,e,n,!0)}};var jh=require("three");var ni=class extends kr(jh.DirectionalLightHelper){constructor(e,n=15,o=10066329){super(e,n,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,n){Gr(this.object,ni.geometryHelper,e,n)}};var Hh=require("three");var oi=class extends kr(Hh.AxesHelper){constructor(e,n=15){super(n);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,n){Gr(this.object,oi.geometryHelper,e,n)}update(){}};var Wh=require("three");var ii=class extends kr(Wh.PointLightHelper){constructor(e,n=15,o=6710886){super(e,n,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,n){Gr(this.object,ii.geometryHelper,e,n)}};var vl=require("three");var yl=class extends kr(vl.SpotLightHelper){constructor(e,n=6710886){super(e,n);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,n){Gr(this.object,yl.geometryHelper,e,n)}update(){if(this.object!==void 0){let e=yl._vector,n=this.object.distance?this.object.distance:1e3,o=n*Math.tan(this.object.angle);this.cone.scale.set(o,o,n),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},aa=yl;aa._vector=new vl.Vector3;var we=require("three"),sa=1e-12,ai=class{constructor(t){this.position=new we.Vector2;this.startPosition=new we.Vector2;this.uuid=we.MathUtils.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 ai(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},si=class extends ai{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new si(this.parent).copy(this)}},gr=class extends ai{constructor(e,n){super(n);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new si(this),new si(this))}static create(e,n){let o=new gr(e,new we.Vector2(...n.position));return o.controls[0].position.set(...n.controlPrevious.position),o.controls[1].position.set(...n.controlNext.position),o.roundness=n.roundness,o.areControlsDirectionsMirrored=n.areControlsDirectionsMirrored,o}getOppositeControl(e){let n=this.controls.indexOf(e);return n===0?this.controls[1]:n===1?this.controls[0]:null}applyOffsetToControls(e,n=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=n?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new gr(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),n=this.curveAfter?.getTangentAt(0);return[e,n]}computeNormals(e=new we.Vector2,n=new we.Vector2){let[o,i]=this.computeTangents();return o&&i&&(qh(o,e),qh(i,n)),[e,n]}computeTangent(e=new we.Vector2){let[n,o]=this.computeTangents();return n&&o&&e.copy(n).add(o).normalize(),e}computeNormal(e=new we.Vector2){let[n,o]=this.computeNormals();return e.copy(n).add(o).normalize(),e}};function qh(r,t=new we.Vector2){let e=r.length();return t.set(-r.y/e,r.x/e)}var Qc=r=>r,li=new we.Vector2,xl=new we.Vector2,MT=new we.Vector2,ET=new we.Vector2,DT=new we.Vector2,BT=new we.Vector2,Yh=new we.Vector3,$h=new we.Vector3;function Kh(r){let t=new we.Vector2;t.addVectors(r.v0,li.subVectors(r.v1,r.v0).multiplyScalar(2/3));let e=new we.Vector2;return e.addVectors(r.v2,xl.subVectors(r.v1,r.v2).multiplyScalar(2/3)),new we.CubicBezierCurve(r.v0,t,e,r.v2)}function la(r,t,e=Number.EPSILON){return Math.abs(r-t)<e}function FT(r,t,e=Number.EPSILON){return r.distanceTo(t)<e}function RT(r,t,e=Number.EPSILON){return r.distanceTo(t)<e}function Jc(r,t,e){let n=Math.sqrt(Math.pow(t.x-r.x,2)+Math.pow(t.y-r.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-r.x,2)+Math.pow(e.y-r.y,2));return Math.acos((o*o+n*n-i*i)/(2*o*n))}function Zh(r,t,e){return Xh(r,t)&&Xh(t,e)&&Zc(r.position,t.position,e.position)}function Zc(r,t,e){return li.copy(t).sub(r).cross(xl.copy(e).sub(r))===0}function Qh(r,t,e,n,o){let i=Math.sqrt(Math.pow(t.x-r.x,2)+Math.pow(t.y-r.y,2)),a=(r.y+t.y)/2,s=(r.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.y-t.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-r.x)/i;return n.set(s+l,a+u),o.set(s-l,a-u),[n,o]}function Jh(r,t,e){let n=r.distanceTo(e),o=t.distanceTo(e);return n<o?t:r}function em(r,t,e,n,o,i){let a=t.x-r.x,s=t.y-r.y,l=e.x-r.x,u=e.y-r.y,c=Math.sqrt((a+l)*(a+l)+(s+u)*(s+u)),p;return Jc(t,r,e)>Math.PI&&(c*=-1),la(u,s)?p=(s+u)*(n/c-.5)*8/3/(a-l):p=(a+l)*(n/c-.5)*8/3/(u-s),o.set(t.x-p*s,t.y+p*a),i.set(e.x+p*u,e.y-p*l),[o,i]}function eu(r,t){return r.position.equals(r.controls[1].position)&&t.position.equals(t.controls[0].position)}function Xh(r,t){return Zc(r.position,r.controls[1].position,t.position)&&Zc(r.position,t.controls[0].position,t.position)}function tm(r,t,e,n,o=.5){let i=li.subVectors(t,r).multiplyScalar(o).add(r),a=xl.subVectors(e,t).multiplyScalar(o).add(t),s=MT.subVectors(n,e).multiplyScalar(o).add(e),l=i,u=ET.subVectors(a,i).multiplyScalar(o).add(i),c=DT.subVectors(s,a).multiplyScalar(o).add(a),p=s,f=BT.subVectors(c,u).multiplyScalar(o).add(u);return[r.x,r.y,l.x,l.y,u.x,u.y,f.x,f.y,c.x,c.y,p.x,p.y,n.x,n.y]}function rm(r,t,e=12,n=!0){let o=$h.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let u=Qc(t[l]),c=li,p=Fn(u,e);s.push(p);for(let f=0;f<=p;f++)if(u instanceof we.CubicBezierCurve||u instanceof we.QuadraticBezierCurve||u instanceof we.LineCurve){if(u.getPoint(f/p,c),o.set(c.x,c.y,0),i!==void 0&&RT(i,o))continue;i===void 0&&(i=Yh),i.copy(o),r.setXYZ(a,o.x,o.y,o.z),a++}}return n&&a>1&&!(r.getX(a-1)===r.getX(0)&&r.getY(a-1)===r.getY(0)&&r.getZ(a-1)===r.getZ(0))&&(r.setXYZ(a,r.getX(0),r.getY(0),r.getZ(0)),a++),r}function nm(r,t,e,n=12,o=!0){let i=$h.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let u,c=Qc(t[l]),p=li,f=Fn(c,n);s.push(f);for(let d=0;d<=f;d++)if(c instanceof we.CubicBezierCurve||c instanceof we.QuadraticBezierCurve||c instanceof we.LineCurve){if(c.getPoint(d/f,p),i.set(p.x,p.y,0),u?.equals(i))continue;u===void 0?u=Yh:(r.setXYZ(a,u.x,u.y,u.z),a++,r.setXYZ(a,i.x,i.y,i.z),a++),u.copy(i)}}return o&&a>1&&!(r.getX(a-1)===r.getX(0)&&r.getY(a-1)===r.getY(0)&&r.getZ(a-1)===r.getZ(0))&&(r.setXYZ(a,r.getX(0),r.getY(0),r.getZ(0)),a++),s}function tu(r,t=12,e=!1){let n=[];for(let o=0,i=r.length;o<i;o++){let a=r[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=Fn(a.roundedCurveCorner,t)*.5;o>0&&(n[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=Fn(a.curveAfter,t)),n.push(s)}return r.length>0&&e&&r[0].roundedCurveCorner!==void 0&&(n[r.length-1]+=Fn(r[0].roundedCurveCorner,t)*.5),n}function Fn(r,t=12){return r&&r instanceof we.EllipseCurve?t*2:r&&(r instanceof we.LineCurve||r instanceof we.LineCurve3)?1:r&&r instanceof we.SplineCurve?t*r.points.length:t}function om(r,t,e=12,n=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=Qc(t[a]),l=Fn(s,e),u=li;for(let c=0;c<=l;c++)if(s instanceof we.CubicBezierCurve||s instanceof we.QuadraticBezierCurve||s instanceof we.LineCurve){if(s.getPoint(c/l,u),o!==void 0&&FT(o,u,sa))continue;o===void 0&&(o=xl),o.copy(u),r.push(u.x,u.y),i++}}return la(r[0],r[r.length-2],sa)&&la(r[1],r[r.length-1],sa)&&(r.pop(),r.pop()),n&&i>1&&!(la(r[i-1],r[1],sa)&&la(r[i-2],r[0],sa))&&(r.push(r[0],r[1]),i++),r}var Hn=require("three");var Ie=require("three");var ru=new Ie.Vector2,kT=new Ie.Vector2,GT=new Ie.Vector2,UT=new Ie.Vector2,VT=new Ie.Vector2,zT=new Ie.Vector2,Le=class extends Ie.Shape{constructor(e=100,n=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Ie.EventDispatcher;this.plane=new Ie.Plane(new Ie.Vector3(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=Ie.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=n}static createFromState(e,n,o){let i=new Le;return i.isClosed=e.isClosed,i.points=e.points.map(a=>gr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Le.createFromState(a)),n!==void 0&&o!==void 0&&i.applySize(n,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 n=0,o=this.points.length;n<o;n++)this.points[n].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(n=>this.getPointIndexById(n)).filter(n=>n>=0)}getPointIndexById(e){let n=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=n;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],u=l.points.length,c=l.getPointIndexById(e);if(c<0)i+=u;else return c+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let n=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-n;if(s<=a.points.length-1)return a.points[s];n+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let n=this.points.indexOf(e);if(n>=0)return n;if(n=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return n+s;n+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(n=>n.points));return[...this.points,...e]}applySize(e,n){e===0&&(e=.001),n===0&&(n=.001),this._width=e,this._height=n}applyScale(e,n){let o=ru.set(e,n);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,n);this._update(!1)}createPoint(e,n=0,o=Ie.MathUtils.generateUUID()){let i;e instanceof Ie.Vector2?i=e:i=new Ie.Vector2(e,n);let a=new gr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,n){this.points.splice(n,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let n=0,o=this.points.length;n<o;n++){let i=this.points[n];if(i.uuid===e)return i}for(let n=0,o=this.shapeHoles.length;n<o;n++){let a=this.shapeHoles[n].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let n=this.points.indexOf(e);n>=0&&this.points.splice(n,1),this.needsUpdate=!0}removePointById(e){let n=this.points.find(o=>o.uuid===e);n&&this.removePoint(n)}update(e=!0){for(let n=0,o=this.shapeHoles.length;n<o;n++)this.shapeHoles[n].update(!1);this._update(e)}extractShapePointsToBuffer(e,n=12,o=!1){this.subdivision=n,this.curveDivisions===void 0&&this.computeCurveDivisions(n);let i=o?this.roundedCurveDivisions:this.curveDivisions;return rm(e,o?this.roundedCurves:this.curves,n,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=tu(this.points,e,!1),this.roundedCurveDivisions=tu(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,n,o=12){return nm(e,this.curves,n,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,n=12){return this.subdivision=n,this.curveDivisions===void 0&&this.computeCurveDivisions(n),om(e,this.roundedCurves,n,this.autoClose)}getCurveIndexFromVertexId(e,n=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=n?this.roundedCurveDivisions:this.curveDivisions,a=0;n&&this.points[0].roundedCurveCorner!==void 0&&(a=Fn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,u)=>l+u,0));for(let l=0,u=i.length;l<u;l++){let c=i[l];if(s<o+c)return[l,(s-o+1)/c];o+=c}return[0,1]}getCurveT(e,n,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(eu(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(ru.set(o.x,o.y))/p}let u=0;for(let p=0;p<e;p++)u+=s[p];return(n-u)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,n){eu(n,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(n.controls[1].position.x,n.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,n.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,n.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 a=this.points[o];if(o===0)this.moveTo(a.position.x,a.position.y);else{let s=this.points[o-1];this._applyCurveForPoint(a,s)}}let n=this.getLastPoint();if(n?.curveAfter&&(n.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,a=this.points.length;i<a;i++){let s=this.points[i],l=this.points[i-1]??this.points[this.points.length-1],u=this.points[i+1]??this.points[0],c=s.roundness,p=l&&u&&Zh(l,s,u);if(!s.controlsMoved()&&c>0&&!p){let f=s.curveBefore,d=s.curveAfter;if(f===void 0||d===void 0)continue;let h=s.roundedCurveBefore,m=s.roundedCurveAfter,g=f.getLength(),v=d.getLength(),x=Math.min(c,g*.499),S=Math.min(c,v*.499),w=Math.min(x,S),b=1-w/g,_=w/v,T=f.getPointAt(b,ru),y=d.getPointAt(_,kT);this._subSplitCurve(f,h,b,T,void 0),this._subSplitCurve(d,m,_,void 0,y);let I;if(this.useCubicForRoundedCorners){let A=Jc(T,s.position,y)/2,O=Math.tan(A)*T.distanceTo(s.position),[C,N]=Qh(T,y,O,GT,UT),P=Jh(C,N,s.position),[G,$]=em(P,T,y,O,VT,zT);I=new Ie.CubicBezierCurve(T.clone(),G.clone(),$.clone(),y.clone())}else I=new Ie.QuadraticBezierCurve(T.clone(),s.position.clone(),y.clone());s.roundedCurveCorner=I,this.roundedCurves.splice(i+o,0,I),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,n,o,i,a){if(e instanceof Ie.LineCurve)i!==void 0&&n.v2.copy(i),a!==void 0&&n.v1.copy(a);else{let s=e,l=n,u=s.getUtoTmapping(o,0),c=tm(s.v0,s.v1,s.v2,s.v3,u);return i!==void 0&&(l.v0.set(c[0],c[1]),l.v1.set(c[2],c[3]),l.v2.set(c[4],c[5]),l.v3.set(c[6],c[7])),a!==void 0&&(l.v0.set(c[6],c[7]),l.v1.set(c[8],c[9]),l.v2.set(c[10],c[11]),l.v3.set(c[12],c[13])),l}return n}clone(){let e=new Le(this._width,this._height);return e.points=this.points.map(n=>n.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(n=>n.clone()),e}toJSON(){return{points:this.points.reduce((e,n)=>e.concat(n.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let n=e.points.length/7;for(let o=0;o<n;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],u=e.points[i+3],c=e.points[i+4],p=e.points[i+5],f=e.points[i+6],d=new gr(Ie.MathUtils.generateUUID(),new Ie.Vector2(a,s));d.controls[0].position.set(l,u),d.controls[1].position.set(c,p),d.roundness=f,this.points.push(d)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Le;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let n=(i,a)=>{a instanceof Ie.CubicBezierCurve&&a.v3.equals(i.position)&&i.controls[0].position.copy(a.v2)},o=i=>{let a=[],s,l;for(s=0,l=i.length;s<l;s++)i[s]instanceof Ie.QuadraticBezierCurve&&(i[s]=Kh(i[s]));for(s=0,l=i.length;s<l;s++){let p=i[s],f=s>0?i[s-1]:null,d;p instanceof Ie.CubicBezierCurve?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof Ie.LineCurve&&(d=this.createPoint(p.v1)),d!==void 0&&(f!==null&&n(d,f),a.push(d))}let u=i[i.length-1],c=!1;return u instanceof Ie.CubicBezierCurve?u.v3.equals(a[0].position)&&(a[0].controls[0].position.copy(u.v2),c=!0):u instanceof Ie.LineCurve&&u.v2.equals(a[0].position)&&(c=!0),this.isClosed=c,a};return this.points=o(e.curves),e instanceof Ie.Shape&&(this.shapeHoles=e.holes.map(i=>{let a=new Le;return a.fromShape(i),a})),this.update(),this}};var ho=require("three");var ke;(function(r){r[r.ODD=0]="ODD",r[r.NONZERO=1]="NONZERO",r[r.POSITIVE=2]="POSITIVE",r[r.NEGATIVE=3]="NEGATIVE",r[r.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(ke||(ke={}));var lt;(function(r){r[r.POLYGONS=0]="POLYGONS",r[r.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",r[r.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(lt||(lt={}));function me(r,t){if(!r)throw t||"Assertion Failed!"}var de=function(){function r(){}return r.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},r.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},r.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},r.edgeGoesLeft=function(t){return r.vertLeq(t.Dst,t.Org)},r.edgeGoesRight=function(t){return r.vertLeq(t.Org,t.Dst)},r.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},r.edgeEval=function(t,e,n){me(r.vertLeq(t,e)&&r.vertLeq(e,n));var o=e.s-t.s,i=n.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-n.t)*(o/(o+i)):e.t-n.t+(n.t-t.t)*(i/(o+i)):0},r.edgeSign=function(t,e,n){me(r.vertLeq(t,e)&&r.vertLeq(e,n));var o=e.s-t.s,i=n.s-e.s;return o+i>0?(e.t-n.t)*o+(e.t-t.t)*i:0},r.transEval=function(t,e,n){me(r.transLeq(t,e)&&r.transLeq(e,n));var o=e.t-t.t,i=n.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-n.s)*(o/(o+i)):e.s-n.s+(n.s-t.s)*(i/(o+i)):0},r.transSign=function(t,e,n){me(r.transLeq(t,e)&&r.transLeq(e,n));var o=e.t-t.t,i=n.t-e.t;return o+i>0?(e.s-n.s)*o+(e.s-t.s)*i:0},r.vertCCW=function(t,e,n){return t.s*(e.t-n.t)+e.s*(n.t-t.t)+n.s*(t.t-e.t)>=0},r.interpolate=function(t,e,n,o){return t=t<0?0:t,n=n<0?0:n,t<=n?n===0?(e+o)/2:e+(o-e)*(t/(t+n)):o+(e-o)*(n/(t+n))},r.intersect=function(t,e,n,o,i){var a,s,l;r.vertLeq(t,e)||(l=t,t=e,e=l),r.vertLeq(n,o)||(l=n,n=o,o=l),r.vertLeq(t,n)||(l=t,t=n,n=l,l=e,e=o,o=l),r.vertLeq(n,e)?r.vertLeq(e,o)?(a=r.edgeEval(t,n,e),s=r.edgeEval(n,e,o),a+s<0&&(a=-a,s=-s),i.s=r.interpolate(a,n.s,s,e.s)):(a=r.edgeSign(t,n,e),s=-r.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),i.s=r.interpolate(a,n.s,s,o.s)):i.s=(n.s+e.s)/2,r.transLeq(t,e)||(l=t,t=e,e=l),r.transLeq(n,o)||(l=n,n=o,o=l),r.transLeq(t,n)||(l=t,t=n,n=l,l=e,e=o,o=l),r.transLeq(n,e)?r.transLeq(e,o)?(a=r.transEval(t,n,e),s=r.transEval(n,e,o),a+s<0&&(a=-a,s=-s),i.t=r.interpolate(a,n.t,s,e.t)):(a=r.transSign(t,n,e),s=-r.transSign(t,o,e),a+s<0&&(a=-a,s=-s),i.t=r.interpolate(a,n.t,s,o.t)):i.t=(n.t+e.t)/2},r}(),ca=function(){function r(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return r}(),bl=function(){function r(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(r.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),r}(),ci=function(){function r(){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 r}(),im=function(){function r(){var t=new ci,e=new ca,n=new bl(0),o=new bl(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,n.next=n,n.Sym=o,o.next=o,o.Sym=n,this.vHead=t,this.fHead=e,this.eHead=n,this.eHeadSym=o}return r.prototype.makeEdge_=function(t){var e=new bl(0),n=new bl(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return n.next=o,o.Sym.next=e,e.next=t,t.Sym.next=n,e.Sym=n,e.Onext=e,e.Lnext=n,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,n.Sym=e,n.Onext=n,n.Lnext=e,n.Org=null,n.Lface=null,n.winding=0,n.activeRegion=null,e},r.prototype.splice_=function(t,e){var n=t.Onext,o=e.Onext;n.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=n},r.prototype.makeVertex_=function(t,e,n){var o=t;me(o,"Vertex can't be null!");var i=n.prev;o.prev=i,i.next=o,o.next=n,n.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},r.prototype.makeFace_=function(t,e,n){var o=t;me(o,"Face can't be null");var i=n.prev;o.prev=i,i.next=o,o.next=n,n.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=n.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},r.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,n=t.Sym.next;e.Sym.next=n,n.Sym.next=e},r.prototype.killVertex_=function(t,e){var n=t.anEdge,o=n;do o.Org=e,o=o.Onext;while(o!==n);var i=t.prev,a=t.next;a.prev=i,i.next=a},r.prototype.killFace_=function(t,e){var n=t.anEdge,o=n;do o.Lface=e,o=o.Lnext;while(o!==n);var i=t.prev,a=t.next;a.prev=i,i.next=a},r.prototype.makeEdge=function(){var t=new ci,e=new ci,n=new ca,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(n,o,this.fHead),o},r.prototype.splice=function(t,e){var n=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(n=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new ci;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!n){var a=new ca;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},r.prototype.delete=function(t){var e=t.Sym,n=!1;if(t.Lface!==t.Rface&&(n=!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),!n){var o=new ca;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)},r.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),n=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new ci;return this.makeVertex_(o,n,e.Org),e.Lface=n.Lface=t.Lface,e},r.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),n=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,n),t.Dst=n.Org,n.Dst.anEdge=n.Sym,n.Rface=t.Rface,n.winding=t.winding,n.Sym.winding=t.Sym.winding,n.idx=t.idx,n.Sym.idx=t.Sym.idx,n},r.prototype.connect=function(t,e){var n=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(n=!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,!n){var a=new ca;this.makeFace_(a,o,t.Lface)}return o},r.prototype.zapFace=function(t){var e=t.anEdge,n,o,i,a,s;o=e.Lnext;do n=o,o=n.Lnext,n.Lface=null,n.Rface===null&&(n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),i=n.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(n));while(n!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},r.prototype.countFaceVerts_=function(t){var e=t.anEdge,n=0;do n++,e=e.Lnext;while(e!==t.anEdge);return n},r.prototype.mergeConvexFaces=function(t){var e,n,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(n=e.anEdge,a=n.Org;o=n.Lnext,i=n.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=t&&de.vertCCW(n.Lprev.Org,n.Org,i.Lnext.Lnext.Org)&&de.vertCCW(i.Lprev.Org,i.Org,n.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),n=null,i=null)),!(n&&n.Lnext.Org===a);)n=o;return!0},r.prototype.check=function(){var t=this.fHead,e=this.vHead,n=this.eHead,o,i,a,s,l,u;for(i=t,i=t;(o=i.next)!==t;i=o){me(o.prev===i),l=o.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(me(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){me(a.prev===s),l=a.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(me(a.prev===s&&a.anEdge===null),u=n,u=n;(l=u.next)!==n;u=l)me(l.Sym.next===u.Sym),me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Org!==null),me(l.Dst!==null),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l);me(l.Sym.next===u.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},r}(),am=function(){function r(){this.handle=null}return r}(),sm=function(){function r(){this.key=null,this.node=0}return r}(),jT=function(){function r(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 n=0;n<t+1;n++)this.nodes[n]=new am,this.handles[n]=new sm;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return r.prototype.floatDown_=function(t){var e=this.nodes,n=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(n[e[a+1].handle].key,n[e[a].handle].key)&&++a,me(a<=this.max),i=e[a].handle,a>this.size||this.leq(n[o].key,n[i].key)){e[t].handle=o,n[o].node=t;break}e[t].handle=i,n[i].node=t,t=a}},r.prototype.floatUp_=function(t){var e=this.nodes,n=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t>>1,i=e[a].handle,a===0||this.leq(n[i].key,n[o].key)){e[t].handle=o,n[o].node=t;break}e[t].handle=i,n[i].node=t,t=a}},r.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},r.prototype.min=function(){return this.handles[this.nodes[1].handle].key},r.prototype.insert=function(t){var e,n;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 am;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new sm}return this.freeList===0?n=e:(n=this.freeList,this.freeList=this.handles[n].node),this.nodes[e].handle=n,this.handles[n].node=e,this.handles[n].key=t,this.initialized&&this.floatUp_(e),n},r.prototype.extractMin=function(){var t=this.nodes,e=this.handles,n=t[1].handle,o=e[n].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[n].key=null,e[n].node=this.freeList,this.freeList=n,--this.size,this.size>0&&this.floatDown_(1)),o},r.prototype.delete=function(t){var e=this.nodes,n=this.handles,o;me(t>=1&&t<=this.max&&n[t].key!==null),o=n[t].node,e[o].handle=e[this.size].handle,n[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(n[e[o>>1].handle].key,n[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),n[t].key=null,n[t].node=this.freeList,this.freeList=t},r}(),nu=function(){function r(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return r}(),lm=function(){function r(){this.key=null,this.next=null,this.prev=null}return r}(),HT=function(){function r(t,e){this.frame=t,this.leq=e,this.head=new lm,this.head.next=this.head,this.head.prev=this.head}return r.prototype.min=function(){return this.head.next},r.prototype.max=function(){return this.head.prev},r.prototype.insert=function(t){return this.insertBefore(this.head,t)},r.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},r.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var n=new lm;return n.key=e,n.next=t.next,t.next.prev=n,n.prev=t,t.next=n,n},r.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},r}(),WT=function(){function r(){}return r.regionBelow=function(t){return t.nodeUp.prev.key},r.regionAbove=function(t){return t.nodeUp.next.key},r.debugEvent=function(t){},r.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},r.edgeLeq=function(t,e,n){var o=t.event,i=e.eUp,a=n.eUp;if(i.Dst===o)return a.Dst===o?de.vertLeq(i.Org,a.Org)?de.edgeSign(a.Dst,i.Org,a.Org)<=0:de.edgeSign(i.Dst,a.Org,i.Org)>=0:de.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return de.edgeSign(i.Dst,o,i.Org)>=0;var s=de.edgeEval(i.Dst,o,i.Org),l=de.edgeEval(a.Dst,o,a.Org);return s>=l},r.deleteRegion=function(t,e){e.fixUpperEdge&&me(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},r.fixUpperEdge=function(t,e,n){me(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=n,n.activeRegion=e},r.topLeftRegion=function(t,e){var n=e.eUp.Org,o;do e=r.regionAbove(e);while(e.eUp.Org===n);if(e.fixUpperEdge){if(o=t.mesh.connect(r.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;r.fixUpperEdge(t,e,o),e=r.regionAbove(e)}return e},r.topRightRegion=function(t){var e=t.eUp.Dst;do t=r.regionAbove(t);while(t.eUp.Dst===e);return t},r.addRegionBelow=function(t,e,n){var o=new nu;return o.eUp=n,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,n.activeRegion=o,o},r.isWindingInside=function(t,e){switch(t.windingRule){case ke.ODD:return(e&1)!==0;case ke.NONZERO:return e!==0;case ke.POSITIVE:return e>0;case ke.NEGATIVE:return e<0;case ke.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},r.computeWinding=function(t,e){e.windingNumber=r.regionAbove(e).windingNumber+e.eUp.winding,e.inside=r.isWindingInside(t,e.windingNumber)},r.finishRegion=function(t,e){var n=e.eUp,o=n.Lface;o.inside=e.inside,o.anEdge=n,r.deleteRegion(t,e)},r.finishLeftRegions=function(t,e,n){for(var o,i=null,a=e,s=e.eUp;a!==n;){if(a.fixUpperEdge=!1,i=r.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){r.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),r.fixUpperEdge(t,i,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),r.finishRegion(t,a),s=i.eUp,a=i}return s},r.addRightEdges=function(t,e,n,o,i,a){var s,l,u,c,p=!0;u=n;do me(de.vertLeq(u.Org,u.Dst)),r.addRegionBelow(t,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=r.regionBelow(e).eUp.Rprev),l=e,c=i;s=r.regionBelow(l),u=s.eUp.Sym,u.Org===c.Org;)u.Onext!==c&&(t.mesh.splice(u.Oprev,u),t.mesh.splice(c.Oprev,u)),s.windingNumber=l.windingNumber-u.winding,s.inside=r.isWindingInside(t,s.windingNumber),l.dirty=!0,!p&&r.checkForRightSplice(t,l)&&(r.addWinding(u,c),r.deleteRegion(t,l),t.mesh.delete(c)),p=!1,l=s,c=u;l.dirty=!0,me(l.windingNumber-u.winding===s.windingNumber),a&&r.walkDirtyRegions(t,l)},r.spliceMergeVertices=function(t,e,n){t.mesh.splice(e,n)},r.vertexWeights=function(t,e,n){var o=de.vertL1dist(e,t),i=de.vertL1dist(n,t),a=.5*i/(o+i),s=.5*o/(o+i);t.coords[0]+=a*e.coords[0]+s*n.coords[0],t.coords[1]+=a*e.coords[1]+s*n.coords[1],t.coords[2]+=a*e.coords[2]+s*n.coords[2]},r.getIntersectData=function(t,e,n,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,r.vertexWeights(e,n,o),r.vertexWeights(e,i,a)},r.checkForRightSplice=function(t,e){var n=r.regionBelow(e),o=e.eUp,i=n.eUp;if(de.vertLeq(o.Org,i.Org)){if(de.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;de.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),r.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=n.dirty=!0)}else{if(de.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;r.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},r.checkForLeftSplice=function(t,e){var n=r.regionBelow(e),o=e.eUp,i=n.eUp,a;if(me(!de.vertEq(o.Dst,i.Dst)),de.vertLeq(o.Dst,i.Dst)){if(de.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;r.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(de.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=n.dirty=!0,a=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},r.checkForIntersect=function(t,e){var n=r.regionBelow(e),o=e.eUp,i=n.eUp,a=o.Org,s=i.Org,l=o.Dst,u=i.Dst,c,p,f=new ci,d,h;if(me(!de.vertEq(u,l)),me(de.edgeSign(l,t.event,a)<=0),me(de.edgeSign(u,t.event,s)>=0),me(a!==t.event&&s!==t.event),me(!e.fixUpperEdge&&!n.fixUpperEdge),a===s||(c=Math.min(a.t,l.t),p=Math.max(s.t,u.t),c>p))return!1;if(de.vertLeq(a,s)){if(de.edgeSign(u,a,s)>0)return!1}else if(de.edgeSign(l,s,a)<0)return!1;return r.debugEvent(t),de.intersect(l,a,u,s,f),me(Math.min(a.t,l.t)<=f.t),me(f.t<=Math.max(s.t,u.t)),me(Math.min(u.s,l.s)<=f.s),me(f.s<=Math.max(s.s,a.s)),de.vertLeq(f,t.event)&&(f.s=t.event.s,f.t=t.event.t),d=de.vertLeq(a,s)?a:s,de.vertLeq(d,f)&&(f.s=d.s,f.t=d.t),de.vertEq(f,a)||de.vertEq(f,s)?(r.checkForRightSplice(t,e),!1):!de.vertEq(l,t.event)&&de.edgeSign(l,t.event,f)>=0||!de.vertEq(u,t.event)&&de.edgeSign(u,t.event,f)<=0?u===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=r.topLeftRegion(t,e),o=r.regionBelow(e).eUp,r.finishLeftRegions(t,r.regionBelow(e),n),r.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),n=e,e=r.topRightRegion(e),h=r.regionBelow(e).eUp.Rprev,n.eUp=i.Oprev,i=r.finishLeftRegions(t,n,null),r.addRightEdges(t,e,i.Onext,o.Rprev,h,!0),!0):(de.edgeSign(l,t.event,f)>=0&&(r.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),de.edgeSign(u,t.event,f)<=0&&(e.dirty=n.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=f.s,o.Org.t=f.t,o.Org.pqHandle=t.pq.insert(o.Org),r.getIntersectData(t,o.Org,a,l,s,u),r.regionAbove(e).dirty=e.dirty=n.dirty=!0,!1)},r.walkDirtyRegions=function(t,e){for(var n=r.regionBelow(e),o,i;;){for(;n.dirty;)e=n,n=r.regionBelow(n);if(!e.dirty&&(n=e,e=r.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=n.eUp,o.Dst!==i.Dst&&r.checkForLeftSplice(t,e)&&(n.fixUpperEdge?(r.deleteRegion(t,n),t.mesh.delete(i),n=r.regionBelow(e),i=n.eUp):e.fixUpperEdge&&(r.deleteRegion(t,e),t.mesh.delete(o),e=r.regionAbove(n),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!n.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(r.checkForIntersect(t,e))return}else r.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(r.addWinding(i,o),r.deleteRegion(t,e),t.mesh.delete(o),e=r.regionAbove(n))}},r.connectRightVertex=function(t,e,n){var o,i=n.Onext,a=r.regionBelow(e),s=e.eUp,l=a.eUp,u=!1;if(s.Dst!==l.Dst&&r.checkForIntersect(t,e),de.vertEq(s.Org,t.event)&&(t.mesh.splice(i.Oprev,s),e=r.topLeftRegion(t,e),i=r.regionBelow(e).eUp,r.finishLeftRegions(t,r.regionBelow(e),a),u=!0),de.vertEq(l.Org,t.event)&&(t.mesh.splice(n,l.Oprev),n=r.finishLeftRegions(t,a,null),u=!0),u){r.addRightEdges(t,e,n.Onext,i,i,!0);return}de.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(n.Lprev,o),r.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,r.walkDirtyRegions(t,e)},r.connectLeftDegenerate=function(t,e,n){var o,i,a,s,l;if(o=e.eUp,de.vertEq(o.Org,n)){me(!1),r.spliceMergeVertices(t,o,n.anEdge);return}if(!de.vertEq(o.Dst,n)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(n.anEdge,o),r.sweepEvent(t,n);return}me(!1),e=r.topRightRegion(e),l=r.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(me(i!==a),r.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(n.anEdge,a),de.edgeGoesLeft(i)||(i=null),r.addRightEdges(t,e,a.Onext,s,i,!0)},r.connectLeftVertex=function(t,e){var n,o,i,a,s,l,u=new nu;if(u.eUp=e.anEdge.Sym,n=t.dict.search(u).key,o=r.regionBelow(n),!!o){if(a=n.eUp,s=o.eUp,de.edgeSign(a.Dst,e,a.Org)===0){r.connectLeftDegenerate(t,n,e);return}if(i=de.vertLeq(s.Dst,a.Dst)?n:o,n.inside||i.fixUpperEdge){if(i===n)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var c=t.mesh.connect(s.Dnext,e.anEdge);l=c.Sym}i.fixUpperEdge?r.fixUpperEdge(t,i,l):r.computeWinding(t,r.addRegionBelow(t,n,l)),r.sweepEvent(t,e)}else r.addRightEdges(t,n,e.anEdge,e.anEdge,null,!0)}},r.sweepEvent=function(t,e){t.event=e,r.debugEvent(t);for(var n=e.anEdge;n.activeRegion===null;)if(n=n.Onext,n===e.anEdge){r.connectLeftVertex(t,e);return}var o=r.topLeftRegion(t,n.activeRegion);me(o!==null);var i=r.regionBelow(o),a=i.eUp,s=r.finishLeftRegions(t,i,null);s.Onext===a?r.connectRightVertex(t,o,s):r.addRightEdges(t,o,s.Onext,a,a,!0)},r.addSentinel=function(t,e,n,o){var i=new nu,a=t.mesh.makeEdge();a.Org.s=n,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},r.initEdgeDict=function(t){t.dict=new HT(t,r.edgeLeq);var e=t.bmax[0]-t.bmin[0],n=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,a=t.bmin[1]-n,s=t.bmax[1]+n;r.addSentinel(t,o,i,a),r.addSentinel(t,o,i,s)},r.doneEdgeDict=function(t){for(var e,n=0;(e=t.dict.min().key)!==null;)e.sentinel||(me(e.fixUpperEdge),me(++n===1)),me(e.windingNumber===0),r.deleteRegion(t,e)},r.removeDegenerateEdges=function(t){var e,n,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=n)n=e.next,o=e.Lnext,de.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(r.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===n||o===n.Sym)&&(n=n.next),t.mesh.delete(o)),(e===n||e===n.Sym)&&(n=n.next),t.mesh.delete(e))},r.initPriorityQ=function(t){var e,n,o,i=0;for(o=t.mesh.vHead,n=o.next;n!==o;n=n.next)i++;for(i+=8,e=t.pq=new jT(i,de.vertLeq),o=t.mesh.vHead,n=o.next;n!==o;n=n.next)n.pqHandle=e.insert(n);return n!==o?!1:(e.init(),!0)},r.donePriorityQ=function(t){t.pq=null},r.removeDegenerateFaces=function(t,e){var n,o,i;for(n=e.fHead.next;n!==e.fHead;n=o)o=n.next,i=n.anEdge,me(i.Lnext!==i),i.Lnext.Lnext===i&&(r.addWinding(i.Onext,i),t.mesh.delete(i));return!0},r.computeInterior=function(t,e){e===void 0&&(e=!0);var n,o;if(r.removeDegenerateEdges(t),!r.initPriorityQ(t))return!1;for(r.initEdgeDict(t);(n=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!de.vertEq(o,n));)o=t.pq.extractMin(),r.spliceMergeVertices(t,n.anEdge,o.anEdge);r.sweepEvent(t,n)}return t.event=t.dict.min().key.eUp.Org,r.debugEvent(t),r.doneEdgeDict(t),r.donePriorityQ(t),r.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},r}(),qT=function(){function r(){this.mesh=new im,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=ke.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 r.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},r.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},r.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},r.prototype.computeNormal_=function(t){var e,n,o,i,a,s,l=[0,0,0],u=[0,0,0],c=[0,0,0],p=[0,0,0],f=[0,0,0],d=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var g=0;g<3;++g)i=e.coords[g],u[g]=i,h[g]=e,l[g]=i,d[g]=e;for(e=m.next;e!==m;e=e.next)for(var v=0;v<3;++v)i=e.coords[v],i<u[v]&&(u[v]=i,h[v]=e),i>l[v]&&(l[v]=i,d[v]=e);var x=0;if(l[1]-u[1]>l[0]-u[0]&&(x=1),l[2]-u[2]>l[x]-u[x]&&(x=2),u[x]>=l[x]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,n=h[x],o=d[x],c[0]=n.coords[0]-o.coords[0],c[1]=n.coords[1]-o.coords[1],c[2]=n.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],f[0]=c[1]*p[2]-c[2]*p[1],f[1]=c[2]*p[0]-c[0]*p[2],f[2]=c[0]*p[1]-c[1]*p[0],a=f[0]*f[0]+f[1]*f[1]+f[2]*f[2],a>s&&(s=a,t[0]=f[0],t[1]=f[1],t[2]=f[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(c)]=1)},r.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,n=this.mesh.vHead,o,i=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=n.next;e!==n;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]}},r.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],n,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),n=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);n[a]=0,n[(a+1)%3]=1,n[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,n),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,u=t.next;u!==t;u=u.next)l?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,l=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},r.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},r.prototype.tessellateMonoRegion_=function(t,e){var n,o;if(n=e.anEdge,!(n.Lnext!==n&&n.Lnext.Lnext!==n))throw"Mono region invalid";for(;de.vertLeq(n.Dst,n.Org);n=n.Lprev);for(;de.vertLeq(n.Org,n.Dst);n=n.Lnext);o=n.Lprev;for(var i=void 0;n.Lnext!==o;)if(de.vertLeq(n.Dst,o.Org)){for(;o.Lnext!==n&&(de.edgeGoesLeft(o.Lnext)||de.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!==n&&(de.edgeGoesRight(n.Lprev)||de.edgeSign(n.Dst,n.Org,n.Lprev.Org)>=0);)i=t.connect(n,n.Lprev),n=i.Sym;n=n.Lnext}if(o.Lnext===n)throw"Mono region invalid";for(;o.Lnext.Lnext!==n;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},r.prototype.tessellateInterior_=function(t){for(var e,n=t.fHead.next;n!==t.fHead;n=e)if(e=n.next,n.inside&&!this.tessellateMonoRegion_(t,n))return!1;return!0},r.prototype.discardExterior_=function(t){for(var e,n=t.fHead.next;n!==t.fHead;n=e)e=n.next,n.inside||t.zapFace(n)},r.prototype.setWindingNumber_=function(t,e,n){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:n?t.delete(i):i.winding=0},r.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},r.prototype.outputPolymesh_=function(t,e,n,o){var i,a=0,s=0,l;n>3&&t.mergeConvexFaces(n);for(var u=t.vHead.next;u!==t.vHead;u=u.next)u.n=-1;for(var c=t.fHead.next;c!==t.fHead;c=c.next)if(c.n=-1,!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;u.n===-1&&(u.n=s,s++),l++,i=i.Lnext}while(i!==c.anEdge);if(l>n)throw"Face vertex greater that support polygon";c.n=a,++a}this.elementCount=a,e===lt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*n,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var u=t.vHead.next;u!==t.vHead;u=u.next)if(u.n!==-1){var p=u.n*o;this.vertices[p+0]=u.coords[0],this.vertices[p+1]=u.coords[1],o>2&&(this.vertices[p+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var f=0,c=t.fHead.next;c!==t.fHead;c=c.next)if(!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;this.elements[f++]=u.n,l++,i=i.Lnext}while(i!==c.anEdge);for(var d=l;d<n;++d)this.elements[f++]=-1;if(e===lt.CONNECTED_POLYGONS){i=c.anEdge;do this.elements[f++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==c.anEdge);for(var h=l;h<n;++h)this.elements[f++]=-1}}},r.prototype.outputContours_=function(t,e){var n,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=n=s.anEdge;do this.vertexCount++,n=n.Lnext;while(n!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,u=0,c=0;i=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=n=s.anEdge;do this.vertices[l++]=n.Org.coords[0],this.vertices[l++]=n.Org.coords[1],e>2&&(this.vertices[l++]=n.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(n):n.Org.idx,a++,n=n.Lnext;while(n!==o);this.elements[c++]=i,this.elements[c++]=a,i+=a}},r.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new im),t<2&&(t=2),t>3&&(t=3);for(var n=null,o=0;o<e.length;o+=t)n===null?(n=this.mesh.makeEdge(),this.mesh.splice(n,n.Sym)):(this.mesh.splitEdge(n),n=n.Lnext),n.Org.coords[0]=e[o+0],n.Org.coords[1]=e[o+1],t>2?n.Org.coords[2]=e[o+2]:n.Org.coords[2]=0,n.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(n),n.winding=1,n.Sym.winding=-1},r.prototype.tesselate=function(t,e,n,o,i,a){if(t===void 0&&(t=ke.ODD),e===void 0&&(e=lt.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),WT.computeInterior(this,a);var s=this.mesh;return e===lt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===lt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,n,o),!0},r}();function fo(r){var t=r.windingRule,e=t===void 0?ke.ODD:t,n=r.elementType,o=n===void 0?lt.POLYGONS:n,i=r.polySize,a=i===void 0?3:i,s=r.vertexSize,l=s===void 0?2:s,u=r.normal,c=u===void 0?[0,0,1]:u,p=r.contours,f=p===void 0?[]:p,d=r.strict,h=d===void 0?!0:d,m=r.debug,g=m===void 0?!1:m;if(!f&&h)throw new Error("Contours can't be empty");if(!!f){var v=new qT;r.edgeCreateCallback&&(v.edgeCreateCallback=r.edgeCreateCallback),r.vertexIdCallback&&(v.vertexIdCallback=r.vertexIdCallback);for(var x=0;x<f.length;x++)v.addContour(l||2,f[x]);return v.tesselate(e,o,a,l,c,h),{vertices:v.vertices,vertexIndices:v.vertexIndices,vertexCount:v.vertexCount,elements:v.elements,elementCount:v.elementCount,mesh:g?v.mesh:void 0}}}var pU=ke.ODD,fU=ke.NONZERO,dU=ke.POSITIVE,hU=ke.NEGATIVE,mU=ke.ABS_GEQ_TWO,gU=lt.POLYGONS,yU=lt.CONNECTED_POLYGONS,vU=lt.BOUNDARY_CONTOURS;var ui=class extends ho.BufferGeometry{constructor(e,n=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ke.ODD;this.elementType=lt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=n,this._triangulationOptions=Object.assign({windingRule:ke.ODD,elementType:lt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,u=!0,c,p;for(let h=0,m=i.length/2;h<m;h++){let g=h*2,v=i[g+0],x=i[g+1];if(c!==void 0&&v!==c&&(l=!1),p!==void 0&&x!==p&&(u=!1),c=v,p=x,!l&&!u)break}!l&&!u&&(s=fo({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let f=s?.vertexCount??1,d=s?.elementCount??1;if(this._positionAttribute=new ho.BufferAttribute(new Float32Array(f*3),3),this._normalAttribute=new ho.BufferAttribute(new Float32Array(f*3),3),this._uvAttribute=new ho.BufferAttribute(new Float32Array(f*2),2),this._indexAttribute=new ho.BufferAttribute(new Uint32Array(d*3),1),s){let h=1/0,m=-1/0,g=1/0,v=-1/0;for(let w=0,b=f;w<b;w++){let _=w*2,T=s.vertices[_+0],y=s.vertices[_+1];T<h&&(h=T),T>m&&(m=T),y<g&&(g=y),y>v&&(v=y)}let x=m-h,S=v-g;for(let w=0,b=f;w<b;w++){let _=w*2,T=s.vertices[_+0],y=s.vertices[_+1],I=(T-h)/x,A=(y-g)/S;this._positionAttribute.setXYZ(w,T,y,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,I,A)}for(let w=0,b=d;w<b;w++){let _=w*3,T=s.elements[_+0],y=s.elements[_+1],I=s.elements[_+2];this._indexAttribute.setX(_+0,T),this._indexAttribute.setX(_+1,y),this._indexAttribute.setX(_+2,I)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new ui(this._shape,this._curveSegments);return e.userData=Yi(this.userData),e}};var mo=require("three");var Sl=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let n=t*Sl.eSize;this.buffer=new ArrayBuffer(n);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 n=t*Sl.eSize,o=new ArrayBuffer(n),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*t);a+=3*t;let l=new Float32Array(o,a*i,3*t);a+=3*t;let u=new Float32Array(o,a*i,2*t);s.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=u,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let n=this.size;return this.size=e,n}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)}},ua=Sl;ua.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var ou=(r,t)=>([e,n])=>(n<e&&(n+=t),(r>=e?r:r+t)<=n),pi=class extends mo.BufferGeometry{constructor(e,n,o=0,i=12,a=3,s=ke.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=n,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=a,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,n/2-1e-12),this._bevelSegments=Math.floor(a));let l=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(y=>{let I=y.extractShapePointsToFlatArray([],i),A=[];for(let O=I.length-1;O>=1;O-=2){let C=I[O-1],N=I[O-0];A.push(C,N)}return A}),c=fo({windingRule:s,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[l]}),p=fo({windingRule:ke.ODD,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]});if(!c)throw new Error("error generating geometry");let f=c.elementCount;if(p){c.elementCount+=p.elementCount;for(let y=0;y<p.elements.length;y++){let I=p.elements[y],A=y%2===0?c.vertexCount:0;c.elements.push(I+A)}for(let y=0;y<p.vertexIndices.length;y++){let I=p.vertexIndices[y],A=c.vertexCount;c.vertexIndices.push(I+A)}for(let y=0;y<p.vertices.length;y++){let I=p.vertices[y];c.vertices.push(I)}}let d=1/0,h=-1/0,m=1/0,g=-1/0;for(let y=0,I=c.vertexCount;y<I;y++){let A=y*2,O=c.vertices[A+0],C=c.vertices[A+1];O<d&&(d=O),O>h&&(h=O),C<m&&(m=C),C>g&&(g=C)}this._minX=d,this._minY=m,this._width=h-d,this._height=g-m;let v=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new ua(v);let x=[],S=[];for(let y=c.elementCount-1;y>=0;y--){let I=y>=f,A=y*2,O=c.elements[A+0],C=c.elements[A+1],N=O+C,P={start:O,count:C,normals:[],continuous:[],concave:[]},G=O,$=N-1,Y=O+1,ie=this._shape.roundedCurves.length;do{let R=G-O,D=c.vertices[$*2+0],F=c.vertices[$*2+1],B=c.vertices[G*2+0],X=c.vertices[G*2+1],K=c.vertices[Y*2+0],q=c.vertices[Y*2+1],z=B-D,U=X-F,W=Math.sqrt(z*z+U*U);z/=W,U/=W;let re=B-K,ae=X-q,fe=Math.sqrt(re*re+ae*ae);re/=fe,ae/=fe,P.normals[R*2+0]=-ae,P.normals[R*2+1]=re,P.concave[R]=z*ae-U*re>0;let oe=c.vertexIndices[G];if(Array.isArray(oe))P.continuous[R]=!1;else{let[ne,ee]=this._shape.getCurveIndexFromVertexId(oe-1,!0);if(ee>0&&ee<1)P.continuous[R]=!0;else{let Q=ee===1?ne+1:ne-1;Q=(Q+ie)%ie;let Se=ee===1?0:1,ye=this._shape.roundedCurves[ne].getTangent(ee),Ce=this._shape.roundedCurves[Q].getTangent(Se);P.continuous[R]=ye.dot(Ce)>.95}}I&&(P.normals[R*2+0]*=-1,P.normals[R*2+1]*=-1),[$,G,Y]=[G,Y,Y+1],Y>=N&&(Y-=C)}while(Y!==O+1);let j=[];j.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(O*2,N*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((R,D)=>[D,D]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(O*2,N*2)});for(let R=1;R<=this._bevelSegments;R++){let D=R/this._bevelSegments*Math.PI/2,F=(1-Math.cos(D))*this._bevelSize,B=[],X=[],K=[],q=[],z=0;for(let W=0;W<C;W++){let re=W*2,ae=(W-1+C)%C*2,fe=c.vertices[P.start*2+re+0],oe=c.vertices[P.start*2+re+1],ne=-P.normals[ae+0]*F,ee=-P.normals[ae+1]*F,Q=-P.normals[re+0]*F,Se=-P.normals[re+1]*F;if(P.concave[W]||!P.concave[W]&&I){let ye=Math.atan2(ee,ne),Ce=Math.atan2(Se,Q);Ce>ye&&(Ce-=Math.PI*2);let mt=Ce-ye;if(P.continuous[W]||I){let Me=ye+mt/2,De=Math.cos(Me)*F,Re=Math.sin(Me)*F;B[2*z+0]=fe+De*(I?-1:1),B[2*z+1]=oe+Re*(I?-1:1),q[z]=W,z++}else{let Me=Math.max(1,Math.floor(i/4*Math.abs(mt)/Math.PI));for(let De=0;De<=Me;De++){let Re=ye+mt*(De/Me),nr=Math.cos(Re)*F,Sn=Math.sin(Re)*F;B[2*z+0]=fe+nr,B[2*z+1]=oe+Sn,q[z]=W,z++}}}else B[2*z+0]=fe+ne,B[2*z+1]=oe+ee,q[z]=W,X[W]=z,z++,B[2*z+0]=fe,B[2*z+1]=oe,q[z]=W,z++,B[2*z+0]=fe+Q,B[2*z+1]=oe+Se,q[z]=W,K[W]=z,z++}let U=fo({windingRule:ke.POSITIVE,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[B],edgeCreateCallback:W=>{let ae=W.Org.idx,fe=q[ae],oe=q[(ae+1)%q.length];W.idx=[fe,oe],W.Sym.idx=[oe,fe]},vertexIdCallback:W=>{let re=W.Lprev.idx;return[re?re[1]:0,W.idx[0]]}});if(!U)throw console.log("Error"),new Error(`error generating bevel geometry for ${R}'th loop`);if(!U.vertexCount)break;for(let W=0;W<U.vertexIndices.length;W++){let[re,ae]=U.vertexIndices[W];if(re===ae)continue;let fe=ae;ae<re&&(fe+=C);for(let oe=re;oe<fe;oe++){let ne=oe%C,ee=(oe+1)%C;if(!P.continuous[ne]||!P.continuous[ee]){U.vertexIndices[W]=[re,ne],U.vertexIndices.splice(W+1,0,[ee,ae]),U.vertices.splice((W+1)*2,0,U.vertices[W*2],U.vertices[W*2+1]);break}}}j.push({bevelI:R,angle:D,size:F,boundary:U,reverseMap:q,insetPoints:B})}let H=(R,D,F)=>{let B=0,X=R.boundary.vertexIndices.length;for(;B<X&&F(R.boundary.vertexIndices[D]);)D=(D+1)%X,B++;return B},V=x.length;for(let R=1;R<j.length;R++){let D=j[R-1],F=j[R],B=D.boundary.vertexIndices.length,X=F.boundary.vertexIndices.length;if(!B||!X)break;let K=P.concave.length,q=0,z=ou(q,C);for(;!D.boundary.vertexIndices.filter(z).length||!F.boundary.vertexIndices.filter(z).length;)q++,z=ou(q,C);let U=D.boundary.vertexIndices.findIndex(z),W=F.boundary.vertexIndices.findIndex(z);do U=(U+1)%B;while(z(D.boundary.vertexIndices[U]));do W=(W+1)%X;while(z(F.boundary.vertexIndices[W]));q=(q+1)%C;let re=q,ae=this.buildBevelVert(P,D,(U-1+B)%B),fe=this.buildBevelVert(P,F,(W-1+X)%X),oe=ae,ne=fe,ee,Q,Se=!1;do{z=ou(q,C);let ye=H(D,U,z),Ce=H(F,W,z),mt=Se;if(Se=!1,ye&&!Ce){for(let Me=0;Me<ye;Me++)ee=this.buildBevelVert(P,D,(U+Me)%B,Me/(ye-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ee.bottomP,oe.bottomN,ne.bottomN),oe=ee;Se=!0}else if(!ye&&Ce)for(let Me=0;Me<Ce;Me++)Q=this.buildBevelVert(P,F,(W+Me)%X,Me/(Ce-1)),x.push(ne.topN,oe.topP,Q.topP),x.push(oe.bottomP,ne.bottomN,Q.bottomP),ne=Q;else if(ye&&Ce)if(ee=this.buildBevelVert(P,D,U,0),Q=this.buildBevelVert(P,F,W,0),mt?(x.push(oe.topN,Q.topP,ne.topN),x.push(oe.topN,ee.topP,Q.topP),x.push(Q.bottomP,oe.bottomN,ne.bottomN),x.push(Q.bottomP,ee.bottomP,oe.bottomN)):(x.push(ne.topN,oe.topN,ee.topP),x.push(ne.topN,ee.topP,Q.topP),x.push(ee.bottomP,oe.bottomN,ne.bottomN),x.push(ee.bottomP,ne.bottomN,Q.bottomP)),oe=ee,ne=Q,ye===Ce)for(let Me=1;Me<ye;Me++)ee=this.buildBevelVert(P,D,(U+Me)%B,Me/(ye-1)),Q=this.buildBevelVert(P,F,(W+Me)%X,Me/(Ce-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ne.topN,ee.topP,Q.topP),x.push(ee.bottomP,oe.bottomN,ne.bottomN),x.push(ee.bottomP,ne.bottomN,Q.bottomP),oe=ee,ne=Q;else if(ye>Ce){let Me=ye/Ce,De=0;for(let Re=1;Re<ye;Re++)ee=this.buildBevelVert(P,D,(U+Re)%B,Re/(ye-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ee.bottomP,oe.bottomN,ne.bottomN),oe=ee,Re>(De+1)*Me&&(De++,Q=this.buildBevelVert(P,F,(W+De)%X,De/(Ce-1)),x.push(ne.topN,ee.topP,Q.topP),x.push(ee.bottomP,ne.bottomN,Q.bottomP),ne=Q)}else{let Me=Ce/ye,De=0;for(let Re=1;Re<Ce;Re++)Q=this.buildBevelVert(P,F,(W+Re)%X,Re/(Ce-1)),x.push(ne.topN,ee.topP,Q.topP),x.push(ee.bottomP,ne.bottomN,Q.bottomP),ne=Q,Re>(De+1)*Me&&(De++,ee=this.buildBevelVert(P,D,(U+De)%B,De/(ye-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ee.bottomP,oe.bottomN,ne.bottomN),oe=ee)}U=(U+ye)%B,W=(W+Ce)%X,q=(q+1)%K}while(q!==re)}{let R=j[0];for(let D=0,F=R.boundary.vertexCount;D<F;D++){let B=this.buildBevelVert(P,R,D),X=this.buildBevelVert(P,R,(D+1)%F);x.push(X.topP,B.topN,B.bottomN),x.push(X.topP,B.bottomN,X.bottomP)}}if(I){let R=[];for(let D=x.length-1;D>=V+2;D-=3){let F=x[D-2],B=x[D-1],X=x[D-0];R.push(X,B,F)}x.splice(V,x.length-V,...R)}if(I){let R=[];for(let D=j[j.length-1].boundary.vertices.length-1;D>=1;D-=2){let F=j[j.length-1].boundary.vertices[D-1],B=j[j.length-1].boundary.vertices[D-0];R.push(F,B)}S.push(R)}if(!I){let R=j[j.length-1],D=fo({windingRule:j.length>1?ke.POSITIVE:ke.ODD,elementType:lt.POLYGONS,vertexSize:2,strict:!0,contours:[R.insetPoints,...S]});if(!D)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:x.length});for(let F=0;F<D.elementCount*3;F+=3){let B=this.buildSurfaceVert(D,D.elements[F+0]),X=this.buildSurfaceVert(D,D.elements[F+1]),K=this.buildSurfaceVert(D,D.elements[F+2]);x.push(B.top,X.top,K.top),x.push(K.bottom,X.bottom,B.bottom)}}this.vertexCache={}}this._buffer.shrink();let w=new mo.BufferAttribute(Uint32Array.from(x),1),b=new mo.BufferAttribute(this._buffer.positions,3),_=new mo.BufferAttribute(this._buffer.normals,3),T=new mo.BufferAttribute(this._buffer.uvs,2);b.needsUpdate=!0,_.needsUpdate=!0,T.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",b),this.setAttribute("normal",_),this.setAttribute("uv",T),this.setIndex(w)}buildSurfaceVert(e,n){let o=n.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[n*2+0],a=e.vertices[n*2+1],s=(i-this._minX)/this._width,l=(a-this._minY)/this._height,u=this._buffer.get(2),c=u*3,p=u*2,f={top:u+0,bottom:u+1};return this._buffer.positions[c+0]=i,this._buffer.positions[c+1]=a,this._buffer.positions[c+2]=this._depth,this._buffer.normals[c+0]=0,this._buffer.normals[c+1]=0,this._buffer.normals[c+2]=1,this._buffer.uvs[p+0]=s,this._buffer.uvs[p+1]=l,this._buffer.positions[c+3]=i,this._buffer.positions[c+4]=a,this._buffer.positions[c+5]=0,this._buffer.normals[c+3]=0,this._buffer.normals[c+4]=0,this._buffer.normals[c+5]=-1,this._buffer.uvs[p+2]=s,this._buffer.uvs[p+3]=l,this.vertexCache[o]=f,f}buildBevelVert(e,n,o,i=1){let a=`${n.bevelI}:${o}`;if(a in this.vertexCache)return this.vertexCache[a];let[s,l]=n.boundary.vertexIndices[o],u,c,p,f;s!==l?(c=s,u=l,f=!1,p=e.continuous[c]&&e.continuous[u]):(u=s,c=(u-1+e.count)%e.count,f=e.concave[u]&&n.bevelI>0,p=e.continuous[u]||f);let d=Math.cos(n.angle),h=Math.sin(n.angle),m=o*2,g=u*2,v=c*2,x=n.boundary.vertices[m+0],S=n.boundary.vertices[m+1],w=(1-h)*this._bevelSize,b=(x-this._minX)/this._width,_=(S-this._minY)/this._height,T=e.normals[g+0],y=e.normals[g+1],I=e.normals[v+0],A=e.normals[v+1];if(f){let G=I-T,$=A-y;T=T+G*(1-i),y=y+$*(1-i);let Y=Math.sqrt(T*T+y*y);T/=Y,y/=Y}let O=this._buffer.get(p?2:4),C=O*3,N=O*2,P={i:o,fi:u,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1};return this._buffer.positions[C+0]=x,this._buffer.positions[C+1]=S,this._buffer.positions[C+2]=this._depth-w,this._buffer.normals[C+0]=T*d,this._buffer.normals[C+1]=y*d,this._buffer.normals[C+2]=h,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=_,this._buffer.positions[C+3]=x,this._buffer.positions[C+4]=S,this._buffer.positions[C+5]=w,this._buffer.normals[C+3]=T*d,this._buffer.normals[C+4]=y*d,this._buffer.normals[C+5]=-h,this._buffer.uvs[N+2]=_,this._buffer.uvs[N+3]=b,p||(O+=2,C+=6,N+=4,P.topP=O+0,P.bottomP=O+1,this._buffer.positions[C+0]=x,this._buffer.positions[C+1]=S,this._buffer.positions[C+2]=this._depth-w,this._buffer.normals[C+0]=I*d,this._buffer.normals[C+1]=A*d,this._buffer.normals[C+2]=h,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=_,this._buffer.positions[C+3]=x,this._buffer.positions[C+4]=S,this._buffer.positions[C+5]=w,this._buffer.normals[C+3]=I*d,this._buffer.normals[C+4]=A*d,this._buffer.normals[C+5]=-h,this._buffer.uvs[N+2]=_,this._buffer.uvs[N+3]=b),this.vertexCache[a]=P,P}clone(){let e=new pi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Yi(this.userData),e}};var Ct=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:ke.ODD},r.parameters),n=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Le?(a.width!==n||a.height!==o)&&a.applySize(n,o):a=new Le(n,o).fromJSON(a),r.parameters?.roundness!==void 0&&r.parameters?.roundness>0&&a.update(!1));let l=a??new Le(n,o);return{parameters:Object.assign(e,{width:n,height:o,depth:i,roundness:s}),shape:l}}static build(r){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:n,subdivisions:o,roundness:i,windingRule:a}=r.parameters;r.shape.roundness=i;let s;return t<=0?s=new ui(r.shape,o,{windingRule:a}):s=new pi(r.shape,t,e,o,n,a),Object.assign(s,{userData:{...r,type:"VectorGeometry"}})}};var jl=require("three");var pm=require("three");var We=require("three"),um=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,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},r.parameters),n=e.width/2,o=e.radiusTop??n,i=e.radiusBottom??n;return o===i?(o=n,i=n):o>i?(o=n,i=i*n/o):(o=o*n/i,i=n),{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(r){let{width:t,depth:e,height:n,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:u,radiusBottom:c,cornerRadius:p,cornerSegments:f,hollow:d}=r.parameters,h;return p||d?h=new pa(u,c,n,o,i,a,s,l*Math.PI/180,p,p,f,d):h=new We.CylinderBufferGeometry(u,c,n,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...r,type:"CylinderGeometry"}})}};function Rn(r,t,e){e.x=r.x*t.x,e.y=r.y,e.z=r.x*t.y}function cm(r){return new We.Vector2(r.y,-r.x)}var pa=class extends We.BufferGeometry{constructor(t,e,n,o,i,a,s,l,u,c,p,f,d=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,n=n||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(u=0,c=0);let h=[],m=[],g=[],v=[],x=0,S=n/2,w=new We.Vector3,b=new We.Vector3;d&&t==0&&(t=u),d&&e==0&&(e=c);let _=new We.Vector2(t,S),T=new We.Vector2(e,-S),y=null,I=null,A=null,O=null,C=_.clone().sub(T),N=0,P=0,G=0;f>0&&(N=Math.min(t,e)*(1-f),P=t-N,G=e-N);let $=_.clone();$.x-=N;let Y=Math.PI-C.angle(),ie=C.angle(),j=Math.tan(ie/2),H=Math.tan(Y/2),V=j+H,R=f?V:H,D=f?V:j;if(u=Math.min(u,(t-P)/R,C.length()/V),c=Math.min(c,(e-G)/D,C.length()/V),u>0){let z=u/j;y=_.clone().sub(new We.Vector2(z,u)),f&&(A=y.clone(),A.x-=N-V*u),_.sub(C.clone().setLength(z))}if(c>0){let z=c/H;I=T.clone().sub(new We.Vector2(z,-c)),T.add(C.clone().setLength(z)),f&&(O=I.clone(),O.x-=N-V*c,$.sub(C.clone().setLength(z)))}C=_.clone().sub(T);let F=C.length()<.5,B=[];for(let z=0;z<=o;z++){let U=[],W=z/o,re=W*l+s,ae=new We.Vector2(Math.sin(re),Math.cos(re));O&&I?(X(U,W,ae,Y,c,O,-1,!0),X(U,W,ae,ie,c,I,-1,!1)):I?(K(U,ae,I.x,0,-1),X(U,W,ae,ie,c,I,-1,!1)):a||K(U,ae,e,G,-1);let fe=cm(C).normalize();if(Rn(fe,ae,w),!F)for(let oe=0;oe<=i;oe++){let ne=oe/i,ee=C.clone().multiplyScalar(ne).add(T);Rn(ee,ae,b),m.push(b.x,b.y,b.z),g.push(w.x,w.y,w.z),v.push(W,.5+b.y/n),U.push(x++)}if(A&&y?(X(U,W,ae,Y,u,y,1,!1),X(U,W,ae,ie,u,A,1,!0)):y?(X(U,W,ae,Y,u,y,1,!1),K(U,ae,y.x,0,1)):a||K(U,ae,t,P,1),f&&!F){let oe=cm(C).multiplyScalar(-1).normalize();Rn(oe,ae,w);for(let ne=0;ne<=i;ne++){let ee=ne/i,Q=C.clone().multiplyScalar(-ee).add($);Rn(Q,ae,b),m.push(b.x,b.y,b.z),g.push(w.x,w.y,w.z),v.push(W,.5+b.y/n),U.push(x++)}}f&&!a&&U.push(U[0]),B.push(U)}for(let z=0;z<B.length-1;z++)for(let U=0;U<B[0].length-1;U++){if(a&&f&&U==i)continue;let W=B[z][U],re=B[z+1][U],ae=B[z+1][U+1],fe=B[z][U+1],oe=m[ae*3+0],ne=m[ae*3+2];h.push(W,re,fe),(oe!=0||ne!=0)&&h.push(re,ae,fe)}l<Math.PI*2&&(q(-1,B[0],s),q(1,B[B.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new We.Float32BufferAttribute(m,3)),this.setAttribute("normal",new We.Float32BufferAttribute(g,3)),this.setAttribute("uv",new We.Float32BufferAttribute(v,2));function X(z,U,W,re,ae,fe,oe,ne){for(let ee=0;ee<p+1;ee++){let Q=ee/p,Se=oe<0?Q:1-Q;ne&&(Se-=1),Se*=re;let ye=new We.Vector2(Math.sin(Se),Math.cos(Se)*oe),Ce=ye.clone().multiplyScalar(ae).add(fe);Rn(Ce,W,b),m.push(b.x,b.y,b.z),Rn(ye,W,w),g.push(w.x,w.y,w.z),v.push(U,.5+b.y/n),z.push(x++)}}function K(z,U,W,re,ae){let fe=new We.Vector3,oe=new We.Vector2,ne=[W,re];ae<0&&ne.reverse();for(let ee of ne)oe.set(ee,S*ae),Rn(oe,U,fe),m.push(fe.x,fe.y,fe.z),g.push(0,ae,0),v.push(.5,.5),z.push(x++)}function q(z,U,W){let re=new We.Vector2(Math.sin(W),Math.cos(W)),ae=new We.Vector2(-Math.cos(W),Math.sin(W)),fe=new We.Vector3,oe=z<0?(Q,Se,ye)=>h.push(Q,Se,ye):(Q,Se,ye)=>h.push(Q,ye,Se),ne=new We.Vector2((t+e+P+G)/4,0);Rn(ne,re,fe),m.push(fe.x,fe.y,fe.z),g.push(ae.x,0,ae.y),v.push(.5,.5);let ee=x++;for(let Q of U){let Se=m.slice(Q*3,Q*3+3);m.push(...Se),g.push(ae.x,0,ae.y);let ye=v.slice(Q*2,Q*2+2);v.push(...ye),x++}for(let Q=ee+1;Q<x-1;Q++)oe(ee,Q,Q+1);oe(ee,x-1,ee+1)}}};var fm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,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},r.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(r){let{width:t,depth:e,height:n,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:u,cornerRadiusBottom:c,cornerSegments:p}=r.parameters,f;return u>0||c>0||l<360?f=new pa(0,t/2,n,o,i,a,s,l*Math.PI/180,u,c,p,0,!0):f=new pm.ConeBufferGeometry(t/2,n,o,i,a),f.scale(1,1,e/t),Object.assign(f,{userData:{...r,type:"ConeGeometry"}})}};var zt=require("three"),dm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},r.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(r){let{width:t,height:e,depth:n,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=r.parameters,u;return s==0?u=new zt.BoxBufferGeometry(t,e,n,o,i,a):u=new au(t,e,n,o,i,a,s,l),Object.assign(u,{userData:{...r,type:"CubeGeometry"}})}},iu=Math.PI/2,au=class extends zt.BufferGeometry{constructor(t=1,e=1,n=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxBufferGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,n/2);let c=[],p=[],f=[],d=[],h=0,m=0;g("z","y","x",-1,-1,n,e,t,a,i,0),g("z","y","x",1,-1,n,e,-t,a,i,1),g("x","z","y",1,1,t,n,e,o,a,2),g("x","z","y",1,-1,t,n,-e,o,a,3),g("x","y","z",1,-1,t,e,n,o,i,4),g("x","y","z",-1,-1,t,e,-n,o,i,5),s>0&&(v("z","y","x",-1,-1,1,n,e,t,a,0),v("z","y","x",1,-1,-1,n,e,t,a,1),v("z","y","x",-1,1,-1,n,e,t,a,1),v("z","y","x",1,1,1,n,e,t,a,0),v("x","y","z",-1,-1,-1,t,e,n,o,0),v("x","y","z",1,-1,1,t,e,n,o,1),v("x","y","z",-1,1,1,t,e,n,o,0),v("x","y","z",1,1,-1,t,e,n,o,1),v("y","x","z",-1,-1,1,e,t,n,i,0),v("y","x","z",1,-1,-1,e,t,n,i,1),v("y","x","z",1,1,1,e,t,n,i,1),v("y","x","z",-1,1,-1,e,t,n,i,0),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new zt.Float32BufferAttribute(p,3)),this.setAttribute("normal",new zt.Float32BufferAttribute(f,3)),this.setAttribute("uv",new zt.Float32BufferAttribute(d,2));function g(S,w,b,_,T,y,I,A,O,C,N){let P=(y-2*s)/O,G=(I-2*s)/C,$=y/2-s,Y=I/2-s,ie=A/2,j=O+1,H=C+1,V=0,R=0,D=new zt.Vector3;for(let F=0;F<H;F++){let B=F*G-Y;for(let X=0;X<j;X++){let K=X*P-$;D[S]=K*_,D[w]=B*T,D[b]=ie,p.push(D.x,D.y,D.z),D[S]=0,D[w]=0,D[b]=A>0?1:-1,f.push(D.x,D.y,D.z),d.push(X/O),d.push(1-F/C),V+=1}}for(let F=0;F<C;F++)for(let B=0;B<O;B++){let X=h+B+j*F,K=h+B+j*(F+1),q=h+(B+1)+j*(F+1),z=h+(B+1)+j*F;c.push(X,K,z),c.push(K,q,z),R+=6}u.addGroup(m,R,N),m+=R,h+=V}function v(S,w,b,_,T,y,I,A,O,C,N){let P=(I-2*s)/C,G=I/2-s,$=A/2-s,Y=O/2,ie=C+1,j=0,H=0,V=new zt.Vector3,R=new zt.Vector3;for(let D=0;D<l+1;D++){let F=D/l*iu,B=Math.sin(F)*s,X=(1-Math.cos(F))*s,K=Math.sin(F),q=Math.cos(F);V[w]=($+B)*T,V[b]=(Y-X)*y,R[S]=0,R[w]=K*Math.sign(V[w]),R[b]=q*Math.sign(V[b]);for(let z=0;z<ie;z++){let U=z*P-G;V[S]=U*_,p.push(V.x,V.y,V.z),f.push(R.x,R.y,R.z),d.push(z/C),d.push(0),j+=1}}for(let D=0;D<l;D++)for(let F=0;F<C;F++){let B=h+F+ie*D,X=h+F+ie*(D+1),K=h+(F+1)+ie*(D+1),q=h+(F+1)+ie*D;c.push(B,X,q),c.push(X,K,q),H+=6}u.addGroup(m,H,N),m+=H,h+=j}function x(S,w,b){let _=new zt.Vector3,T=new zt.Vector3(t/2,e/2,n/2);T.subScalar(s);let y=[],I=S*w*b>0?(O,C,N)=>c.push(O,C,N):(O,C,N)=>c.push(O,N,C);for(let O=0;O<=l;O++){let C=[],N=iu*(1-O/l),P=Math.cos(N),G=Math.sin(N),$=0;for(let Y=0;Y<=O;Y++){let ie=Math.cos($),j=Math.sin($);_.x=P*ie,_.y=G,_.z=P*j;let H=T.clone().addScaledVector(_,s);p.push(S*H.x,w*H.y,b*H.z),f.push(S*_.x,w*_.y,b*_.z),d.push(0,0),C.push(h++),$+=iu/O}y.push(C)}let A=y.length-1;for(let O=0;O<A;O++){let C=y[O],N=y[O+1],P=C.length-1;I(C[0],N[1],N[0]);for(let G=1;G<=P;G++)I(C[G-1],C[G],N[G]),I(C[G],N[G+1],N[G])}}}};var Ke=require("three"),kn=class extends Ke.BufferGeometry{constructor(t=[],e=[],n="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],u=[];c(),p(),this.setAttribute("position",new Ke.Float32BufferAttribute(s,3)),this.setAttribute("normal",new Ke.Float32BufferAttribute(u,3)),this.setAttribute("uv",new Ke.Float32BufferAttribute(l,2));return;function c(){i=Math.min(1-1e-5,i),i==0&&(a=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[n],h=new Ke.Vector3,m=h.clone(),g=new Ke.Triangle,v=i*o,x=o-v,S=a+1,w=new Ke.Vector3,b=(j,H)=>w.subVectors(j,H).normalize(),_=(j,H)=>Array(j).fill(void 0).map(H),T=_(t.length/3,(j,H)=>new Ke.Vector3().fromArray(t,H*3).setLength(o)),y=[],I=1e6;for(let j=0;j<T.length;j++){let H=T[j],V=[],R,D,F,B=1e10,X=-1;for(;(X=e.indexOf(j,X+1))!=-1;){let U=X-X%3;R=e[U+(X+1)%3],D=e[U+(X+2)%3],F=H.distanceToSquared(T[R]),B=Math.min(B,F),V.push([R,D,F])}B+=1e-6;let K=[],q=0,z=V.length;for(let U=0;U<z;U++){[R,D,F]=V[q];let W=y[R]?.includes(j)==!0;F<=B&&K.push(R+ +W*I),q=V.findIndex(re=>re[0]==D)}y.push(K)}let A=[];{let j=0,H=0,V,R,D=d==3;for(let F=0;F<=a;F++){V=F*(F+1)/2,R=(F+1)*(F+2)/2;for(let B=0;B<a-F;B++)[j,H]=[V+B+F+2,R+B+F+3],A.push(V,R,...D?[H,V]:[j,R],H,j),[V,R]=[j,H];A.push(V,R,V+a+2)}}let O=h.clone(),C=h.clone(),N=h.clone(),P=h.clone(),G=h.clone(),$=[],Y=_(T.length,()=>_(d,()=>h.clone()));for(let j=0;j<T.length;j++){h.copy(T[j]).normalize(),O.copy(h).multiplyScalar(x);let H=y[j];for(let K=0;K<H.length;K++){let q=H[K],z=H[(K+1)%d];g.setFromPointsAndIndices(T,j,q%I,z%I),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(O,Y[j][K])}let V=[],R=[],D=[],F=new Ke.Vector3;a==0&&[...Y[j]].reduce((K,q)=>K.add(q),F).multiplyScalar(1/d);for(let K=0;K<d;K++){let q=[],z=(K-1+d)%d,U=Y[j][z],W=Y[j][K];h.copy(U).sub(O),m.copy(W).sub(O);let re=O.angleTo(h),ae=h.angleTo(m),fe=Math.cos(re)*v;a==0?C.copy(F):C.copy(O).setLength(x+fe),R.push(fe);let oe=[C,U,W];for(let ne=0;ne<2;ne++){let ee=oe[ne],Q=oe[ne+1];P.subVectors(ee,O),G.subVectors(Q,O),N.crossVectors(P,G).normalize();for(let Se=0;Se<S;Se++){let ye=[re,ae][ne]*Se/S;h.copy(P).applyAxisAngle(N,ye).add(O),V.push(h.clone()),ne&&(b(h,O),q.push([Se==0?ee:h.clone(),w.clone()]))}ne&&(b(Q,O),q.push([Q,w.clone()]))}D.push(q)}$.push(D);let B=2*S,X=2;for(let K=0;K<d;K++){let q=B*K,z=B*((K+1)%d),U=[V[q]];for(let re=1;re<S;re++){P=V[q+re],G=V[z+re],U.push(P);for(let ae=1,fe=re-X+1;ae<=fe;ae++)h.lerpVectors(P,G,ae/(fe+1)),h.sub(O).setLength(R[K]).add(O),U.push(h.clone());U.push(G)}for(let re=0;re<S;re++)U.push(V[re+S+q]);U.push(V[z+S]);let W=A.map(re=>U[re]);s.push(...W.map(re=>[re.x,re.y,re.z]).flat()),u.push(...W.map(re=>(b(re,O),[w.x,w.y,w.z])).flat())}}let ie=[];for(let j=0;j<y.length;j++)for(let H=0;H<d;H++){let V=y[j][H];if(V<I){let R=y[V].findIndex(B=>B%I==j),D=$[j][H],F=$[V][R];for(let B=0;B<S;B++){let X=D[B],K=F[S-B],q=D[B+1],z=F[S-(B+1)];[X,K,q,q,K,z].forEach(U=>{s.push(U[0].x,U[0].y,U[0].z),u.push(U[1].x,U[1].y,U[1].z)})}ie.push(D[0][0],F[S][0],D[S][0],F[0][0])}}for(;ie.length;){let j,H,V,R;[j,H]=ie.splice(0,2);let D=[j];for(;j!=H;)D.push(H),V=ie.indexOf(H),R=V%2,H=ie.splice(V-R,2)[1-R];w.subVectors(D[0],D[1]).cross(h.subVectors(D[0],D[2])).normalize();let F=w.dot(D[0])<0;F&&w.negate();for(let B=1;B<=D.length-2;B++)[D[B+ +F],D[B+1-+F],D[0]].forEach(X=>{s.push(X.x,X.y,X.z),u.push(w.x,w.y,w.z)})}}function p(){let f=new Ke.Vector3;for(let T=0;T<s.length;T+=3){f.x=s[T+0],f.y=s[T+1],f.z=s[T+2];let y=b(f)/2/Math.PI+.5,I=_(f)/Math.PI+.5;l.push(y,1-I)}let d=new Ke.Vector3,h=new Ke.Vector3,m=new Ke.Vector3,g=new Ke.Vector3,v=new Ke.Vector2,x=new Ke.Vector2,S=new Ke.Vector2,w=(T,y,I,A)=>{A<0&&T.x===1&&(l[y]=T.x-1),I.x===0&&I.z===0&&(l[y]=A/2/Math.PI+.5)};for(let T=0,y=0;T<s.length;T+=9,y+=6){d.set(s[T+0],s[T+1],s[T+2]),h.set(s[T+3],s[T+4],s[T+5]),m.set(s[T+6],s[T+7],s[T+8]),v.set(l[y+0],l[y+1]),x.set(l[y+2],l[y+3]),S.set(l[y+4],l[y+5]),g.copy(d).add(h).add(m).divideScalar(3);let I=b(g);w(v,y+0,d,I),w(x,y+2,h,I),w(S,y+4,m,I)}for(let T=0;T<l.length;T+=6){let y=l[T+0],I=l[T+2],A=l[T+4],O=Math.max(y,I,A),C=Math.min(y,I,A);O>.9&&C<.1&&(y<.2&&(l[T+0]+=1),I<.2&&(l[T+2]+=1),A<.2&&(l[T+4]+=1))}function b(T){return Math.atan2(T.z,-T.x)}function _(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(t){return new kn(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var hm=require("three"),mm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},r.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(r){let{width:t,height:e,depth:n,detail:o,corner:i,cornerSides:a}=r.parameters,s=o===0&&i!==0?new fa(t*.5,i,a):new hm.DodecahedronBufferGeometry(t*.5,o);return s.scale(1,e/t,n/t),Object.assign(s,{userData:{...r,type:"DodecahedronGeometry"}})}},fa=class extends kn{constructor(t=1,e=.2,n=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,t,e,n),this.type=l}static fromJSON(t){return new fa(t.radius,t.corner,t.cornerSides)}};var lu=Math.PI*2;function su({x:r,y:t},e,n,o,i){return{x:r*e+o,y:t*n+i}}function XT(r,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),n=Math.cos(r),o=Math.sin(r),i=Math.cos(r+t),a=Math.sin(r+t);return[{x:n-o*e,y:o+n*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function gm(r,t,e,n){let o=r*n-t*e<0?-1:1,i=Math.min(1,Math.max(-1,r*e+t*n));return o*Math.acos(i)}function YT(r,t,e,n,o,i,a,s,l,u){let c=Math.pow(o,2),p=Math.pow(i,2),f=Math.pow(a,2),d=Math.pow(s,2),h=c*p-c*d-p*f;h<0&&(h=0),h/=c*d+p*f,h=Math.sqrt(h)*(l===u?-1:1);let m=h*o/i*s,g=h*-i/o*a,v=m+(r+e)/2,x=g+(t+n)/2,S=(a-m)/o,w=(s-g)/i,b=(-a-m)/o,_=(-s-g)/i,T=gm(1,0,S,w),y=gm(S,w,b,_);return!u&&y>0&&(y-=lu),u&&y<0&&(y+=lu),{centerx:v,centery:x,ang1:T,ang2:y}}function ym({px:r,py:t,cx:e,cy:n,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let u=(r-e)/2,c=(t-n)/2;if(u===0&&c===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(u,2)/Math.pow(o,2)+Math.pow(c,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let f=YT(r,t,e,n,o,i,u,c,a,s),{ang1:d,ang2:h}=f,{centerx:m,centery:g}=f,v=Math.abs(h)/(lu/4);Math.abs(1-v)<1e-7&&(v=1);let x=Math.max(Math.ceil(v),1);h/=x;for(let S=0;S<x;S++)l.push(XT(d,h)),d+=h;return l.map(S=>{let{x:w,y:b}=su(S[0],o,i,m,g),{x:_,y:T}=su(S[1],o,i,m,g),{x:y,y:I}=su(S[2],o,i,m,g);return{x1:w,y1:b,x2:_,y2:T,x:y,y:I}})}var di=require("three"),xm=Math.PI*2,bm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters);return{shape:r.shape&&r.shape instanceof Le?r.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(r){let{width:t,height:e,spikes:n,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=r.parameters,u=r.shape,c=t*.5,p=e*.5,f=$T(u,c,p,o*Math.PI/180,n,i);u.isClosed=!0,u.update();let d=Ct.create({shape:u,parameters:{subdivisions:f,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...r,type:"EllipseGeometry"}})}};function $T(r,t,e,n,o,i){if(n>=xm)return o>30||o%4===0?(ZT(r,t,e,i),Math.round(o/4)):vm(r,n,o,t,e,i);let a={x:0,y:e},s=n+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},u=ym({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:n>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?KT(r,a.x,a.y,u,o,t,e,i):vm(r,n,o,t,e,i)}function KT(r,t,e,n,o,i,a,s){let l=Math.round(o/n.length);r.addPoint(fi(t,e));for(let u=0,c=n.length;u<c;u++){let p=n[u],f=r.points[u],d=fi(p.x,p.y);f.controls[1].position.set(p.x1,p.y1),d.controls[0].position.set(p.x2,p.y2),r.addPoint(d)}return s>0?Sm(r,i,a,s):r.addPoint(fi(0,0)),l}function vm(r,t,e,n,o,i){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,u=Math.sin(l)*n,c=Math.cos(l)*o;r.addPoint(fi(u,c))}return t<xm?i>0?Sm(r,n,o,i):r.addPoint(fi(0,0)):(r.removePoint(r.points[r.points.length-1]),i>0&&wm(r,n,o,i)),1}function ZT(r,t,e,n=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;r.addPoint(wl(o-t,i,o-t,i-l,o-t,i+l)),r.addPoint(wl(o,i+e,o-s,i+e,o+s,i+e)),r.addPoint(wl(o+t,i,o+t,i+l,o+t,i-l)),r.addPoint(wl(o,i-e,o+s,i-e,o-s,i-e)),n>0&&wm(r,t,e,n)}function fi(r,t){return new gr(di.MathUtils.generateUUID(),new di.Vector2(r,t))}function wl(r,t,e,n,o,i){let a=fi(r,t);return a.controls[0].position.set(e,n),a.controls[1].position.set(o,i),a}function Sm(r,t,e,n){Tm(r,t,e,n).forEach(i=>r.addPoint(i))}function wm(r,t,e,n){let o=Tm(r,t,e,n),i=new Le;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,r.shapeHoles.push(i)}function Tm(r,t,e,n){let o=n*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new di.Vector2(o/t,i/e),s=r.points.map(l=>{let u=l.clone();return u.uuid=di.MathUtils.generateUUID(),u}).reverse();return s.forEach(l=>{l.position.multiply(a);let u=l.controls[0].position.clone().multiply(a),c=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(c),l.controls[1].position.copy(u)}),s}var hn=require("three"),Cm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},r.parameters),n=Math.abs(e.width),o=Math.abs(e.height??n),i=Math.abs(e.depth??n),a=Math.abs(Math.min(n,i))/2;return{parameters:Object.assign(e,{width:n,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(r){let{width:t,height:e,depth:n,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:u,cornerRadius:c,cornerSegments:p}=r.parameters,f=new da(!1,t,e,n,o,i,a,s,l,u,c,p);return Object.assign(f,{userData:{...r,type:"HelixGeometry"}})}},da=class extends hn.BufferGeometry{constructor(t=!0,e=1,n=1,o=1,i=1,a=1,s=1,l=1,u=1,c=1,p=1,f=1){super();let d=t&&a===1;d&&(f=0),p>100&&(p=100);let h=()=>new hn.Vector3,m=new hn.Vector3,g=h(),v=h(),x=h(),S,w,b,_,T,y,I,A,O=h(),C=h(),N=h(),P=h(),G=h(),$=h(),Y=h(),ie=h(),j=n-2*l+.001,H=j/a,V=Math.ceil(s*a),R=V+1,D=j/V,F=-j/2,B=c+1,X=2*Math.PI/c,K=Math.PI/2/f,q=.01,z=Math.min((1-p/100)*l,l-q),U=l-z,W=0,re=2,ae=f*re+re,fe=B*ae/re,oe=fe+B*R,ne=B*(R+ae),[ee,Q,Se]=[3,3,2].map(et=>Array(ne*et).fill(0)),ye=[],Ce=i-l;function mt(et,Yt){let Pr=Math.PI/2;y=Yt*D,A=2*Math.PI*(y%H)/H+Pr,y+=F,I=Math.sin(A)*Ce,T=Math.cos(A)*Ce,t?et.set(T,I,y):et.set(T,y,I)}mt(m,-1e-10),mt(g,0),O.copy(m),mt(m,1);let Me=m.distanceTo(g),De=U+z,Re=Me*V+2*De,nr=z,Sn=Re-De;for(let et=0;et<=V;et++){mt(v,et),ie.subVectors(v,O).normalize(),O.copy(v),$.copy(v).setComponent(+t+1,0).normalize(),Y.crossVectors(ie,$).normalize();let Yt=et===0,Pr=et===V,ov=Yt?3*Math.PI/2:K,iv=Yt?nr:Sn,av=Yt?B:oe,sv=Yt?0:ne-B,lv=ie.clone().multiplyScalar(Yt?-U:U).add(v),cv=ie.clone().multiplyScalar(Yt?-1:1).normalize();for(let sn=0;sn<B;sn++){let Ep=sn*X;if(C.addVectors(m.copy($).multiplyScalar(l*Math.cos(Ep)),g.copy(Y).multiplyScalar(l*Math.sin(Ep))),N.copy(C).normalize(),Yt||Pr){d||(W=sv+sn,[0,1,2].forEach(Ft=>{ee[W*3+Ft]=lv.getComponent(Ft),Q[W*3+Ft]=cv.getComponent(Ft)}),Se[W*2]=+Pr,Se[W*2+1]=sn/c),g.copy(N).multiplyScalar(z),x.addVectors(v,g);for(let Ft=0;Ft<f;Ft++){let gc=Ft*K+ov;P.addVectors(m.copy(ie).multiplyScalar(U*Math.sin(gc)),g.copy(N).multiplyScalar(U*Math.cos(gc))),G.copy(P).normalize(),g.addVectors(x,P),P.normalize(),W=av+Ft*B+sn,[0,1,2].forEach(ds=>{ee[W*3+ds]=g.getComponent(ds),Q[W*3+ds]=G.getComponent(ds)});let uv=+Yt+Math.sin(gc);Se[W*2]=(iv+U*uv)/Re,Se[W*2+1]=sn/c}}g.addVectors(v,C),W=fe+et*B+sn,[0,1,2].forEach(Ft=>{ee[W*3+Ft]=g.getComponent(Ft),Q[W*3+Ft]=N.getComponent(Ft)}),Se[W*2]=(De+et*Me)/Re,Se[W*2+1]=sn/c}}let Xt=R+2*f+re,Lo=1,[ps,fs]=d?[Lo,Lo+R-1]:[0,Xt-1];for(let et=ps;et<=fs-1;et++){let Yt=d&&et===fs-1;for(let Pr=0;Pr<B-1;Pr++)S=et*B+Pr,w=S+1,b=(Yt?Pr:S)+B,_=(Yt?Pr+1:w)+B,et===0?ye.push(w,_,b):et===Xt-2?ye.push(S,w,b):ye.push(S,w,b,w,_,b)}this.setIndex(ye),this.setAttribute("position",new hn.Float32BufferAttribute(ee,3)),this.setAttribute("normal",new hn.Float32BufferAttribute(Q,3)),this.setAttribute("uv",new hn.Float32BufferAttribute(Se,2))}};var Am=require("three");var _m=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},r.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(r){let{width:t,height:e,depth:n,detail:o,corner:i,cornerSides:a}=r.parameters,s=o===0&&i!==0?new ha(t*.5,i,a):new Am.IcosahedronBufferGeometry(t*.5,o);return s.scale(1,e/t,n/t),Object.assign(s,{userData:{...r,type:"IcosahedronGeometry"}})}},ha=class extends kn{constructor(t=1,e=.2,n=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(i,a,s,t,e,n),this.type=s}static fromJSON(t){return new ha(t.radius,t.corner,t.cornerSides)}};var Tl=require("three"),Im=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){(r.parameters?.points??[]).forEach(n=>{Array.isArray(n)&&(n.x=n[0],n.y=n[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}]},r.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(r){let{points:t,segments:e,verticalSegments:n}=r.parameters,o=new Tl.Shape;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 Tl.LatheBufferGeometry(o.extractPoints(n).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...r,type:"LatheGeometry"}})}};var Vr=require("three");var mn=require("three");var ce=require("three"),Ur=new ce.Matrix4,cu=new ce.Object3D,Cl=new ce.Vector3,Gn=class extends ce.EventDispatcher{constructor(){super(),this.uuid=ce.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new ce.Matrix3().getNormalMatrix(t);for(let n=0,o=this.vertices.length;n<o;n++)this.vertices[n].applyMatrix4(t);for(let n=0,o=this.faces.length;n<o;n++){let i=this.faces[n];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return Ur.makeRotationX(t),this.applyMatrix4(Ur),this}rotateY(t){return Ur.makeRotationY(t),this.applyMatrix4(Ur),this}rotateZ(t){return Ur.makeRotationZ(t),this.applyMatrix4(Ur),this}translate(t,e,n){return Ur.makeTranslation(t,e,n),this.applyMatrix4(Ur),this}scale(t,e,n){return Ur.makeScale(t,e,n),this.applyMatrix4(Ur),this}lookAt(t){return cu.lookAt(t),cu.updateMatrix(),this.applyMatrix4(cu.matrix),this}fromBufferGeometry(t){let e=this,n=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let f=0;f<i.count;f++)e.vertices.push(new ce.Vector3().fromBufferAttribute(i,f)),s!==void 0&&e.colors.push(new ce.Color().fromBufferAttribute(s,f));function c(f,d,h,m){let g=s===void 0?[]:[e.colors[f].clone(),e.colors[d].clone(),e.colors[h].clone()],v=a===void 0?[]:[new ce.Vector3().fromBufferAttribute(a,f),new ce.Vector3().fromBufferAttribute(a,d),new ce.Vector3().fromBufferAttribute(a,h)],x=new hi(f,d,h,v,g,m);e.faces.push(x),l!==void 0&&e.faceVertexUvs[0].push([new ce.Vector2().fromBufferAttribute(l,f),new ce.Vector2().fromBufferAttribute(l,d),new ce.Vector2().fromBufferAttribute(l,h)]),u!==void 0&&e.faceVertexUvs[1].push([new ce.Vector2().fromBufferAttribute(u,f),new ce.Vector2().fromBufferAttribute(u,d),new ce.Vector2().fromBufferAttribute(u,h)])}let p=t.groups;if(p.length>0)for(let f=0;f<p.length;f++){let d=p[f],h=d.start,m=d.count;for(let g=h,v=h+m;g<v;g+=3)n!==void 0?c(n.getX(g),n.getX(g+1),n.getX(g+2),d.materialIndex):c(g,g+1,g+2,d.materialIndex)}else if(n!==void 0)for(let f=0;f<n.count;f+=3)c(n.getX(f),n.getX(f+1),n.getX(f+2));else for(let f=0;f<i.count;f+=3)c(f,f+1,f+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(Cl).negate(),this.translate(Cl.x,Cl.y,Cl.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,n=e===0?1:1/e,o=new ce.Matrix4;return o.set(n,0,0,-n*t.x,0,n,0,-n*t.y,0,0,n,-n*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new ce.Vector3,e=new ce.Vector3;for(let n=0,o=this.faces.length;n<o;n++){let i=this.faces[n],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let n=0,o=this.vertices.length;n<o;n++)e[n]=new ce.Vector3;if(t){let n=new ce.Vector3,o=new ce.Vector3;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],u=this.vertices[s.b],c=this.vertices[s.c];n.subVectors(c,u),o.subVectors(l,u),n.cross(o),e[s.a].add(n),e[s.b].add(n),e[s.c].add(n)}}else{this.computeFaceNormals();for(let n=0,o=this.faces.length;n<o;n++){let i=this.faces[n];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let n=0,o=this.vertices.length;n<o;n++)e[n].normalize();for(let n=0,o=this.faces.length;n<o;n++){let i=this.faces[n],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let n=this.faces[t],o=n.vertexNormals;o.length===3?(o[0].copy(n.normal),o[1].copy(n.normal),o[2].copy(n.normal)):(o[0]=n.normal.clone(),o[1]=n.normal.clone(),o[2]=n.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,n=this.faces.length;e<n;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new Gn;t.faces=this.faces;for(let e=0,n=this.morphTargets.length;e<n;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let u=new ce.Vector3,c={a:new ce.Vector3,b:new ce.Vector3,c:new ce.Vector3};i.push(u),a.push(c)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],u=o.vertexNormals[i];l.copy(s.normal),u.a.copy(s.vertexNormals[0]),u.b.copy(s.vertexNormals[1]),u.c.copy(s.vertexNormals[2])}}for(let e=0,n=this.faces.length;e<n;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ce.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ce.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,n=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,u=t.faces,c=this.colors,p=t.colors;e!==void 0&&(o=new ce.Matrix3().getNormalMatrix(e));for(let f=0,d=s.length;f<d;f++){let m=s[f].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let f=0,d=p.length;f<d;f++)c.push(p[f].clone());for(let f=0,d=u.length;f<d;f++){let h=u[f],m,g,v=h.vertexNormals,x=h.vertexColors,S=new hi(h.a+i,h.b+i,h.c+i);S.normal.copy(h.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,b=v.length;w<b;w++)m=v[w].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),S.vertexNormals.push(m);S.color.copy(h.color);for(let w=0,b=x.length;w<b;w++)g=x[w],S.vertexColors.push(g.clone());S.materialIndex=h.materialIndex+n,l.push(S)}for(let f=0,d=t.faceVertexUvs.length;f<d;f++){let h=t.faceVertexUvs[f];this.faceVertexUvs[f]===void 0&&(this.faceVertexUvs[f]=[]);for(let m=0,g=h.length;m<g;m++){let v=h[m],x=[];for(let S=0,w=v.length;S<w;S++)x.push(v[S].clone());this.faceVertexUvs[f].push(x)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},n=[],o=[],i=Math.pow(10,t);for(let l=0,u=this.vertices.length;l<u;l++){let c=this.vertices[l],p=Math.round(c.x*i)+"_"+Math.round(c.y*i)+"_"+Math.round(c.z*i);e[p]===void 0?(e[p]=l,n.push(this.vertices[l]),o[l]=n.length-1):o[l]=o[e[p]]}let a=[];for(let l=0,u=this.faces.length;l<u;l++){let c=this.faces[l];c.a=o[c.a],c.b=o[c.b],c.c=o[c.c];let p=[c.a,c.b,c.c];for(let f=0;f<3;f++)if(p[f]===p[(f+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let u=a[l];this.faces.splice(u,1);for(let c=0,p=this.faceVertexUvs.length;c<p;c++)this.faceVertexUvs[c].splice(u,1)}let s=this.vertices.length-n.length;return this.vertices=n,s}setFromPoints(t){this.vertices=[];for(let e=0,n=t.length;e<n;e++){let o=t[e];this.vertices.push(new ce.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function n(l,u){return l.materialIndex-u.materialIndex}t.sort(n);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let u=t[l]._id;a&&a.push(o[u]),s&&s.push(i[u])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let n=[],o=[],i={},a=[],s={},l=[],u={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],g=!0,v=!1,x=this.faceVertexUvs[0][h]!==void 0,S=m.normal.length()>0,w=m.vertexNormals.length>0,b=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.vertexColors.length>0,T=0;if(T=c(T,0,0),T=c(T,1,g),T=c(T,2,v),T=c(T,3,x),T=c(T,4,S),T=c(T,5,w),T=c(T,6,b),T=c(T,7,_),n.push(T),n.push(m.a,m.b,m.c),n.push(m.materialIndex),x){let y=this.faceVertexUvs[0][h];n.push(d(y[0]),d(y[1]),d(y[2]))}if(S&&n.push(p(m.normal)),w){let y=m.vertexNormals;n.push(p(y[0]),p(y[1]),p(y[2]))}if(b&&n.push(f(m.color)),_){let y=m.vertexColors;n.push(f(y[0]),f(y[1]),f(y[2]))}}function c(h,m,g){return g?h|1<<m:h&~(1<<m)}function p(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[m]}function f(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function d(h){let m=h.x.toString()+h.y.toString();return u[m]!==void 0||(u[m]=l.length/2,l.push(h.x,h.y)),u[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=n,t}clone(){return new Gn().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 f=0,d=e.length;f<d;f++)this.vertices.push(e[f].clone());let n=t.colors;for(let f=0,d=n.length;f<d;f++)this.colors.push(n[f].clone());let o=t.faces;for(let f=0,d=o.length;f<d;f++)this.faces.push(o[f].clone());for(let f=0,d=t.faceVertexUvs.length;f<d;f++){let h=t.faceVertexUvs[f];this.faceVertexUvs[f]===void 0&&(this.faceVertexUvs[f]=[]);for(let m=0,g=h.length;m<g;m++){let v=h[m],x=[];for(let S=0,w=v.length;S<w;S++){let b=v[S];x.push(b.clone())}this.faceVertexUvs[f].push(x)}}let i=t.morphTargets;for(let f=0,d=i.length;f<d;f++){let h={};if(h.name=i[f].name,i[f].vertices!==void 0){h.vertices=[];for(let m=0,g=i[f].vertices.length;m<g;m++)h.vertices.push(i[f].vertices[m].clone())}if(i[f].normals!==void 0){h.normals=[];for(let m=0,g=i[f].normals.length;m<g;m++)h.normals.push(i[f].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let f=0,d=a.length;f<d;f++){let h={};if(a[f].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,g=a[f].vertexNormals.length;m<g;m++){let v=a[f].vertexNormals[m],x={};x.a=v.a.clone(),x.b=v.b.clone(),x.c=v.c.clone(),h.vertexNormals.push(x)}}if(a[f].faceNormals!==void 0){h.faceNormals=[];for(let m=0,g=a[f].faceNormals.length;m<g;m++)h.faceNormals.push(a[f].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let f=0,d=s.length;f<d;f++)this.skinWeights.push(s[f].clone());let l=t.skinIndices;for(let f=0,d=l.length;f<d;f++)this.skinIndices.push(l[f].clone());let u=t.lineDistances;for(let f=0,d=u.length;f<d;f++)this.lineDistances.push(u[f]);let c=t.boundingBox;c!==null&&(this.boundingBox=c.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.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 uu().fromGeometry(this),e=new ce.BufferGeometry,n=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new ce.BufferAttribute(n,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new ce.BufferAttribute(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new ce.BufferAttribute(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new ce.BufferAttribute(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new ce.BufferAttribute(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let u=a[s],c=new ce.Float32BufferAttribute(u.data.length*3,3);c.name=u.name,i.push(c.copyVector3sArray(u.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new ce.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new ce.Float32BufferAttribute(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 ce.BufferGeometry,n=t.geometry;if(t.isPoints||t.isLine){let o=new ce.Float32BufferAttribute(n.vertices.length*3,3),i=new ce.Float32BufferAttribute(n.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(n.vertices)),e.setAttribute("color",i.copyColorsArray(n.colors)),n.lineDistances&&n.lineDistances.length===n.vertices.length){let a=new ce.Float32BufferAttribute(n.lineDistances.length,1);e.setAttribute("lineDistance",a.copyArray(n.lineDistances))}n.boundingSphere!==null&&(e.boundingSphere=n.boundingSphere.clone()),n.boundingBox!==null&&(e.boundingBox=n.boundingBox.clone())}else t.isMesh&&(e=n.toBufferGeometry());return e}};Gn.prototype.isGeometry=!0;var uu=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=[],n,o,i,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,n!==void 0&&(n.count=o*3-n.start,e.push(n)),n={start:o*3,materialIndex:i})}n!==void 0&&(n.count=o*3-n.start,e.push(n)),this.groups=e}fromGeometry(t){let e=t.faces,n=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,u;if(l>0){u=[];for(let v=0;v<l;v++)u[v]={name:s[v].name,data:[]};this.morphTargets.position=u}let c=t.morphNormals,p=c.length,f;if(p>0){f=[];for(let v=0;v<p;v++)f[v]={name:c[v].name,data:[]};this.morphTargets.normal=f}let d=t.skinIndices,h=t.skinWeights,m=d.length===n.length,g=h.length===n.length;n.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let v=0;v<e.length;v++){let x=e[v];this.vertices.push(n[x.a],n[x.b],n[x.c]);let S=x.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let b=x.normal;this.normals.push(b,b,b)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let b=x.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][v];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",v),this.uvs.push(new ce.Vector2,new ce.Vector2,new ce.Vector2))}if(a===!0){let b=o[1][v];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",v),this.uvs2.push(new ce.Vector2,new ce.Vector2,new ce.Vector2))}for(let b=0;b<l;b++){let _=s[b].vertices;u[b].data.push(_[x.a],_[x.b],_[x.c])}for(let b=0;b<p;b++){let _=c[b].vertexNormals[v];f[b].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(d[x.a],d[x.b],d[x.c]),g&&this.skinWeights.push(h[x.a],h[x.b],h[x.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},hi=class{constructor(t,e,n,o,i,a=0){this.a=t,this.b=e,this.c=n,this.normal=o&&o.isVector3?o:new ce.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new ce.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,n=t.vertexNormals.length;e<n;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,n=t.vertexColors.length;e<n;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var QT=["a","b","c"];function JT(r,t){switch(t){case"c":return r.c;case"b":return r.b;case"a":default:return r.a}}function pu(r,t,e){let n=Math.min(r,t),o=Math.max(r,t),i=n+"_"+o;return e.get(i)}function fu(r,t,e,n,o,i){let a=Math.min(r,t),s=Math.max(r,t),l=a+"_"+s,u;if(n.has(l))u=n.get(l);else{let c=e[a],p=e[s];u={a:c,b:p,newEdge:null,faces:[]},n.set(l,u)}u.faces.push(o),i[r].edges.push(u),i[t].edges.push(u)}function eC(r,t,e,n){let o,i,a;for(o=0,i=r.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)a=t[o],fu(a.a,a.b,r,n,a,e),fu(a.b,a.c,r,n,a,e),fu(a.c,a.a,r,n,a,e)}function Al(r,t,e,n,o){r.push(new hi(t,e,n,void 0,void 0,o))}function mi(r,t){return Math.abs(t-r)/2+Math.min(r,t)}function _l(r,t,e,n){r.push([t.clone(),e.clone(),n.clone()])}var Il=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof mn.BufferGeometry?t=new Gn().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 mn.Vector3,n,o,i,a,s,l=t.vertices,u=t.faces,c=t.faceVertexUvs[0],p=c!==void 0&&c.length>0,f=[],d=new Map;eC(l,u,f,d);let h=[],m,g,v,x,S,w,b;for(let q of Array.from(d.keys())){for(g=d.get(q),v=new mn.Vector3,S=3/8,w=1/8,b=g.faces.length,b!=2&&(S=.5,w=0,b!=1),v.addVectors(g.a,g.b).multiplyScalar(S),e.set(0,0,0),a=0;a<b;a++){for(x=g.faces[a],s=0;s<3&&(m=l[JT(x,QT[s])],!(m!==g.a&&m!==g.b));s++);m&&e.add(m)}e.multiplyScalar(w),v.add(e),g.newEdge=h.length,h.push(v)}let _,T,y,I,A,O,C,N=[];for(o=0,i=l.length;o<i;o++){for(O=l[o],A=f[o].edges,n=A.length,n==3?_=3/16:n>3&&(_=3/(8*n)),T=1-n*Number(_),y=_,n<=2&&(n==2?(T=3/4,y=1/8):n==1||n==0),C=O.clone().multiplyScalar(T),e.set(0,0,0),a=0;a<n;a++)I=A[a],m=I.a!==O?I.a:I.b,e.add(m);e.multiplyScalar(Number(y)),C.add(e),N.push(C)}let P=N.concat(h),G=N.length,$,Y,ie,j=[],H=[],V,R,D,F,B=new mn.Vector2,X=new mn.Vector2,K=new mn.Vector2;for(o=0,i=u.length;o<i;o++)x=u[o],$=Number(pu(x.a,x.b,d).newEdge)+G,Y=Number(pu(x.b,x.c,d).newEdge)+G,ie=Number(pu(x.c,x.a,d).newEdge)+G,Al(j,$,Y,ie,x.materialIndex),Al(j,x.a,$,ie,x.materialIndex),Al(j,x.b,Y,$,x.materialIndex),Al(j,x.c,ie,Y,x.materialIndex),p&&(V=c[o],R=V[0],D=V[1],F=V[2],B.set(mi(R.x,D.x),mi(R.y,D.y)),X.set(mi(D.x,F.x),mi(D.y,F.y)),K.set(mi(R.x,F.x),mi(R.y,F.y)),_l(H,B,X,K),_l(H,R,B,K),_l(H,D,X,B),_l(H,F,K,X));t.vertices=P,t.faces=j,p&&(t.faceVertexUvs[0]=H)}};var ct=new Vr.Vector3,Om=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=r.geometry??t?.geometry??new Vr.BufferGeometry().copy(new Vr.BoxBufferGeometry(100,100,100)),n;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ct),n={width:ct.x,height:ct.y,depth:ct.z,subdivisions:0}):n=t.parameters;let o={...n,...r.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(r){let{width:t,height:e,depth:n,subdivisions:o}=r.parameters,i=r.geometry??new Vr.BufferGeometry().copy(new Vr.BoxBufferGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ct)):ct.set(a.width,a.height,a.depth),(t!==ct.x||e!==ct.y||n!==ct.z)&&i.scale(ct.x===0?1:t/ct.x,ct.y===0?1:e/ct.y,ct.z===0?1:n/ct.z);let s=i.originalGeometry;return o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new Il(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),s!==void 0&&Object.assign(i,{originalGeometry:s}),delete r.geometry,Object.assign(i,{userData:{...r,type:"NonParametricGeometry"}})}static loadFromUrl(r,t,e){new Vr.BufferGeometryLoader(e).load(r,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ct);let a=100/ct.x;Object.assign(i.parameters,{width:100,height:ct.y*a,depth:ct.z*a}),t(this.build(i))})}};var Lm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},r.parameters);return{shape:r.shape&&r.shape instanceof Le?r.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(r){let{width:t,height:e,spikes:n,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=r.parameters,l=r.shape,u=t*.5,c=e*.5,p=0,f=0,d=2*Math.PI/n;for(let m=0;m<n;m++){let g=d*m,v=p+Math.sin(g)*u,x=f+Math.cos(g)*c;l.addPoint(l.createPoint(v,x))}l.isClosed=!0;for(let m=0,g=l.points.length;m<g;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=Ct.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...r,type:"PolygonGeometry"}})}};var _e=require("three"),Nm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},r.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(r){let{width:t,height:e,depth:n,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=r.parameters,u=new hu(t*.5,e,o,i,a,s,l);return u.scale(1,1,n/t),Object.assign(u,{userData:{...r,type:"PyramidGeometry"}})}};function ma(r,t,e){e.x=r.x*t.x,e.y=r.y,e.z=r.x*t.y}function du(r,t,e,n,o,i){let a=t.clone().sub(r),s=e.clone().sub(r),l=a.angleTo(s);if(a.normalize(),s.normalize(),n===o){let u=a.add(s).normalize();i.copy(r).addScaledVector(u,n/Math.sin(l/2))}else{let u=a.angleTo(s);i.copy(r),i.addScaledVector(a,o/Math.sin(u)),i.addScaledVector(s,n/Math.sin(u))}}function tC(r,t,e){let n=r.clone().sub(t),o=e.clone().sub(t);return n.projectOnVector(o),n.add(t)}var hu=class extends _e.BufferGeometry{constructor(t=.5,e=1,n=4,o=1,i=!1,a=0,s=4){super(),n=Math.floor(Math.max(3,n)),o=Math.floor(o),s=Math.floor(s);let l=[],u=[],c=[],p=[],f=0,d=e/2,h=Math.PI/n,m=t*Math.cos(Math.PI/n),g=2*Math.PI/n,v=(n-2)*Math.PI/n,x=Math.PI-v,S=new _e.Vector3(0,-d,0),w=new _e.Vector3(0,d,0),b=new _e.Vector2(t,-d),_=new _e.Vector2(m,-d),T=new _e.Vector2(0,w.y).sub(_),y=new _e.Vector2(0,w.y).sub(b),I=new _e.Vector2(T.y,-T.x).normalize(),A=new _e.Vector2(y.y,-y.x).normalize(),C=t*Math.cos(Math.PI/n)*Math.tan((Math.PI-T.angle())/2)-1e-8;a=Math.min(a,C);let N;{let H=new _e.Vector3(I.x,I.y,0),V=new _e.Vector3(Math.cos(g)*H.x,H.y,Math.sin(g)*H.x);N=H.angleTo(V)}let P=a/Math.tan((Math.PI-T.angle())/2),G=a/Math.tan((Math.PI-N)/2),$=new _e.Vector3;if(!i){u.push(S.x,S.y,S.z),c.push(0,-1,0),p.push(0,0);let H=f++,V=[],R=b.clone(),D=P/Math.cos(Math.PI/n);R.x-=D;for(let F=0;F<n;F++){let B=F/n*Math.PI*2+h,X=new _e.Vector2(Math.sin(B),Math.cos(B));ma(R,X,$),u.push($.x,$.y,$.z),c.push(0,-1,0),p.push(0,0),V.push(f++)}for(let F=0;F<V.length;F++)l.push(V[F],H,V[(F+1)%V.length])}let Y=[];{let H=new _e.Vector3,V=new _e.Vector3,R=new _e.Vector3,D=new _e.Vector3,F=new _e.Vector3,B=new _e.Vector3;for(let X=0;X<n;X++){let K=X/n*Math.PI*2+h,q=(X+.5)/n*Math.PI*2+h,z=(X+1)/n*Math.PI*2+h,U=new _e.Vector2(Math.sin(K),Math.cos(K)),W=new _e.Vector2(Math.sin(q),Math.cos(q)),re=new _e.Vector2(Math.sin(z),Math.cos(z));ma(b,U,V),ma(b,re,R),ma(I,W,H),du(w,V,R,G,G,D),u.push(D.x,D.y,D.z),du(V,w,R,G,P,F),u.push(F.x,F.y,F.z),du(R,V,w,P,G,B),u.push(B.x,B.y,B.z),c.push(H.x,H.y,H.z),c.push(H.x,H.y,H.z),c.push(H.x,H.y,H.z),p.push(0,0),p.push(0,0),p.push(0,0);let ae=f++,fe=f++,oe=f++;if(l.push(ae,fe,oe),a>0){{let Q=V.clone().add(R).multiplyScalar(.5),Se=w.clone().sub(Q).normalize(),Ce=S.clone().sub(Q).normalize().add(Se).normalize().multiplyScalar(-1),mt=B.clone().sub(F);ie(Q,mt,Ce,T.angle())}let ne,ee;{let Q=new _e.Vector3;ma(A,re,Q);let Se=B.clone().add(D).multiplyScalar(.5);Se=tC(Se,R,w);let ye=B.clone().sub(D);[ne,ee]=ie(Se,ye,Q,N,D.y)}{let Q=ne,Se=Q.clone().setY(0).normalize(),ye=new _e.Vector3(0,-1,0),Ce=Se.clone().cross(ye);j(Q,Se,ye,Ce)}Y.concat(ee);{let Q=T.angle(),Se=Math.PI-Q,ye=w.clone();ye.y-=a/Math.sin(Q-Math.PI/2);let Ce=new _e.Vector3,mt=[];for(let De=0;De<s;De++){let Re=[],nr=Math.PI/2-Se*De/s,Sn=Math.cos(nr),Xt=Math.sin(nr),Lo=q;for(let ps=0;ps<=De;ps++){let fs=Math.cos(Lo),et=Math.sin(Lo);H.x=Sn*et,H.y=Xt,H.z=Sn*fs,Ce.copy(ye).addScaledVector(H,a),u.push(Ce.x,Ce.y,Ce.z),c.push(H.x,H.y,H.z),p.push(0,0),Re.push(f++),Lo+=Math.PI*2/De/n}mt.push(Re)}ee.reverse(),mt.push(ee);let Me=mt.length-1;for(let De=0;De<Me;De++){let Re=mt[De],nr=mt[De+1],Sn=Re.length-1;l.push(nr[1],Re[0],nr[0]);for(let Xt=1;Xt<=Sn;Xt++)l.push(Re[Xt],Re[Xt-1],nr[Xt]),l.push(nr[Xt+1],Re[Xt],nr[Xt])}}}}}this.setIndex(l),this.setAttribute("position",new _e.Float32BufferAttribute(u,3)),this.setAttribute("normal",new _e.Float32BufferAttribute(c,3)),this.setAttribute("uv",new _e.Float32BufferAttribute(p,2));function ie(H,V,R,D,F){let B=-D/2,X=(Math.PI-D)/2,K=V.clone().normalize().cross(R);H.addScaledVector(R,-a/Math.sin(X));let q=new _e.Vector3,z=new _e.Vector3,U=1,W=f,re=[];for(let ae=0;ae<=s;ae++){let fe=B+ae/s*D;z.set(0,0,0),z.addScaledVector(K,Math.sin(fe)),z.addScaledVector(R,Math.cos(fe));for(let oe=0;oe<=U;oe++){let ne=oe/U-.5;if(q.copy(H),q.addScaledVector(V,ne),q.addScaledVector(z,a),F!=null){let ee=Math.max(0,q.y-F);q.addScaledVector(V,-ee/V.y)}u.push(q.x,q.y,q.z),c.push(z.x,z.y,z.z),p.push(0,0),oe===0&&re.push(f),f++}}for(let ae=0;ae<s;ae++)for(let fe=0;fe<U;fe++){let oe=W+fe+(U+1)*ae,ne=oe+(U+1),ee=ne+1,Q=oe+1;l.push(oe,ne,Q),l.push(ne,ee,Q)}return[H.clone().addScaledVector(V,.5),re]}function j(H,V,R,D){let F=Math.PI/2,B=y.angle()-F,X=[],K=new _e.Vector3,q=new _e.Vector3;for(let U=0;U<=s;U++){let W=[],re=U/s;for(let ae=0;ae<=U;ae++){let oe=((U?ae/U:0)-.5)*x,ne=Math.cos(oe),ee=Math.sin(oe),Q=Math.atan(Math.tan(B)*ne),Se=(F+Q)*re,ye=Math.cos(Se),Ce=Math.sin(Se);K.set(0,0,0),K.addScaledVector(V,Ce*ne),K.addScaledVector(R,ye),K.addScaledVector(D,Ce*ee),q.copy(H).addScaledVector(K,a),u.push(q.x,q.y,q.z),c.push(K.x,K.y,K.z),p.push(0,0),W.push(f++)}X.push(W)}let z=X.length-1;for(let U=0;U<z;U++){let W=X[U],re=X[U+1],ae=W.length-1;l.push(W[0],re[1],re[0]);for(let fe=1;fe<=ae;fe++)l.push(W[fe-1],W[fe],re[fe]),l.push(W[fe],re[fe+1],re[fe])}}}};var Pm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters),n=Object.assign(t?.ui??{enabledIndieCorners:!1},r.ui);return{shape:r.shape&&r.shape instanceof Le?r.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:n}}static build(r){let t=r.shape,{width:e,height:n,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=r.parameters,u={x:e*.5,y:n*.5},c={x:-u.x,y:-u.y},p={x:u.x,y:u.y};function f(w,b,_){return b>e&&_>n?Math.min(w*e/b,w*n/_):b>e?w*e/b:_>n?w*n/_:w}let d=[];d[0]=o[0]===0?0:f(o[0],o[0]+o[3],o[0]+o[1]),d[1]=o[1]===0?0:f(o[1],o[1]+o[2],o[1]+o[0]),d[2]=o[2]===0?0:f(o[2],o[2]+o[1],o[2]+o[3]),d[3]=o[3]===0?0:f(o[3],o[3]+o[0],o[3]+o[2]);let h=c.x,m=p.x,g=p.y,v=c.y;t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(m,v)),t.addPoint(t.createPoint(h,v)),t.isClosed=!0;let x=!0;for(let w=0,b=t.points.length;w<b;w++)t.points[w].roundness=d[w],w>0&&d[w]!==d[w-1]&&(x=!1);x&&(t.roundness=d[0]),t.useCubicForRoundedCorners=i!==1,t.update();let S=Ct.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(S,{userData:{...r,type:"RectangleGeometry"}})}};var Mm=require("three"),Em=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},r.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(r){let{width:t=100,height:e=t,depth:n=t,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:u}=r.parameters,c=new Mm.SphereBufferGeometry(.5*t,o,i,a,s,l,u);return c.scale(1,e/t,n/t),Object.assign(c,{userData:{...r,type:"SphereGeometry"}})}};var Dm=require("three"),Bm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},r.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(r){let{width:t=100,height:e=t,widthSegments:n=8,heightSegments:o=8}=r.parameters,i=new Dm.PlaneBufferGeometry(t,e,n,o);return i.scale(1,1,1),Object.assign(i,{userData:{...r,type:"PlaneGeometry"}})}};var Un=require("three"),Fm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},r.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(r){let{width:t,height:e,depth:n,angle:o,cornerRadius:i,cornerSegments:a}=r.parameters,s=new mu(t,e,n,o,i,a);return Object.assign(s,{userData:{...r,type:"BackdropGeometry"}})}},mu=class extends Un.BufferGeometry{constructor(t=1,e=1,n=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],u=[],c=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-c,o),o*=Math.PI/180;let p=[],f=Math.PI/2,d=(q=0,z=0,U=0)=>new Un.Vector3(q,z,U),h=d(),m=d(),[g,v,x]=[e/2,t/2,n/2],S=-v,w=+v,[b,_,T]=[d(S,-g,+x),d(S,-g,-x),d(S,+g,-x)],y=(q,z=!1)=>Math.sin(q-Math.PI/(1+ +z)),I=(q,z=!1)=>Math.cos(q-Math.PI/(1+ +z));T.y=Math.sin(o)*e-g;let A=Math.cos(o)*e-x,O=b.z-c;o<=f?(T.z=Math.min(A,O),T.z==O&&(T.y-=(A-O)/Math.tan(f-o))):_.z=Math.min(_.z-A-x,b.z-c),h.subVectors(b,_),m.subVectors(T,_);let C=Math.min(h.length(),m.length())*i/100,N=C*Math.tan(o/2),P=C/Math.cos(o/2),G=h.clone().normalize().add(m.normalize()).setLength(P).add(_);h.set(0,y(o,!0),I(o,!0)),p.push([T,h.clone()]);let $=(Math.PI-o)/a;for(let q=0;q<=a;q++){let z=f+o+q*$;h.set(0,Math.sin(z)*N,Math.cos(z)*N),h.add(G),m.set(0,y(z),I(z)),p.push([h.clone(),m.clone()])}p.push([b,d(0,1,0)]);let Y=Math.sin($/2)*N*2,ie=p.length-1,j=p[0][0].distanceTo(p[1][0]),H=p[ie-1][0].distanceTo(p[ie][0]),V=j+Y*a+H;p[0].push(1);for(let q=0;q<=a;q++)p[q+1].push(1-(j+q*Y)/V);p[ie].push(0);let[R,D,F]=p[0],B,X,K;for(let q=1;q<p.length;q++)[B,X,K]=p[q],s.push(S,R.y,R.z,S,B.y,B.z,w,R.y,R.z,w,R.y,R.z,S,B.y,B.z,w,B.y,B.z),l.push(0,D.y,D.z,0,X.y,X.z,0,D.y,D.z,0,D.y,D.z,0,X.y,X.z,0,X.y,X.z),u.push(0,F,0,K,1,F,1,F,0,K,1,K),[R,D,F]=[B,X,K];this.setAttribute("position",new Un.Float32BufferAttribute(s,3)),this.setAttribute("normal",new Un.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Un.Float32BufferAttribute(u,2))}};var Rm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters);return{shape:r.shape&&r.shape instanceof Le?r.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(r){let{width:t,height:e,innerRadiusPercent:n,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}=r.parameters,c=r.shape,p=t*.5,f=e*.5,d=0,h=0,m=a*Math.PI/360/o,g=Math.PI/2*3*-1,v=p*n/100,x=f*n/100;if(o===3&&n===50){m=2*Math.PI/o;for(let w=0;w<o;w++){let b=m*w,_=d+Math.sin(b)*p,T=h+Math.cos(b)*f;c.addPoint(c.createPoint(_,T))}}else for(let w=0;w<o;w++){let b=d+Math.cos(g)*p,_=h+Math.sin(g)*f;c.addPoint(c.createPoint(b,_)),g+=m,b=d+Math.cos(g)*v,_=h+Math.sin(g)*x,w<=o,c.addPoint(c.createPoint(b,_)),g+=m}c.isClosed=!0;for(let w=0,b=c.points.length;w<b;w++)c.points[w].roundness=i;c.roundness=i,c.update();let S=Ct.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(S,{userData:{...r,type:"StarGeometry"}})}};var km=require("three"),Gm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},r.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(r){let{width:t,height:e}=r.parameters,n=new km.PlaneBufferGeometry(t,e);return Object.assign(n,{userData:{...r,type:"TextFrameGeometry"}})}};var Um=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},r.parameters),n=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:n,height:o,depth:i})}}static build(r){let{width:t,height:e,depth:n,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=r.parameters,u=rC(t,e,n,t*.5,a,i,0,0,o,s,l);return u.scale(1,e/t,1),Object.assign(u,{userData:{...r,type:"TorusGeometry"}})}};function rC(r,t,e,n,o,i,a,s,l,u,c){return[t,e]=[e,t],a=t/2,o/=2*Math.PI,o==1&&(u=0),new da(!0,r,t,e,n,o,i,a,s,l,u,c)}var Vm=require("three"),zm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},r.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(r){let{width:t,tube:e,tubularSegments:n,radialSegments:o,p:i,q:a}=r.parameters,s=t*.5;s!==e&&(s-=e);let l=new Vm.TorusKnotBufferGeometry(s,e,n,o,i,a);return Object.assign(l,{userData:{...r,type:"TorusKnotGeometry"}})}};var jm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},r.parameters);return{shape:r.shape&&r.shape instanceof Le?r.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(r){let{width:t=100,height:e,cornerRadius:n,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=r.parameters,l=r.shape,u=t*.5,c=e*.5;s?(l.addPoint(l.createPoint(-u,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))),l.isClosed=!0;for(let f=0,d=l.points.length;f<d;f++)l.points[f].roundness=n;l.roundness=n,l.update();let p=Ct.create({shape:l,parameters:{roundness:n,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...r,type:"TriangleGeometry"}})}};var rt=require("three");var nC,Ol=new Promise(r=>{nC=r});var Hm=require("three");function Ll(r,t){return oC(r)}function oC(r){let t={parameters:r,type:r.type};if(r.type==="VectorGeometry"){let n=Le.createFromState(r.shape,r.width,r.height);t.shape=n}else r.type==="NonParametricGeometry"&&(r.data.groups&&r.data.groups.forEach(n=>n.materialIndex=Math.max(n.materialIndex??0,0)),t.geometry=new Hm.BufferGeometryLoader().parse(r));let e;try{e=ga(t)}catch(n){console.error(n)}if(!e){let n=Le.createFromState(ti.defaultData(),100,100);t.shape=n,e=ga(t)}return e}var ge;Ol.then(r=>{ge=r});var Wm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),qm=new Uint32Array([0,1,2,3]),Xm=new Uint8Array([4]),lr=class{static build(r,t,e,n,o){let i,a,s,l=r?.phongAngle??t?.phongAngle??35;if(n===!1&&(l=-1),r.positionWASM!==void 0){e&&e!==0&&(ge.free_bvh(e),ge.free_subdivision_surface(e));try{i=lr.allocate(r,o)}catch(u){console.error(u,r),i=lr.allocate({positionWASM:Wm,indexWASM:qm,verticesPerFaceWASM:Xm},o)}ge.set_destination_refinement_level(i,0),a=lr.buildLevel(i,!0,l)}else i=e,r.phongAngle!==void 0&&(a=lr.buildLevel(i,!0,l));return r.subdivisions!==void 0&&(ge.set_destination_refinement_level(i,r.subdivisions),r.subdivisions>0?s=lr.buildLevel(i,!1,l):s=null),{subdivPointer:i,originalGeometry:a,subdividedGeometry:s}}static primitiveToQuads(r,t){r.widthSegments>16&&(r.widthSegments=16),r.heightSegments>16&&(r.heightSegments=16),r.depthSegments>16&&(r.depthSegments=16),r.radialSegments>16&&(r.radialSegments=16),r.type==="DodecahedronGeometry"&&(r.detail=0);let e=r.shape!==void 0?t.geometry:Ll(r),n,o,i,a;({positions:n,triIndices:a}=xu(e.getAttribute("position"),e.getIndex()));let s;if(r.type==="CylinderGeometry"&&r.cornerRadius===0&&r.hollow===0&&r.openEnded===!1){let l=r.radialSegments*r.heightSegments*3*2,u=l+r.radialSegments*3;s=[l,u]}return{indices:o,verticesPerFace:i}=bu(n,a,e,s),{positions:n,indices:o,verticesPerFace:i}}static allocate(r,t){let e,n,o,i=[],a=[];r.positionWASM&&r.positionWASM.length>0?(e=r.positionWASM,n=r.indexWASM,o=r.verticesPerFaceWASM):(e=Wm,n=qm,o=Xm);let s=e.length,l=n.length,u=o.length,c=e.length+i.length+a.length,p=n.length+o.length,f=c*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,h=p*Uint32Array.BYTES_PER_ELEMENT,m=ge._malloc(f),g=new Float32Array(ge.HEAPF32.buffer,m,c),v=new Uint32Array(ge.HEAPU32.buffer,m+d,p);g.set(e,0),g.set(i,e.length),g.set(a,e.length+i.length),v.set(n,0),v.set(o,n.length);let x;r?.scaleBaked?.some(w=>w!==1)&&(x=new rt.Matrix4().makeScale(...r.scaleBaked)),t&&(x?x.premultiply(t):x=t);let S=x?ge.alloc_subdivision_surface2(m,s,m+d,l,m+d+n.length*Uint32Array.BYTES_PER_ELEMENT,u,x.elements):ge.alloc_subdivision_surface(m,s,m+d,l,m+d+n.length*Uint32Array.BYTES_PER_ELEMENT,u);return ge._free(m),S}static buildLevel(r,t,e,n,o){let i=o?ge.get_mesh_data2(r,t?ge.Level.CONTROL:ge.Level.REFINED,e,o.elements):ge.get_mesh_data(r,t?ge.Level.CONTROL:ge.Level.REFINED,e),a=8,s=ge.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(4,4+4),u=0,c=ge.HEAPU32[s[u]>>2],p=ge.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let f=ge.HEAPU32[s[u]>>2],d=ge.HEAPF32.subarray(f>>2,(f>>2)+l[u]);u++;let h=ge.HEAPU32[s[u]>>2],m=ge.HEAPU32.subarray(h>>2,(h>>2)+l[u]);u++;let g=ge.HEAPU32[s[u]>>2],v=ge.HEAPU32.subarray(g>>2,(g>>2)+l[u]);if(u++,n===void 0){let x=new rt.BufferGeometry;if(x.setIndex(new rt.Uint32BufferAttribute(v,1)),x.setAttribute("position",new rt.Float32BufferAttribute(p,3)),x.setAttribute("normal",new rt.Float32BufferAttribute(d,3)),t){x.setAttribute("faceMap",new rt.Uint32BufferAttribute(m,1));let S=new Float32Array(d.length/3*4).fill(0);x.setAttribute("color",new rt.BufferAttribute(S,4))}return ge.free_mesh_data(i),x.userData.type="SubdivGeometry",x}n.getAttribute("position").copyArray(p),n.getAttribute("normal").copyArray(d),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,ge.free_mesh_data(i)}static buildControlCageWireframe(r,t,e){let n=ge.get_wireframe_data_for_base_level(r),o=4,i=ge.HEAPU32.subarray(n>>2,(n>>2)+o),a=i.subarray(2,2+2),s=0,l=ge.HEAPU32[i[s]>>2],u=ge.HEAPF32.subarray(l>>2,(l>>2)+a[s]);s++;let c=ge.HEAPU32[i[s]>>2],p=ge.HEAPU32.subarray(c>>2,(c>>2)+a[s]);if(t===void 0){let f=new rt.BufferGeometry;f.setAttribute("position",new rt.Float32BufferAttribute(u,3));let d=new Float32Array(u.length);for(let h=0,m=u.length;h<m;)d[h++]=e.r,d[h++]=e.g,d[h++]=e.b;return f.setAttribute("color",new rt.BufferAttribute(d,3)),f.setIndex(new rt.Uint32BufferAttribute(p,1)),ge.free_wireframe_data_for_base_level(n),f}t.getAttribute("position").copyArray(u),t.attributes.position.needsUpdate=!0,ge.free_wireframe_data_for_base_level(n)}static updateCollabMesh(r,t,e){let n=t===0;n||ge.set_destination_refinement_level(r,t);let o=e?ge.get_topological_data2(r,n?ge.Level.CONTROL:ge.Level.REFINED,e.elements):ge.get_topological_data(r,n?ge.Level.CONTROL:ge.Level.REFINED),i=6,a=ge.HEAPU32.subarray(o>>2,(o>>2)+i),s=a.subarray(3,3+3),l=0,u=ge.HEAPU32[a[l]>>2],c=new Float32Array(ge.HEAPF32.subarray(u>>2,(u>>2)+s[l]));l++;let p=ge.HEAPU32[a[l]>>2],f=new Uint32Array(ge.HEAPU32.subarray(p>>2,(p>>2)+s[l]));l++;let d=ge.HEAPU32[a[l]>>2],h=new Uint8Array(ge.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return ge.free_topological_data(o),{positions:c,indices:f,verticesPerFace:h}}};var Ym=["getX","getY","getZ"];function xu(r,t){let e={},n=t?t.count:r.count,o=0,i=[],a=[],s=1e4;for(let u=0;u<n;u++){let c=t?t.getX(u):u,p="";for(let f=0;f<3;f++)p+=`${~~(r[Ym[f]](c)*s)},`;if(p in e)i.push(e[p]);else{for(let f=0;f<3;f++)a.push(r[Ym[f]](c));e[p]=o,i.push(o),o++}}let l=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||l.push(i[u],i[u+1],i[u+2]);return{positions:a,triIndices:l}}var Nl=new rt.Vector3,gu=new rt.Vector3,yu=new rt.Vector3,vu=new rt.Vector3;function bu(r,t,e,n){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let a=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let u=0;u<a.length;u+=2)s+=(a[u]-a[(u===0?a.length:u)-2])*(a[u+1]+a[(u===0?a.length:u)-1]);r.length=0;let l=0;if(s<0)for(let u=0;u<a.length;u+=2)r.push(a[u],a[u+1],0),o.push(l++);else for(let u=a.length-2;u>=0;u-=2)r.push(a[u],a[u+1],0),o.push(l++);return i.push(l),{indices:o,verticesPerFace:i}}for(let a=0,s=e.capStartIndex??t.length;a<s;)if(t[a+1]===t[a+3]&&t[a+2]===t[a+5]||t[a+0]===t[a+3]&&t[a+2]===t[a+4]){Nl.set(r[t[a]*3],r[t[a]*3+1],r[t[a]*3+2]),gu.set(r[t[a+1]*3],r[t[a+1]*3+1],r[t[a+1]*3+2]),yu.set(r[t[a+4]*3],r[t[a+4]*3+1],r[t[a+4]*3+2]),vu.set(r[t[a+5]*3],r[t[a+5]*3+1],r[t[a+5]*3+2]),gu.sub(Nl).normalize(),yu.sub(Nl).normalize(),vu.sub(Nl).normalize();let l=gu.cross(yu).dot(vu);Math.abs(l)>.005||n&&n.some((u,c)=>c%2===1?!1:a>=n[c]&&a<n[c+1])?(o.push(t[a],t[a+1],t[a+2]),i.push(3),a+=3):(o.push(t[a],t[a+1],t[a+4],t[a+5]),i.push(4),a+=6)}else o.push(t[a],t[a+1],t[a+2]),i.push(3),a+=3;if(e.capStartIndex!==void 0){let a=[],s=[],l=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let c=0,p=0;c<r.length;c+=3,p++)r[c+2]===0&&(a.push(p),l++),r[c+2]===u&&s.push(p);if(e.userData.parameters.extrudeBevelSize===0){let c=s[0];s[0]=s[1],s[1]=c}a.reverse(),o.push(...a,...s),i.push(l,l)}return{indices:o,verticesPerFace:i}}var yr={};Dp(yr,{calcBoolean:()=>lC,calcBooleanTopological:()=>sC,freeMeshSet:()=>pC,getMeshSet:()=>cC,transformMeshSet:()=>uC});var iC,$m=new Promise(r=>{iC=r});var ya=require("three");var Te,gi;$m.then(r=>Te=r);function aC(r,t,e){let n,{positions:o,triIndices:i}=xu(r.getAttribute("position"),r.getIndex()),a;if(t&&e){let{indices:s,verticesPerFace:l}=bu(o,i,r);a=l.length,n=[];for(let u=0,c=0;u<a;u++){n.push(l[u]);for(let p=0;p<l[u];p++)n.push(s[c++])}}else{let s=i.length;n=Array(s+s/3),a=0;for(let l=0,u=0;u<n.length;)n[u++]=3,a++,n[u++]=i[l++],n[u++]=i[l++],n[u++]=i[l++]}return{positions:o,faceIndices:n,nFaces:a}}function Km(r){let t=r.length,e=t*Uint32Array.BYTES_PER_ELEMENT,n=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(r[0])?e:n,i=Te._malloc(o);return(Number.isInteger(r[0])?new Uint32Array(Te.HEAPU32.buffer,i,t):new Float32Array(Te.HEAPF32.buffer,i,t)).set(r,0),i}function Zm(r){switch(r){case 0:return Te.OP.UNION;case 1:return Te.OP.INTERSECTION;case 2:return Te.OP.A_MINUS_B;case 3:return Te.OP.B_MINUS_A;case 4:return Te.OP.SYMMETRIC_DIFFERENCE;case 5:return Te.OP.ALL;default:throw new Error("Unknown boolean operation "+r)}}function sC(r,t){gi===void 0&&(gi=Te.init_csg());let e=Km(r),n=Te.csg_calc_topological(gi,e,r.length,Zm(t));Te._free(e);let o=6,i=Te.HEAPU32.subarray(n>>2,(n>>2)+o),a=i.subarray(3,3+3),s=0,l=Te.HEAPU32[i[s]>>2],u=new Float32Array(Te.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=Te.HEAPU32[i[s]>>2],p=new Uint32Array(Te.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let f=Te.HEAPU32[i[s]>>2],d=new Uint8Array(Te.HEAPU32.subarray(f>>2,(f>>2)+a[s]));return Te.free_mesh_data(n),{positions:u,indices:p,verticesPerFace:d}}function lC(r,t,e,n){gi===void 0&&(gi=Te.init_csg());let o=Km(r),i=Te.csg_calc(gi,o,r.length,n,Zm(t));Te._free(o);let a=5,s=Te.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),u=0,c=Te.HEAPU32[s[u]>>2],p=Te.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let f=Te.HEAPU32[s[u]>>2],d=Te.HEAPF32.subarray(f>>2,(f>>2)+l[u]);u++;let h=l[u];e.setAttribute("position",new ya.Float32BufferAttribute(p,3)),e.setAttribute("normal",new ya.Float32BufferAttribute(d,3));let m=Te.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new ya.Sphere),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Te.free_mesh_data(i),h}function cC(r,t,e){if(Te===void 0)return-1;let n,o,i;if(t&&r.userData.positions!==void 0){let g=r.userData;i=g.verticesPerFace.length,n=g.positions,o=Array(g.verticesPerFace.reduce((v,x)=>v+x,0)+i);for(let v=0,x=0,S=0;v<g.verticesPerFace.length;v++){o[S++]=g.verticesPerFace[v];for(let w=0;w<g.verticesPerFace[v];w++)o[S++]=g.indices[x++]}}else({positions:n,faceIndices:o,nFaces:i}=aC(r,t,e));let a=n.length,s=o.length,l=n.length,u=o.length,c=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,p=l*Float32Array.BYTES_PER_ELEMENT,f=u*Uint32Array.BYTES_PER_ELEMENT,d=Te._malloc(c),h=new Float32Array(Te.HEAPF32.buffer,d,l),m=new Uint32Array(Te.HEAPU32.buffer,d+p,u);return h.set(n,0),m.set(o,0),Te.get_csg_mesh(d,a,d+p,s,i)}function uC(r,t){Te.transform_csg_mesh(r,t.elements)}function pC(r){Te.free_csg_mesh(r)}var Su={ConeGeometry:fm,CubeGeometry:dm,CylinderGeometry:um,DodecahedronGeometry:mm,EllipseGeometry:bm,HelixGeometry:Cm,IcosahedronGeometry:_m,LatheGeometry:Im,NonParametricGeometry:Om,PolygonGeometry:Lm,PyramidGeometry:Nm,RectangleGeometry:Pm,SphereGeometry:Em,PlaneGeometry:Bm,BackdropGeometry:Fm,StarGeometry:Rm,TextFrameGeometry:Gm,TorusGeometry:Um,TorusKnotGeometry:zm,TriangleGeometry:jm,VectorGeometry:Ct},ga=r=>Su[r.type].create(r);var Cu=require("three");var Ml=require("three");var wu=require("three");function yt(r,t){return t.color(r)}var Tu=r=>"isEntity"in r,zr=r=>"isAbstractMesh"in r,jr=r=>r!==null&&r.objectType==="BooleanObject",Qm=r=>r.objectType==="CombinedCamera";var Pl=r=>"objectHelper"in r;function fC(r,t){let e=!1;t.position&&(r.position.fromArray(t.position),e=!0),t.rotation&&(r.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,r.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in r&&(e=!0,r.hiddenMatrix.fromArray(t.hiddenMatrix??Nn.identity)),e&&(r.updateMatrix(),jr(r.parent)&&zr(r)&&r.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&r.updateWorldMatrix(!1,!0),r.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(r.isUpVectorFlipped=t.isUpVectorFlipped),r.updateUp())}function dC(r,t){fC(r,t),t.name!==void 0&&(r.name=t.name),t.visible!==void 0&&(r.visible=t.visible)}function Jm(r,t,e){dC(r,t),t.color!==void 0&&(r.color=yt(t.color,e)),t.intensity!==void 0&&(r.intensity=t.intensity),t.shadows!==void 0&&!(r instanceof wu.HemisphereLight)&&(r.castShadow=t.shadows),r.shadow&&!(r instanceof wu.HemisphereLight)&&t.depth!==void 0&&(r.shadow.camera.far=t.depth,r.shadow.needsUpdate=!0)}function eg(r,t){r.shadow.camera.right=t/2,r.shadow.camera.left=-t/2,r.shadow.camera.top=t/2,r.shadow.camera.bottom=-t/2,r.shadow.needsUpdate=!0}var El=r=>class extends r{hasEntityChild(){return this.children.some(e=>Tu(e))}isDescendantOf(e){e instanceof Ml.Object3D&&(e=e.uuid);let n=this;for(;n.parent;){if(n.parent.uuid===e)return!0;n=n.parent}return!1}attach(e,n){this.updateWorldMatrix(!0,!1);let o=new Ml.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Tu(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),n!==void 0&&(this.children.pop(),this.children.splice(n,0,e)),this}copy(e,n=!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)),n===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};var Ze=require("three");var go=new Ze.Box3,vr=new Ze.Vector3,cr=new Ze.Vector3,yi=new Ze.Matrix4,rg=[new Ze.Vector3(-1,1,1),new Ze.Vector3(-1,-1,1),new Ze.Vector3(1,-1,1),new Ze.Vector3(1,1,1),new Ze.Vector3(-1,1,-1),new Ze.Vector3(-1,-1,-1),new Ze.Vector3(1,-1,-1),new Ze.Vector3(1,1,-1)],hC=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],mC=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function gC(r,t,e=0,n=t.count){let o=1/0,i=1/0,a=1/0,s=-1/0,l=-1/0,u=-1/0;for(let c=e;c<n;c++){let p=t.getX(c),f=t.getY(c),d=t.getZ(c);p<o&&(o=p),f<i&&(i=f),d<a&&(a=d),p>s&&(s=p),f>l&&(l=f),d>u&&(u=d)}return r.min.set(o,i,a),r.max.set(s,l,u),r}var tg=(r,t,e)=>{if(r.objectType==="TextFrame"){let o=r.data.geometry;vr.set(0,0,o.depth*.5),r.forceComputeSize?go.getSize(cr).multiplyScalar(.5):cr.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}else if(zr(r)){let n=r.geometry.userData.parameters,o=r.geometry.getAttribute("position");r.geometry.userData.type==="SubdivGeometry"?vr.copy(r.originalGeometry.boundingSphere.center):o!==void 0&&(gC(go,o,r.geometry.drawRange.start,r.geometry.drawRange.count<1/0?r.geometry.drawRange.count:o.count),go.getCenter(vr)),r.forceComputeSize?go.getSize(cr).multiplyScalar(.5):cr.set(n.width,n.height,n.depth??0).multiplyScalar(.5)}else if(Pl(r)&&r.objectHelper.visible){let n=r.geometryHelper.getAttribute("position");go.setFromArray(n.array),go.getCenter(vr),go.getSize(cr).multiplyScalar(.5)}else vr.setScalar(0),cr.setScalar(0);yi.copy(t).multiply(r.matrixWorld),cr.x===0&&cr.y===0&&cr.z===0?e.push(new Ze.Vector3(vr.x,vr.y,vr.z).applyMatrix4(yi)):rg.forEach(n=>{e.push(n.clone().multiply(cr).add(vr).applyMatrix4(yi))})},va=class extends Ze.Box3{constructor(){super(...arguments);this.matrix=new Ze.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(n=>n.clone()),this.faces=e.faces.map(n=>n.clone()),this.edges=e.edges.map(n=>n.clone()),this.centerEdges=e.centerEdges.map(n=>n.clone()),this}setFromObjectSize(e,n=!1){e.updateWorldMatrix(!1,n),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ze.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,n)}expandByObjectSize(e,n,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{a.visible&&tg(a,n,i)}):tg(e,n,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(yi.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(cr).multiplyScalar(.5),this.getCenter(vr),yi.copy(this.matrix).setPosition(vr),this.vertices=rg.map(e=>e.clone().multiply(cr).applyMatrix4(yi))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=hC.map(([e,n])=>new Ze.Line3(this.vertices[e],this.vertices[n])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ze.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=mC.map(([e,n])=>this.vertices[e].clone().add(this.vertices[n]).multiplyScalar(.5))}};var Hr=r=>"isEntity"in r,ng=r=>"isAbstractMesh"in r,ur=r=>class extends El(r){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Cu.Matrix4;this._singleBBox=new va;this._recursiveBBox=new va;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(n=>{Hr(n)&&(n.singleBBoxNeedsUpdate=!0,n.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(n=>{n.singleBBoxNeedsUpdate=!0,n.recursiveBBoxNeedsUpdate=!0})}traverseEntity(n){n(this);for(let o of this.children)Hr(o)&&o.traverseEntity(n)}traverseVisibleEntity(n){n(this);for(let o of this.children)Hr(o)&&o.visible&&o.traverseVisibleEntity(n)}updateMatrixWorld(n){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||n)&&(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,n=!0);for(let o of this.children)o.updateMatrixWorld(n)}updateWorldMatrix(n,o){let i=this.parent;if(n&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}clone(n){return new this.constructor().copy(this,n)}copy(n,o=!0){if(super.copy(n,!1),this.raycastLock=n.raycastLock,this.scaleLock=n.scaleLock,this.hiddenMatrix.copy(n.hiddenMatrix),o===!0)for(let i of n.children)Hr(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let n=new Cu.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),n.copy(this.matrixWorld).invert(),n.multiply(o);for(let i of this.children)Hr(i)&&i.hiddenMatrix.premultiply(n)}toObjectTransformState(n=[]){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 $o(o,n)}fromObjectTransformState(n){return n.position&&this.position.fromArray(n.position),n.rotation&&this.rotation.fromArray(n.rotation),n.scale&&this.scale.fromArray(n.scale),n.hiddenMatrix&&this.hiddenMatrix.fromArray(n.hiddenMatrix),this.updateMatrix(),this}toState(n=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(n)};return $o(o,n)}fromState(n,o){return n.name&&(this.name=n.name),n.raycastLock!==void 0&&(this.raycastLock=n.raycastLock),n.type!=="OrthographicCamera"&&n.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),n.visible!==void 0&&(this.visible=n.visible),this.fromObjectTransformState(n),this}};var zl=require("three");var br=require("three");var xa=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var og=require("three"),vt=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=og.MathUtils.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,n){return n=n??{},this.analyze(t,n),this.flow(t,e,n)}flow(t,e,n){n=n??{},t.addFlow(n.slot,n.cache,n.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,n){e=e??this.getType(t,e);let o=t.getNodeData(n??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,n)}updateFrame(t){}generateReadonly(t,e,n,o,i,a){return""}generate(t,e,n,o,i){return""}parse(t,e,n,o){}appendDepsNode(t,e,n){e.deps=(e.deps||0)+1;let o=t.getTypeLength(n);(o>(e.outputMax||0)||this.getType(t,n))&&(e.outputMax=o,e.output=n)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,n;for(e in this)n=this[e],n instanceof vt&&(t+='"'+e+'":'+n.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],n=this[e],t+='"'+e+'":"'+String(n)+'",';return t+='"id":"'+this.uuid+'"}',t}};var Au=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,n){n=n!==void 0?n:!0,this.keywords[t]={callback:e,cache:n}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},ut=new Au;var _u=require("three");var ig=require("three"),he=class extends vt{constructor(e,n){super(e);this.scope="";n=n??{},this.shared=n.shared!==void 0?n.shared:!0,this.unique=n.unique!==void 0?n.unique:!1}build(e,n,o,i){if(n=n??this.getType(e),this.getShared(e,n)){let a=this.getUnique(e,n);a&&this.uuid===void 0&&(this.uuid=ig.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,n),this.generate(e,n,o)):super.build(e,n,o);if(a)return s.name=s.name||super.build(e,n,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,n,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,l,n);{u=super.generate(e,n,o,s.output,i);let c=this.generate(e,l,o);return e.addNodeCode(u+" = "+c+";"),e.format(u,l,n)}}return super.build(e,n,o)}getShared(e,n){return n!=="sampler2D"&&n!=="samplerCube"&&this.shared}getUnique(e,n){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let n=this.uuid;return typeof this.scope=="string"&&(n=this.scope+"-"+n),n}getTemp(e,n){n=n||this.uuid;let o=e.getVars()[n];return o?o.name:void 0}generate(e,n,o,i,a){return this.getShared(e,n)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var Ge=class extends he{constructor(e,n){n=n??{},n.shared=n.shared!==void 0?n.shared:!1;super(e,n);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,n,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,n,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,n)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,n))}};var xt=class extends Ge{constructor(e=0,n){super("v2");this.nodeType="Vector2";this.value=e instanceof _u.Vector2?e:new _u.Vector2(e,n)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,n,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,n)}};var Iu=require("three");var At=class extends Ge{constructor(e=0,n,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Iu.Vector3?e:new Iu.Vector3(e,n,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,n,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,n)}};var ag=require("three"),pt=class extends ag.Color{constructor(e,n,o,i){super(e,n,o);this.isColorA=!0;this.a=i}setRGBA(e,n,o,i){super.setRGB(e,n,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}};var pr=class extends Ge{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof pt?e:new pt(e.r,e.g,e.b,e.a)}generateReadonly(e,n,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,n)}};var yC=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,sg=/[a-z_0-9]+/gi,Z=class extends he{constructor(e,n,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,n,o,i)}getShared(e,n){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let n=this.inputs.length;for(;n--;)if(this.inputs[n].name===e)return this.inputs[n]}}getIncludeByName(e){if(this.includes){let n=this.includes.length;for(;n--;)if(this.includes[n].name===e)return this.includes[n]}}generate(e,n,o,i,a){let s,l=0,u=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let c=[];for(;s=sg.exec(this.src);)c.push(s);for(let p=0;p<c.length;p++){let f=c[p],d=f[0],h=this.isMethod?!this.getInputByName(d):!0,m=d;if(this.keywords[d]||this.useKeywords&&h&&ut.containsKeyword(d)){let g=this.keywords[d];if(!g){let v=ut.getKeywordData(d);v.cache&&(g=e.keywords[d]),g=g||ut.getKeyword(d,e),v.cache&&(e.keywords[d]=g)}m=g.build(e)}d!==m&&u[f.index+l-1]!=="."&&(u=u.substring(0,f.index+l)+m+u.substring(f.index+d.length+l),l+=m.length-d.length),this.getIncludeByName(m)===void 0&&ut.contains(m)&&e.include(ut.get(m))}return n==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),n)}parse(e,n,o,i){if(this.src=e||"",this.includes=n??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=yC.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(sg);if(s){let l=0;for(;l<s.length;){let u=s[l++],c;u==="in"||u==="out"||u==="inout"?c=s[l++]:(c=u,u="");let p=s[l++];this.inputs.push({name:p,type:c,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var vC=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Ou=class extends he{constructor(e="",n){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Ou.PI,void 0,void 0,void 0,n)}getType(e){return e.getTypeByFormat(this.type)}parse(e,n,o,i,a){this.src=e||"";let s,l,u="",c=vC.exec(e);this.useDefine=a??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],s=c[2],u=c[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=u}build(e,n){if(n==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),n)}generate(e,n,o,i,a){return e.format(this.name,this.getType(e),n)}},Oe=Ou;Oe.PI="PI",Oe.PI2="PI2",Oe.RECIPROCAL_PI="RECIPROCAL_PI",Oe.RECIPROCAL_PI2="RECIPROCAL_PI2",Oe.LOG2="LOG2",Oe.EPSILON="EPSILON";var xC=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
+
)*?)}`,"gim"),bC=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),vi=class extends he{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let n=this.inputs.length;for(;n--;)if(this.inputs[n].name===e)return this.inputs[n]}generate(e,n,o,i,a){return n==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),n)}parse(e=""){this.src=e,this.inputs=[];let n=xC.exec(e);if(n){let o=n[2],i;for(;i=bC.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=n[1]}else this.name="";this.type=this.name}};var xi=class extends he{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,n){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),n)}};ut.addKeyword("uv",function(){return new xi});ut.addKeyword("uv2",function(){return new xi(1)});var Dl=require("three");var yo=class extends he{constructor(e,n){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=n??yo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case Dl.LinearEncoding:return["Linear"];case Dl.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,n){let o=this.input.build(e,"v4"),i=this.getType(e),a=yo.Nodes[this.method],s=e.include(a);if(s===yo.LINEAR_TO_LINEAR)return e.format(o,i,n);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,n)}else return e.format(s+"( "+o+" )",i,n)}fromEncoding(e){let n=yo.getEncodingComponents(e);this.method="LinearTo"+n[0],this.factor=n[1]}fromDecoding(e){let n=yo.getEncodingComponents(e);this.method=n[0]+"ToLinear",this.factor=n[1]}},Et=yo;Et.Nodes={LinearToLinear:new Z(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
3
|
+
`)),sRGBToLinear:new Z(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
4
|
+
`)),LinearTosRGB:new Z(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
5
|
+
`))},Et.LINEAR_TO_LINEAR="LinearToLinear",Et.SRGB_TO_LINEAR="sRGBToLinear",Et.LINEAR_TO_SRGB="LinearTosRGB";var Pe=class extends Z{constructor(e="",n,o,i,a){super(e,a,i,o,n);this.nodeType="Expression"}};var lg=require("three"),jt=class extends Ge{constructor(e=new lg.Texture,n,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=n??new xi,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,n){return super.generate(e,n,this.value.uuid,"t")}generate(e,n){if(n==="sampler2D")return this.getTexture(e,n);let o=this.getTexture(e,n),i=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new Et(new Pe("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,c),e.removeContext(),e.format(l,c,n)}};var J=class extends Ge{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,n,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,n)}};var ba=class extends he{constructor(e,n){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=n??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,n,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,n)+"( ",u=[];if(s.inputs){for(let c=0;c<s.inputs.length;c++){let p=s.inputs[c],f=this.inputs[c]||this.inputs[p.name];u.push(f.build(e,e.getTypeByFormat(p.type)))}l+=u.join(", ")+" )"}return e.format(l,i,n)}};var Lu=class extends he{constructor(e,n,o=Lu.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=n,this.op=o}getType(e){let n=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(n)?"v4":e.getTypeLength(o)>e.getTypeLength(n)?o:n}generate(e,n){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,n)}},Ht=Lu;Ht.ADD="+",Ht.SUB="-",Ht.MUL="*",Ht.DIV="/";var Fe=class extends he{constructor(e,n=Fe.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof n!="string"?this.b=n:i=n,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Fe.MIX:case Fe.CLAMP:case Fe.REFRACT:case Fe.SMOOTHSTEP:case Fe.FACEFORWARD:return 3;case Fe.MIN:case Fe.MAX:case Fe.MOD:case Fe.STEP:case Fe.REFLECT:case Fe.DISTANCE:case Fe.DOT:case Fe.CROSS:case Fe.POW:return 2;default:return 1}}getInputType(e){let n=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return n>o&&n>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Fe.LENGTH:case Fe.DISTANCE:case Fe.DOT:return"f";case Fe.CROSS:return"v3"}return this.getInputType(e)}generate(e,n){let o,i,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,c=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Fe.NEGATE:return e.format("( -"+this.a.build(e,c)+" )",c,n);case Fe.INVERT:return e.format("( 1.0 - "+this.a.build(e,c)+" )",c,n);case Fe.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Fe.STEP:o=this.a.build(e,s===1?"f":c),i=this.b.build(e,c);break;case Fe.MIN:case Fe.MAX:case Fe.MOD:o=this.a.build(e,c),i=this.b.build(e,l===1?"f":c);break;case Fe.REFRACT:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,"f");break;case Fe.MIX:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,u===1?"f":c);break;default:o=this.a.build(e,c),this.b&&(i=this.b.build(e,c)),this.c&&(a=this.c.build(e,c));break}let f=[];f.push(o),i&&f.push(i),a&&f.push(a);let d=this.getNumInputs(e);if(f.length!==d)throw Error(`Arguments not match used in "${this.method}". Require ${d}, currently ${f.length}.`);return e.format(this.method+"( "+f.join(", ")+" )",p,n)}},ve=Fe;ve.RAD="radians",ve.DEG="degrees",ve.EXP="exp",ve.EXP2="exp2",ve.LOG="log",ve.LOG2="log2",ve.SQRT="sqrt",ve.INV_SQRT="inversesqrt",ve.FLOOR="floor",ve.CEIL="ceil",ve.NORMALIZE="normalize",ve.FRACT="fract",ve.SATURATE="saturate",ve.SIN="sin",ve.COS="cos",ve.TAN="tan",ve.ASIN="asin",ve.ACOS="acos",ve.ARCTAN="atan",ve.ABS="abs",ve.SIGN="sign",ve.LENGTH="length",ve.NEGATE="negate",ve.INVERT="invert",ve.MIN="min",ve.MAX="max",ve.MOD="mod",ve.STEP="step",ve.REFLECT="reflect",ve.DISTANCE="distance",ve.DOT="dot",ve.CROSS="cross",ve.POW="pow",ve.MIX="mix",ve.CLAMP="clamp",ve.REFRACT="refract",ve.SMOOTHSTEP="smoothstep",ve.FACEFORWARD="faceforward";var bi=class extends he{constructor(e,n,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=n,this.bias=o}bilinearCubeUV(e,n,o,i){let a=new ba(bi.Nodes.bilinearCubeUV,[n,o,i]);this.colorSpaceTL=this.colorSpaceTL??new Et(new Pe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Et(new Pe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Et(new Pe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Et(new Pe("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(a.build(e)+".br");let s={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(s),this.colorSpaceTLExp=new Pe(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Pe(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Pe(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Pe(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Pe("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,n){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new ba(bi.Nodes.roughnessToMip,[i]),s=new ve(a,bi.Nodes.m0,bi.Nodes.cubeUV_maxMipLevel,ve.CLAMP),l=new ve(s,ve.FLOOR),u=new ve(s,ve.FRACT),c=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Ht(l,new J(1).setReadonly(!0),Ht.ADD)),f=new ve(c,p,u,ve.MIX);return e.format(f.build(e),"v4",n)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),n)}},Si=bi;Si.Nodes=function(){let e=new vi(`struct TextureCubeUVData {
|
|
6
6
|
vec4 tl;
|
|
7
7
|
vec4 tr;
|
|
8
8
|
vec4 br;
|
|
9
9
|
vec4 bl;
|
|
10
10
|
vec2 f;
|
|
11
|
-
}`),
|
|
11
|
+
}`),n=new Oe("float cubeUV_maxMipLevel 8.0",!0),o=new Oe("float cubeUV_minMipLevel 4.0",!0),i=new Oe("float cubeUV_maxTileSize 256.0",!0),a=new Oe("float cubeUV_minTileSize 16.0",!0),s=new Z(`float getFace(vec3 direction) {
|
|
12
12
|
vec3 absDirection = abs(direction);
|
|
13
13
|
float face = -1.0;
|
|
14
14
|
if (absDirection.x > absDirection.z) {
|
|
@@ -23,7 +23,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
23
23
|
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
24
24
|
}
|
|
25
25
|
return face;
|
|
26
|
-
}`);
|
|
26
|
+
}`);s.useKeywords=!1;let l=new Z(`vec2 getUV(vec3 direction, float face) {
|
|
27
27
|
vec2 uv;
|
|
28
28
|
if (face == 0.0) {
|
|
29
29
|
uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
|
|
@@ -39,7 +39,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
39
39
|
uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
|
|
40
40
|
}
|
|
41
41
|
return 0.5 * (uv + 1.0);
|
|
42
|
-
}`);
|
|
42
|
+
}`);l.useKeywords=!1;let u=new Z(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
|
|
43
43
|
float face = getFace(direction);
|
|
44
44
|
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
|
|
45
45
|
mipInt = max(mipInt, cubeUV_minMipLevel);
|
|
@@ -67,7 +67,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
67
67
|
uv.x -= texelSize;
|
|
68
68
|
vec4 bl = texture2D(envMap, uv);
|
|
69
69
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
70
|
-
}`,[e,
|
|
70
|
+
}`,[e,s,l,n,o,i,a]);u.useKeywords=!1;let c=new Oe("float r0 1.0",!0),p=new Oe("float v0 0.339",!0),f=new Oe("float m0 -2.0",!0),d=new Oe("float r1 0.8",!0),h=new Oe("float v1 0.276",!0),m=new Oe("float m1 -1.0",!0),g=new Oe("float r4 0.4",!0),v=new Oe("float v4 0.046",!0),x=new Oe("float m4 2.0",!0),S=new Oe("float r5 0.305",!0),w=new Oe("float v5 0.016",!0),b=new Oe("float m5 3.0",!0),_=new Oe("float r6 0.21",!0),T=new Oe("float v6 0.0038",!0),y=new Oe("float m6 4.0",!0),I=[c,p,f,d,h,m,g,v,x,S,w,b,_,T,y],A=new Z(`float roughnessToMip(float roughness) {
|
|
71
71
|
float mip = 0.0;
|
|
72
72
|
if (roughness >= r1) {
|
|
73
73
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -81,8 +81,8 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
81
81
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
82
82
|
}
|
|
83
83
|
return mip;
|
|
84
|
-
}`,
|
|
85
|
-
`);return
|
|
84
|
+
}`,I);return{bilinearCubeUV:u,roughnessToMip:A,m0:f,cubeUV_maxMipLevel:n}}();var vo=class extends he{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??vo.VIEW}getShared(){return this.scope===vo.WORLD}build(e,n,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,n,o,i):super.build(e,n,o)}generate(e,n,o,i,a){let s;switch(this.scope){case vo.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case vo.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case vo.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),n)}},bt=vo;bt.LOCAL="local",bt.WORLD="world",bt.VIEW="view",bt.NORMAL="normal";ut.addKeyword("viewNormal",function(){return new bt(bt.VIEW)});ut.addKeyword("localNormal",function(){return new bt(bt.NORMAL)});ut.addKeyword("worldNormal",function(){return new bt(bt.WORLD)});var Wr=class extends he{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Wr.LOCAL}getType(){switch(this.scope){case Wr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Wr.LOCAL:case Wr.WORLD:return!1}return!0}generate(e,n,o,i,a){let s;switch(this.scope){case Wr.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case Wr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case Wr.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Wr.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),n)}},Wt=Wr;Wt.LOCAL="local",Wt.WORLD="world",Wt.VIEW="view",Wt.PROJECTION="projection";ut.addKeyword("position",function(){return new Wt});ut.addKeyword("worldPosition",function(){return new Wt(Wt.WORLD)});ut.addKeyword("viewPosition",function(){return new Wt(Wt.VIEW)});var xr=class extends he{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??xr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case xr.SPHERE:return"v2"}return this.type}generate(e,n){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case xr.VECTOR:{let a=new bt(bt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),u=new Wt(Wt.VIEW).build(e,"v3"),c=s?s.build(e,"f"):void 0,p=`reflect( -normalize( ${u} ), ${l} )`;c&&(p=`normalize( mix( ${p}, ${l}, ${c} * ${c} ) )`);let f=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${f};`),i="reflectVec"):i=f;break}case xr.CUBE:{let a=new xr(xr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case xr.SPHERE:{let a=new xr(xr.VECTOR).build(e,"v3"),s="normalize( ( viewMatrix * vec4( "+a+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${s};`),i="reflectSphereVec"):i=s;break}}return e.format(i,this.getType(),n)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,n)}},qr=xr;qr.CUBE="cube",qr.SPHERE="sphere",qr.VECTOR="vector";var Bl=class extends he{constructor(e=new jt,n,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Si(this.value,n??new qr(qr.VECTOR),o),this.irradianceNode=new Si(this.value,new bt(bt.WORLD),new J(1).setReadonly(!0))}generate(e,n){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,n)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),n))}};var cg=require("three");var Fl=class extends Ge{constructor(e=new cg.CubeTexture,n,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=n??new qr,this.bias=o}getTexture(e,n){return super.generate(e,n,this.value.uuid,"tc")}generate(e,n){if(n==="samplerCube")return this.getTexture(e,n);let o=this.getTexture(e,n),i=this.uv?.build(e,"v3"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s;a?s="texCubeBias( "+o+", "+i+", "+a+" )":s="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new Et(new Pe("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,u),e.removeContext(),e.format(s,u,n)}};var ug=["x","y","z","w"],SC=["float","vec2","vec3","vec4"],wC={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},TC={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[]"},Rl=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,n){return e.deps.length-n.deps.length}return function(n,o){let i=this.getIncludes(n,o);if(!i)return"";let a="";i=i.sort(t);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
|
|
85
|
+
`);return a}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
|
|
86
86
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
87
87
|
#define SPE_BLENDING_NORMAL 0
|
|
88
88
|
#define SPE_BLENDING_MULTIPLY 1
|
|
@@ -119,14 +119,14 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
119
119
|
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
120
120
|
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
121
121
|
}`,""].join(`
|
|
122
|
-
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.buildShader("vertex",t),this.buildShader("fragment",e);for(let
|
|
122
|
+
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.buildShader("vertex",t),this.buildShader("fragment",e);for(let n=0;n<this.requires.uv.length;n++)if(this.requires.uv[n]){let o=n>0?n+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),n>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.material=t,this.renderer=e,this.defines={},this}addFlow(t,e,n){return this.addSlot(t).addCache(e).addContext(n)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
|
|
123
123
|
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
|
|
124
124
|
`}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
|
|
125
125
|
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
|
|
126
|
-
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,
|
|
127
|
-
`)}getVarListCode(t,e){e=e??"";let
|
|
128
|
-
`:
|
|
129
|
-
`}return
|
|
126
|
+
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,n,o="varying",i="V",a=""){let s=this.getVars(o),l=s[t];if(!l){let u=s.length;l={name:n||"node"+i+u+(a?"_"+a:""),type:e},s.push(l),s[t]=l}return l}getTempVar(t,e,n,o){return this.getVar(t,e,n,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let n=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(n.name+" = "+t+";"),this.attributes[t]={varying:n,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
|
|
127
|
+
`)}getVarListCode(t,e){e=e??"";let n="";for(let o=0,i=t.length;o<i;++o){let a=t[o],s=a.type,l=a.name,u=a.size,c=this.getFormatByType(s);if(c===void 0)throw new Error("Node pars "+c+" not found.");c.includes("[]")?n+=e+" "+c.substring(0,c.length-2)+" "+l+`[${u}];
|
|
128
|
+
`:n+=e+" "+c+" "+l+`;
|
|
129
|
+
`}return n}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof vt?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,n,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,u=new xa({type:e,size:n.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:n,needsUpdate:i});return s.list.push(u),s[t].push(u),s[t][u.name]=u,this.uniforms[u.name]=u,u}else{let s=this.inputs.uniforms,l=s.list.length,u=new xa({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:n,needsUpdate:i});return s.list.push(u),s[t].push(u),s[t][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(t,e,n,o,i){return this.createUniform("vertex",t,e,n,o,i)}createFragmentUniform(t,e,n,o,i){return this.createUniform("fragment",t,e,n,o,i)}include(t,e,n){let o;if(t=typeof t=="string"?ut.get(t):t,this.context.include===!1)return t.name;t instanceof Z?o=this.includes.functions:t instanceof Oe?o=this.includes.consts:t instanceof vi&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let a=i[t.name];if(a||(a=i[t.name]={node:t,deps:[]},i.push(a),a.src=t.build(this,"source")),t instanceof Z&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let s=0;do this.include(t.includes[s++],e);while(s<t.includes.length)}return n&&(a.src=n),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return SC[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let n=t[e];if(n?.isNode)return n}}resolve(...t){for(let e=0;e<arguments.length;e++){let n=t[e];if(n!==void 0){if(n.isNode)return n;if(n.isTexture)switch(n.mapping){case br.CubeReflectionMapping:case br.CubeRefractionMapping:return new Fl(n);case br.CubeUVReflectionMapping:return new Bl(new jt(n));default:return new jt(n)}else{if(n.isVector2)return new xt(n);if(n.isVector3)return new At(n);if(n.isVector4)return new pr(n)}}}}format(t,e,n){switch(this.colorToVector(n+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return wC[t]||t}getFormatByType(t){return TC[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return ug[t]}getIndexByElement(t){return ug.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=br.LinearEncoding,e===br.LinearEncoding&&this.context.gamma&&(e=br.sRGBEncoding),e}};var ze=require("three");var Ee=class extends Ge{constructor(e=0,n,o,i){super("c");this.nodeType="Color";this.value=e instanceof pt?e:new pt(e||0,n,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,n,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let c=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${c};`)}return u?this.generateReadonly(e,n,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,n)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,n))}generateReadonly(e,n,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,n)}};var Ae=class extends Ge{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,n,o,i,a,s){return e.format(this.value.toString(),i,n)}};var kl=require("three");var xo=class extends vt{constructor(){super("basic");this.nodeType="Basic";this.color=new Ee(5855577),this.shadingAlpha=new J(1),this.shadingBlend=new Ae(0)}generate(e){let n;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(kl.UniformsUtils.merge([kl.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
130
130
|
`));let i=["#include <beginnormal_vertex>",`
|
|
131
131
|
#if !defined( USE_LAYER_DISPLACE )
|
|
132
132
|
#include <defaultnormal_vertex>
|
|
@@ -143,10 +143,10 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
143
143
|
#if !defined( USE_LAYER_DISPLACE )
|
|
144
144
|
#include <begin_vertex>
|
|
145
145
|
#endif /* !USE_LAYER_DISPLACE */
|
|
146
|
-
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),
|
|
147
|
-
`)}else{this.color===void 0&&(this.color=new
|
|
148
|
-
`));let
|
|
149
|
-
`)}return
|
|
146
|
+
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),n=i.join(`
|
|
147
|
+
`)}else{this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,a=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
148
|
+
`));let s=["#include <normal_fragment_begin>",o.code];i&&s.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),a?s.push(a.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`):s.push(`vec3 finalColor = ${o.result};`),i?s.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):s.push("gl_FragColor = vec4("+o.result+", 1.0 );"),s.push("#include <fog_fragment>","#include <dithering_fragment>"),n=s.join(`
|
|
149
|
+
`)}return n}};var Ba=require("three");var Vn=class extends Ge{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,n,o,i){return e.format(this.value?"true":"false",i,n)}};var pg=require("three");var wi=class extends Ge{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new pg.Matrix3}generateReadonly(e,n,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,n)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Sr=class extends Ge{constructor(e=1,n){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(n)?n:typeof n=="number"?new Array(e).fill(n):new Array(e).fill(0)}};var Nu=require("three");var wr=class extends Ge{constructor(e=1,n){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(n)?n:n instanceof Nu.Vector4?new Array(e).fill(n):new Array(e).fill(new Nu.Vector4(0))}};var Sa=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(Sa||{}),Lt=function(){let t=new Z(`vec3 random3(vec3 c) {
|
|
150
150
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
151
151
|
vec3 r;
|
|
152
152
|
r.z = fract(512.0*j);
|
|
@@ -155,7 +155,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
155
155
|
j *= .125;
|
|
156
156
|
r.y = fract(512.0*j);
|
|
157
157
|
return r-0.5;
|
|
158
|
-
}`),e=new
|
|
158
|
+
}`),e=new Z(`float simplex3d(vec3 p) {
|
|
159
159
|
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
160
160
|
vec3 x = p - s + dot(s, vec3(G3));
|
|
161
161
|
|
|
@@ -186,7 +186,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
186
186
|
d *= w;
|
|
187
187
|
|
|
188
188
|
return dot(d, vec4(52.0));
|
|
189
|
-
}`,[t]);e.keywords.F3=new
|
|
189
|
+
}`,[t]);e.keywords.F3=new Oe("float F3 0.3333333"),e.keywords.G3=new Oe("float G3 0.1666667");let n=new Z(`float simplex3dFractal(vec3 m) {
|
|
190
190
|
mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
|
|
191
191
|
mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
|
|
192
192
|
mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
|
|
@@ -194,7 +194,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
194
194
|
+ 0.2666667 * simplex3d(2.0 * m * rot2)
|
|
195
195
|
+ 0.1333333 * simplex3d(4.0 * m * rot3)
|
|
196
196
|
+ 0.0666667 * simplex3d(8.0 * m);
|
|
197
|
-
}`,[e]),o=new
|
|
197
|
+
}`,[e]),o=new Z("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new Z("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),a=new Z(`float simplexAshima(vec3 v) {
|
|
198
198
|
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
|
|
199
199
|
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
|
|
200
200
|
vec3 i = floor(v + dot(v, C.yyy) );
|
|
@@ -239,7 +239,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
239
239
|
m = m * m;
|
|
240
240
|
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
|
|
241
241
|
dot(p2,x2), dot(p3,x3) ) );
|
|
242
|
-
}`,[o,i]),
|
|
242
|
+
}`,[o,i]),s=new Z("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new Z("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[s]),u=new Z(`float noise(vec3 p){
|
|
243
243
|
vec3 a = floor(p);
|
|
244
244
|
vec3 d = p - a;
|
|
245
245
|
d = d * d * (3.0 - 2.0 * d);
|
|
@@ -254,7 +254,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
254
254
|
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
255
255
|
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
256
256
|
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
257
|
-
}`,[
|
|
257
|
+
}`,[l]),c=new Z(`float fbm(vec3 x) {
|
|
258
258
|
float v = 0.0;
|
|
259
259
|
float a = 0.5;
|
|
260
260
|
vec3 shift = vec3(100);
|
|
@@ -264,7 +264,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
264
264
|
a *= 0.5;
|
|
265
265
|
}
|
|
266
266
|
return v;
|
|
267
|
-
}`,[
|
|
267
|
+
}`,[u]);c.keywords.NUM_OCTAVES=new Oe(`int NUM_OCTAVES ${5}`);let p=new Z("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),f=new Z(`float perlin(vec3 P){
|
|
268
268
|
vec3 Pi0 = floor(P);
|
|
269
269
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
270
270
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -323,16 +323,16 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
323
323
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
324
324
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
325
325
|
return 2.2 * n_xyz;
|
|
326
|
-
}`,[o,i,
|
|
326
|
+
}`,[o,i,p]);return{simplex:e,simplexFractal:n,simplexAshima:a,fbm:c,perlin:f}}();var wa=class extends he{constructor(e,n,o,i,a,s,l,u,c,p,f,d){super("v3");this.nodeType="Noise";this.scale=e,this.size=n,this.move=o,this.fA=i,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=u,this.colorC=c,this.colorD=p,this.alpha=f,this.noiseType=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let s=Object.values(Sa)[this.noiseType.value],l=new Z(`vec3 ${s}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
|
|
327
327
|
vec3 st = position / size;
|
|
328
328
|
st /= scale;
|
|
329
|
-
vec3 q = vec3(${
|
|
330
|
-
${
|
|
331
|
-
${
|
|
332
|
-
vec3 r = vec3(${
|
|
333
|
-
${
|
|
334
|
-
${
|
|
335
|
-
float f = ${
|
|
329
|
+
vec3 q = vec3(${s}(st),
|
|
330
|
+
${s}(st + vec3(1.0)),
|
|
331
|
+
${s}(st + vec3(1.0)));
|
|
332
|
+
vec3 r = vec3(${s}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
|
|
333
|
+
${s}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
|
|
334
|
+
${s}(st * q));
|
|
335
|
+
float f = ${s}(st + r);
|
|
336
336
|
vec4 color;
|
|
337
337
|
color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
|
|
338
338
|
color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
|
|
@@ -343,7 +343,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
343
343
|
|
|
344
344
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
345
345
|
return clamp(color, 0.0, 1.0).rgb;
|
|
346
|
-
}`,[
|
|
346
|
+
}`,[Lt.simplex,Lt.simplexFractal,Lt.simplexAshima,Lt.fbm,Lt.perlin]),u=e.include(l),c=[];return c.push(this.scale.build(e,"f")),c.push(this.size.build(e,"v3")),c.push(this.move.build(e,"f")),c.push(this.fA.build(e,"v2")),c.push(this.fB.build(e,"v2")),c.push(this.distortion.build(e,"v2")),c.push(this.colorA.build(e,"v4")),c.push(this.colorB.build(e,"v4")),c.push(this.colorC.build(e,"v4")),c.push(this.colorD.build(e,"v4")),c.push(this.alpha.build(e,"f")),c.push(this.calpha),e.format(u+"("+c.join(",")+")",this.getType(e),n)}};wa.numOctaves=5;var Ta=require("three");var Gl=class extends vt{constructor(){super("phong");this.nodeType="Phong";this.color=new Ee(5855577),this.specular=new Ee(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new Ae(0)}build(e){let n;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(Ta.UniformsUtils.merge([Ta.UniformsLib.fog,Ta.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
347
347
|
`));let i=["#include <beginnormal_vertex>",`
|
|
348
348
|
#ifndef USE_LAYER_DISPLACE
|
|
349
349
|
#include <defaultnormal_vertex>
|
|
@@ -361,9 +361,9 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
361
361
|
#ifndef USE_LAYER_DISPLACE
|
|
362
362
|
#include <begin_vertex>
|
|
363
363
|
#endif
|
|
364
|
-
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),
|
|
365
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
366
|
-
`));let
|
|
364
|
+
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),n=i.join(`
|
|
365
|
+
`)}else{e.mergeUniform({penumbraSize:_t.penumbraSize}),this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,c=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=c!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
366
|
+
`));let p=["#include <normal_fragment_begin>",`
|
|
367
367
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
368
368
|
vec3 viewdx = dFdx(vViewPosition);
|
|
369
369
|
vec3 viewdy = dFdy(vViewPosition);
|
|
@@ -371,21 +371,21 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
371
371
|
if (dot(normal, faceNormal) < 0.0) {
|
|
372
372
|
normal *= -1.0;
|
|
373
373
|
}
|
|
374
|
-
`," BlinnPhongMaterial material;"];
|
|
374
|
+
`," BlinnPhongMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),c&&p.push(c.code,"#ifdef ALPHATEST","if ( "+c.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),p.push(`
|
|
375
375
|
if (outgoingLight != diffuseColor) {
|
|
376
376
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
377
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${
|
|
378
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${
|
|
377
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * lightAccu;
|
|
378
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result}, ${l.result} );
|
|
379
379
|
}
|
|
380
|
-
`),p
|
|
381
|
-
`)}return
|
|
380
|
+
`),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),n=p.join(`
|
|
381
|
+
`)}return n}};var Pu=class extends he{constructor(e,n,o,i,a,s,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=n,this.scale=o,this.intensity=i,this.factor=a,this.alpha=s,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Pu.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),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),n)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Ca=Pu;Ca.Nodes=function(){return{fresnel:new Z(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
|
|
382
382
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
383
383
|
|
|
384
384
|
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
385
385
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
|
|
386
386
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
387
387
|
return color;
|
|
388
|
-
}`)}}();var
|
|
388
|
+
}`)}}();var Mu=class extends he{constructor(e,n,o,i,a,s,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=n,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Mu.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Aa=Mu;Aa.Nodes=function(){let e=new Z(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
389
389
|
vec3 st = position / noiseScale;
|
|
390
390
|
vec3 q = vec3(simplex3d(st),
|
|
391
391
|
simplex3d(st + vec3(1.0)),
|
|
@@ -398,7 +398,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
398
398
|
float noise = simplex3d(st + r);
|
|
399
399
|
|
|
400
400
|
return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
|
|
401
|
-
}`,[
|
|
401
|
+
}`,[Lt.simplex]);return{rainbow:new Z(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
|
|
402
402
|
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
403
403
|
|
|
404
404
|
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
@@ -407,21 +407,21 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
|
|
|
407
407
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
408
408
|
|
|
409
409
|
return res;
|
|
410
|
-
}`,[e])}}();var
|
|
410
|
+
}`,[e])}}();var Eu=class extends he{constructor(e,n,o,i,a,s,l,u,c,p,f,d,h,m,g,v){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=n,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=u,this.contourDirection=c,this.positionalLines=p,this.compensation=f,this.resolution=d,this.normalMap=h,this.depthMap=m,this.pixelRatio=g,this.alpha=v,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),i=this.resolution.build(e,"v2"),a=this.compensation.build(e,"b"),s=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(i,"uniform vec2"),e.addVertexParsVariable(a,"uniform bool"),e.addVertexParsVariable(s,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let l=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
|
|
411
411
|
vID = randomColor.r;
|
|
412
|
-
if (${
|
|
413
|
-
vec4 ${
|
|
412
|
+
if (${a}) {
|
|
413
|
+
vec4 ${l}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
|
|
414
414
|
// NOTE: For certain shapes, like spheres, we get incorrect extrusion when the
|
|
415
415
|
// normals face the camera directly. So we hackily fix this by offsetting the normal
|
|
416
416
|
// by a tiny amount.
|
|
417
|
-
vec3 ${
|
|
418
|
-
vec2 ${
|
|
419
|
-
${
|
|
417
|
+
vec3 ${l}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal) + 0.0000001;
|
|
418
|
+
vec2 ${l}_offset = normalize(${l}_clipNormal.xy) / ${i} * (${o} / 2.0) * ${l}_clipPosition.w * 2.0 * ${s};
|
|
419
|
+
${l}_clipPosition.xy += ${l}_offset;
|
|
420
420
|
// TODO(MAX): To handle multiple outline layers, we only want to extrude
|
|
421
421
|
// if this offset is the biggest of all the potential offsets
|
|
422
|
-
gl_Position = ${
|
|
422
|
+
gl_Position = ${l}_clipPosition;
|
|
423
423
|
}
|
|
424
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(
|
|
424
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Eu.Nodes.outline),i=[];return i.push(this.outlineColor.build(e,"c")),i.push(this.contourColor.build(e,"c")),i.push(this.outlineWidth.build(e,"f")),i.push(this.contourWidth.build(e,"f")),i.push(this.contourThreshold.build(e,"f")),i.push(this.outlineThreshold.build(e,"f")),i.push(this.contourFrequency.build(e,"f")),i.push(this.outlineSmoothing.build(e,"f")),i.push(this.contourDirection.build(e,"v3")),i.push(this.positionalLines.build(e,"b")),i.push(this.resolution.build(e,"v2")),i.push(this.normalMap.getTexture(e,"t")),i.push(this.depthMap.getTexture(e,"t")),i.push(this.pixelRatio.build(e,"f")),i.push(this.compensation.build(e,"b")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},_a=Eu;_a.Nodes=function(){let e=new Z(`
|
|
425
425
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
426
426
|
{
|
|
427
427
|
vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
|
|
@@ -522,7 +522,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
522
522
|
float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
|
|
523
523
|
return edgeNormal;
|
|
524
524
|
}
|
|
525
|
-
`);return{outline:new
|
|
525
|
+
`);return{outline:new Z(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float alpha, out float calpha) {
|
|
526
526
|
vec3 result = outlineColor;
|
|
527
527
|
float resultAlpha = 0.0;
|
|
528
528
|
|
|
@@ -561,11 +561,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
561
561
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
562
562
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
563
563
|
return result;
|
|
564
|
-
}`,[e])}}();var
|
|
564
|
+
}`,[e])}}();var Du=class extends he{constructor(e,n,o,i,a,s,l,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=n,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(Du.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Ia=Du;Ia.Nodes=function(){let e=new Z(`
|
|
565
565
|
float gaussian(vec2 i) {
|
|
566
566
|
const float sigma = float(NUM_SAMPLES) * .25;
|
|
567
567
|
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
568
|
-
}`),
|
|
568
|
+
}`),n=new Z(`
|
|
569
569
|
vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
570
570
|
// Slightly modified version of this:
|
|
571
571
|
// https://www.shadertoy.com/view/ltScRG
|
|
@@ -595,7 +595,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
595
595
|
a += gaussian;
|
|
596
596
|
}
|
|
597
597
|
return O / a;
|
|
598
|
-
}`,[e]),o=new
|
|
598
|
+
}`,[e]),o=new Z(`
|
|
599
599
|
vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
600
600
|
// Direction of refracted light.
|
|
601
601
|
vec3 refractionVector = refract( -v, n, 1.0 / ior );
|
|
@@ -606,18 +606,18 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
606
606
|
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
607
607
|
// The thickness is specified in local space.
|
|
608
608
|
return normalize( refractionVector ) * thickness * modelScale;
|
|
609
|
-
}`),i=new
|
|
609
|
+
}`),i=new Z(`
|
|
610
610
|
float applyIorToRoughness( float roughness, float ior ) {
|
|
611
611
|
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
612
612
|
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
613
613
|
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
614
|
-
} `),
|
|
614
|
+
} `),a=new Z(`
|
|
615
615
|
vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
|
|
616
616
|
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
617
617
|
float lod = applyIorToRoughness(roughness, ior);
|
|
618
618
|
|
|
619
619
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
620
|
-
}`,[i,
|
|
620
|
+
}`,[i,n]),s=new Z(`
|
|
621
621
|
vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
|
|
622
622
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
623
623
|
vec3 refractedRayExit = position + transmissionRay;
|
|
@@ -635,7 +635,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
635
635
|
|
|
636
636
|
// Sample framebuffer to get pixel the refracted ray hits.
|
|
637
637
|
return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
|
|
638
|
-
}`,[
|
|
638
|
+
}`,[a,o]);return{transmission:new Z(`
|
|
639
639
|
vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
|
|
640
640
|
vec3 v = vec3(0.);
|
|
641
641
|
if (isOrthographic) {
|
|
@@ -649,7 +649,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
649
649
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
650
650
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
651
651
|
return transmission;
|
|
652
|
-
}`,[
|
|
652
|
+
}`,[s])}}();var Ti=class extends he{constructor(e,n,o,i,a,s,l,u,c,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=n,this.near=o,this.far=i,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=u,this.colors=c,this.steps=p,this.alpha=f,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new Z(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
|
|
653
653
|
vec4 color = colors[0];
|
|
654
654
|
#ifdef ${o}_IS_VECTOR
|
|
655
655
|
#ifdef ${o}_LINEAR
|
|
@@ -689,25 +689,25 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
689
689
|
|
|
690
690
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
691
691
|
return color.rgb;
|
|
692
|
-
}`,[
|
|
692
|
+
}`,[Ti.Nodes.vectorLinearWorldSpaceDepth,Ti.Nodes.vectorLinearObjectSpaceDepth,Ti.Nodes.vectorSphericalObjectSpaceDepth,Ti.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let a=e.include(i),s=[];return s.push(this.near.build(e,"f")),s.push(this.far.build(e,"f")),s.push(this.origin.build(e,"v3")),s.push(this.direction.build(e,"v3")),s.push(this.colors.build(e,"v4[]")),s.push(this.steps.build(e,"f[]")),s.push(this.alpha.build(e,"f")),s.push(this.calpha),e.format(a+"("+s.join(",")+")",this.getType(e),n)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Oa=Ti;Oa.Nodes=function(){let e=new Z(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
693
693
|
vec3 n = normalize(direction);
|
|
694
694
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
695
695
|
return ( dist - near ) / ( far - near );
|
|
696
|
-
}`),
|
|
696
|
+
}`),n=new Z(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
697
697
|
vec3 n = normalize(direction);
|
|
698
698
|
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
699
699
|
return ( dist - near ) / ( far - near );
|
|
700
|
-
}`),o=new
|
|
700
|
+
}`),o=new Z(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
701
701
|
float dist = length(vWPosition - origin);
|
|
702
702
|
return ( dist - near ) / ( far - near );
|
|
703
|
-
}`),i=new
|
|
703
|
+
}`),i=new Z(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
704
704
|
float dist = length(position - origin);
|
|
705
705
|
return ( dist - near ) / ( far - near );
|
|
706
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:
|
|
706
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:n,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var La=class extends he{constructor(e,n,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=n,this.alpha=o,this.mode=i}generate(e,n){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),n)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}};var Bu=(e=>(e.NOISE="noise",e.MAP="map",e))(Bu||{}),Fu=class extends he{constructor(e,n,o,i,a){super("v3");this.displacementTypeIndex=new Ae(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=n,Object.values(Bu)[this.displacementTypeIndex.value]==="map"&&(this.mat=new wi(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=i,this.noiseFunctionIndex=a}generate(e,n){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Bu)[this.displacementTypeIndex.value]){case"map":{o=e.include(Fu.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let s=Object.values(Sa)[this.noiseFunctionIndex.value],l=new Z(`vec3 orthogonal(vec3 v) {
|
|
707
707
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
708
|
-
}`),
|
|
709
|
-
return p + n * ${
|
|
710
|
-
}`,[
|
|
708
|
+
}`),u=new Z(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
709
|
+
return p + n * ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
710
|
+
}`,[Lt.simplex,Lt.simplexFractal,Lt.simplexAshima,Lt.fbm,Lt.perlin]),c=new Z(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
|
|
711
711
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
712
712
|
vec3 tangent1 = orthogonal(normal);
|
|
713
713
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -723,9 +723,9 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
723
723
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
724
724
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
725
725
|
return displaced_position;
|
|
726
|
-
}`,[
|
|
726
|
+
}`,[u,l]);o=e.include(c),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Na=Fu;Na.Nodes=function(){let e=new Z(`vec3 orthogonal(vec3 v) {
|
|
727
727
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
728
|
-
}`),
|
|
728
|
+
}`),n=new Z(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
729
729
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
730
730
|
vec4 tmp = texture2D(tex, uvs);
|
|
731
731
|
vec3 col = tmp.rgb;
|
|
@@ -735,7 +735,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
735
735
|
}
|
|
736
736
|
}
|
|
737
737
|
return col.r;
|
|
738
|
-
}`);return{map:new
|
|
738
|
+
}`);return{map:new Z(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
|
|
739
739
|
vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
|
|
740
740
|
vec3 tangent1 = normalize(orthogonal(normal));
|
|
741
741
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -745,7 +745,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
745
745
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
746
746
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
747
747
|
return displaced_position;
|
|
748
|
-
}`,[e,
|
|
748
|
+
}`,[e,n])}}();var Ru=class extends he{constructor(e,n,o,i,a,s,l,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=n,this.colors=o,this.steps=i,this.offset=a,this.morph=s,this.angle=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Ru.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Pa=Ru;Pa.Nodes=function(){return{gradient:new Z(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
|
|
749
749
|
vec4 color = colors[0];
|
|
750
750
|
vec2 m = morph / vUv.xy;
|
|
751
751
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -787,7 +787,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
787
787
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
788
788
|
|
|
789
789
|
return color.xyz;
|
|
790
|
-
}`)}}();var
|
|
790
|
+
}`)}}();var Ea=class extends he{constructor(e,n,o,i,a,s,l,u,c,p){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=n,this.crop=o,this.projection=i,this.axis=a,this.side=s,this.size=l,this.mat=u,this.alpha=c,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(Ea.Nodes.cylindrical);break;case 2:i=e.include(Ea.Nodes.spherical);break;case 1:let s=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=new Z(`
|
|
791
791
|
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
792
792
|
|
|
793
793
|
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -796,7 +796,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
796
796
|
|
|
797
797
|
vec3 col = tmp.rgb;
|
|
798
798
|
float lalpha = alpha * tmp.a;
|
|
799
|
-
${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${
|
|
799
|
+
${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${s}));`}
|
|
800
800
|
|
|
801
801
|
if ( crop > 0.5 ) {
|
|
802
802
|
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
@@ -806,7 +806,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
806
806
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
807
807
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
808
808
|
return col;
|
|
809
|
-
}`);i=e.include(
|
|
809
|
+
}`);i=e.include(l);break;default:i=e.include(Ea.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let s=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${s})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let a=[];return a.push(this.texture.generate(e,"t")),a.push(this.textureSize.build(e,"v2")),a.push(this.crop.build(e,"f")),a.push(this.mat.build(e,"mat3")),a.push(this.size.build(e,"v2")),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+a.join(",")+")",this.getType(e),n)}},Ma=Ea;Ma.Nodes=function(){let e=new Z(`
|
|
810
810
|
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
811
811
|
vec3 posN = normalize(position);
|
|
812
812
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -836,7 +836,7 @@ vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, v
|
|
|
836
836
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
837
837
|
return col;
|
|
838
838
|
}
|
|
839
|
-
`),
|
|
839
|
+
`),n=new Z(`
|
|
840
840
|
vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
841
841
|
vec3 posN = normalize(vPosition);
|
|
842
842
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -864,7 +864,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
864
864
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
865
865
|
return col;
|
|
866
866
|
}
|
|
867
|
-
`),o=new
|
|
867
|
+
`),o=new Z(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
868
868
|
|
|
869
869
|
vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
870
870
|
vec4 tmp = texture2D( tex, uvs );
|
|
@@ -880,14 +880,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
880
880
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
881
881
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
882
882
|
return col;
|
|
883
|
-
}`);return{cylindrical:e,spherical:
|
|
883
|
+
}`);return{cylindrical:e,spherical:n,uv:o}}();var ku=class extends he{constructor(e,n){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=n}generate(e,n){if(e.isShader("fragment")){let o=e.include(ku.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Da=ku;Da.Nodes=function(){return{customNormal:new Z(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
884
884
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
885
885
|
normal *= step( vec3(0.5), cnormal );
|
|
886
886
|
|
|
887
887
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
888
888
|
|
|
889
889
|
return normal;
|
|
890
|
-
}`)}}();var
|
|
890
|
+
}`)}}();var _t={normalRenderTarget:new jt,normalRenderTargetDepth:new jt,transmissionRenderTarget:new jt,transmissionSize:new xt(2048,2048),transmissionRenderTargetDepth:new jt,pixelRatioNode:new J(1),resolution:new xt,penumbraSize:new Sr(5,.5)};for(let r of Object.values(_t))r.isRenderGlobal=!0;var Fa=class extends vt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ee(5855577),this.emissive=new Ee(0),this.emissiveIntensity=new J(1),this.shadingAlpha=new J(1),this.shadingBlend=new Ae(0)}build(e){let n;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(Ba.UniformsUtils.merge([Ba.UniformsLib.fog,Ba.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
891
891
|
`));let i=["#include <beginnormal_vertex>",`
|
|
892
892
|
#ifndef USE_LAYER_DISPLACE
|
|
893
893
|
#include <defaultnormal_vertex>
|
|
@@ -978,22 +978,22 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
978
978
|
}
|
|
979
979
|
#pragma unroll_loop_end
|
|
980
980
|
#endif
|
|
981
|
-
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),
|
|
982
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
983
|
-
`));let
|
|
981
|
+
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),n=i.join(`
|
|
982
|
+
`)}else{e.mergeUniform({penumbraSize:_t.penumbraSize}),this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,c=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=c!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
983
|
+
`));let p=["#include <normal_fragment_begin>",`
|
|
984
984
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
985
985
|
vec3 viewdx = dFdx(vViewPosition);
|
|
986
986
|
vec3 viewdy = dFdy(vViewPosition);
|
|
987
987
|
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
988
988
|
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
989
|
-
`,"#include <clipping_planes_fragment>"];
|
|
989
|
+
`,"#include <clipping_planes_fragment>"];p.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),c&&p.push(c.code,"#ifdef ALPHATEST","if ( "+c.result+" <= ALPHATEST ) discard;","#endif"),p.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&p.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+a.result+";"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),p.push(`
|
|
990
990
|
if (outgoingLight != diffuseColor) {
|
|
991
991
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
992
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${
|
|
993
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${
|
|
992
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * lightAccu;
|
|
993
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result}, ${l.result} );
|
|
994
994
|
}
|
|
995
|
-
`),p
|
|
996
|
-
`)}return
|
|
995
|
+
`),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),n=p.join(`
|
|
996
|
+
`)}return n}};var Ci=require("three");var Ra=class extends vt{constructor(){super("standard");this.nodeType="Standard";this.color=new Ee(5855577),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.shadingAlpha=new J(1),this.shadingBlend=new Ae(0)}build(e){let n;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(Ci.UniformsUtils.merge([Ci.UniformsLib.fog,Ci.UniformsLib.lights])),Ci.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
997
997
|
`));let i=["#include <beginnormal_vertex>",`
|
|
998
998
|
#if !defined( USE_LAYER_DISPLACE )
|
|
999
999
|
#include <defaultnormal_vertex>
|
|
@@ -1010,9 +1010,9 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1010
1010
|
#if !defined( USE_LAYER_DISPLACE )
|
|
1011
1011
|
#include <begin_vertex>
|
|
1012
1012
|
#endif /* !USE_LAYER_DISPLACE */
|
|
1013
|
-
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),
|
|
1014
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
1015
|
-
`));let
|
|
1013
|
+
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),n=i.join(`
|
|
1014
|
+
`)}else{e.mergeUniform({penumbraSize:_t.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let i=this.color.flow(e,"c",{slot:"color",context:o}),a=this.roughness.flow(e,"f"),s=this.metalness.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
1015
|
+
`));let d=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
1016
1016
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1017
1017
|
vec3 viewdx = dFdx(vViewPosition);
|
|
1018
1018
|
vec3 viewdy = dFdy(vViewPosition);
|
|
@@ -1020,14 +1020,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1020
1020
|
if (dot(normal, faceNormal) < 0.0) {
|
|
1021
1021
|
normal *= -1.0;
|
|
1022
1022
|
}
|
|
1023
|
-
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];
|
|
1023
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];d.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",a.code," float roughnessFactor = "+a.result+";",s.code," float metalnessFactor = "+s.result+";"),p&&d.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),d.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),d.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),f?d.push(f.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+f.result+" ) ), diffuseColor, metalnessFactor );"):d.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),d.push("#include <lights_fragment_begin>"),d.push("#include <lights_fragment_end>"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),d.push(`
|
|
1024
1024
|
if (outgoingLight != diffuseColor) {
|
|
1025
1025
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1026
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${
|
|
1027
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${
|
|
1026
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
1027
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${u.result} );
|
|
1028
1028
|
}
|
|
1029
|
-
`),
|
|
1030
|
-
`)}return
|
|
1029
|
+
`),c&&d.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),p?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),n=d.join(`
|
|
1030
|
+
`)}return n}};var ka=require("three");var Ga=class extends vt{constructor(){super("toon");this.nodeType="Toon";this.color=new Ee(5855577),this.specular=new Ee(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new Ae(0)}build(e){let n;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(ka.UniformsUtils.merge([ka.UniformsLib.fog,ka.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1031
1031
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1032
1032
|
#ifndef USE_LAYER_DISPLACE
|
|
1033
1033
|
#include <defaultnormal_vertex>
|
|
@@ -1044,8 +1044,8 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1044
1044
|
#ifndef USE_LAYER_DISPLACE
|
|
1045
1045
|
#include <begin_vertex>
|
|
1046
1046
|
#endif
|
|
1047
|
-
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),
|
|
1048
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
1047
|
+
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),n=i.join(`
|
|
1048
|
+
`)}else{e.mergeUniform({penumbraSize:_t.penumbraSize}),this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,c=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=c!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
|
|
1049
1049
|
varying vec3 vViewPosition;
|
|
1050
1050
|
struct ToonMaterial {
|
|
1051
1051
|
vec3 diffuseColor;
|
|
@@ -1066,7 +1066,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1066
1066
|
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
1067
1067
|
#define Material_LightProbeLOD( material ) (0)
|
|
1068
1068
|
`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
|
|
1069
|
-
`));let
|
|
1069
|
+
`));let p=["#include <normal_fragment_begin>",`
|
|
1070
1070
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1071
1071
|
vec3 viewdx = dFdx(vViewPosition);
|
|
1072
1072
|
vec3 viewdy = dFdy(vViewPosition);
|
|
@@ -1074,14 +1074,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1074
1074
|
if (dot(normal, faceNormal) < 0.0) {
|
|
1075
1075
|
normal *= -1.0;
|
|
1076
1076
|
}
|
|
1077
|
-
`," ToonMaterial material;"];
|
|
1077
|
+
`," ToonMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),c&&p.push(c.code,"#ifdef ALPHATEST","if ( "+c.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),p.push(`
|
|
1078
1078
|
if (outgoingLight != diffuseColor) {
|
|
1079
1079
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1080
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${
|
|
1081
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${
|
|
1080
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * lightAccu;
|
|
1081
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result}, ${l.result} );
|
|
1082
1082
|
}
|
|
1083
|
-
`),p
|
|
1084
|
-
`)}return
|
|
1083
|
+
`),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),n=p.join(`
|
|
1084
|
+
`)}return n}};var nt=require("three");function fg(r,t){switch(r.type){case"fresnel":return _C(r,t);case"gradient":return IC(r);case"depth":return OC(r);case"normal":return LC(r);case"noise":return NC(r,t);case"rainbow":return PC(r);case"toon":return MC(r,t);case"outline":return EC(r,t);case"transmission":return DC(r,t);case"color":return AC(r,t)}}function CC(r){return{type:r.type}}function Yr(r){let{alpha:t,mode:e}=r;return{...CC(r),alpha:t,mode:e}}function AC(r,t){return{...Yr(r),color:yt(r.color,t)}}function _C(r,t){let{bias:e,scale:n,intensity:o,factor:i,color:a}=r;return{...Yr(r),color:yt(a,t),bias:e,scale:n,intensity:o,factor:i}}function IC(r){let{gradientType:t,smooth:e,colors:n,steps:o,angle:i,offset:a,morph:s}=r;return{...Yr(r),gradientType:t,smooth:e,colors:n.map(l=>new nt.Vector4(l[0],l[1],l[2],l[3])),num:n.length,steps:o,offset:new nt.Vector2(...a),morph:new nt.Vector2(...s),angle:i}}function OC(r){let{gradientType:t,near:e,far:n,isVector:o,isWorldSpace:i,origin:a,direction:s,colors:l,steps:u,smooth:c}=r;return{...Yr(r),gradientType:t,near:e,far:n,isVector:o,isWorldSpace:i,origin:new nt.Vector3(...a),direction:s?new nt.Vector3(...s):new nt.Vector3(1,0,0),colors:l.map(p=>p!==void 0?new nt.Vector4(p[0],p[1],p[2],p[3]):new nt.Vector4(0,0,0,0)),steps:u.slice(0,l.length),smooth:c}}function LC(r){let{cnormal:t}=r;return{...Yr(r),cnormal:new nt.Vector3(t[0],t[1],t[2])}}function NC(r,t){return{...Yr(r),scale:r.scale,move:r.move,fA:new nt.Vector2(...r.fA),fB:new nt.Vector2(...r.fB),size:new nt.Vector3(...r.size),distortion:new nt.Vector2(...r.distortion),colorA:yt(r.colorA,t),colorB:yt(r.colorB,t),colorC:yt(r.colorC,t),colorD:yt(r.colorD,t),noiseType:r.noiseType}}function PC(r){return{...Yr(r),filmThickness:r.filmThickness,movement:r.movement,wavelengths:new nt.Vector3(...r.wavelengths),noiseStrength:r.noiseStrength,noiseScale:r.noiseScale,offset:new nt.Vector3(...r.offset)}}function MC(r,t){return{...Yr(r),positioning:r.positioning,colors:r.colors.map(e=>new nt.Vector4(e[0],e[1],e[2],e[3])),num:r.colors.length,steps:r.steps,source:new nt.Vector3(...r.source),isWorldSpace:r.isWorldSpace,noiseStrength:r.noiseStrength,noiseScale:r.noiseScale,shadowColor:yt(r.shadowColor,t),offset:new nt.Vector3(...r.offset)}}function EC(r,t){return{...Yr(r),outlineColor:yt(r.outlineColor,t),contourColor:yt(r.contourColor,t),outlineWidth:r.outlineWidth,contourWidth:r.contourWidth,outlineThreshold:r.outlineThreshold,contourThreshold:r.contourThreshold,outlineSmoothing:r.outlineSmoothing,contourFrequency:r.contourFrequency,contourDirection:r.contourDirection,positionalLines:r.positionalLines,compensation:r.compensation}}function DC(r,t){return{...Yr(r),thickness:r.thickness,ior:r.ior,roughness:r.roughness}}var zn=class extends pt{};var gg=require("three");var mg=require("three");var Gu=new Map,Ua={url:"head",time:0,data:null,next:null,prev:null},Ai={url:"tail",time:1/0,data:null,next:null,prev:null};Ua.next=Ai;Ai.prev=Ua;var dg=0;function hg(r){if(typeof r=="string")return r;let t=Date.now(),e=Gu.get(r);return e===void 0?(e={url:URL.createObjectURL(new Blob([r])),data:r,time:t,next:null,prev:null},Gu.set(r,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Ai.prev,e.next=Ai,Ai.prev.next=e,Ai.prev=e,t-dg>1e3*10&&(dg=t+1e3,setTimeout(()=>{let n=Date.now(),o=Ua.next;for(;o.time<n-1e3*10;)URL.revokeObjectURL(o.url),Gu.delete(o.data),o=o.next,o.prev=Ua,Ua.next=o},900)),e.url}var _i=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=hg(t),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let n of e){let o=this[n];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()})}getTexture(t){let e=this[t];if(e)return e;{let n=new mg.Texture(this.img,void 0,t,t);return this.loaded&&(n.needsUpdate=!0),this[t]=n,n}}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 bo=class extends _i{};var jn=class extends Ge{};var Uu={noise:["noiseType"],texture:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Vu={depth:["colors"]};function BC(r,t,e){let n=Uu[r.type],o=Vu[r.type];if(o!==void 0){let i=r.color;if(o.includes(t)){let a=i[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return n!==void 0?n.includes(t):!1}function zu(r,t,e){let n=e.uniforms[`f${e.id}_texture`];if(!n)return!1;let o=!1,i=r;if("image"in i){let a=i.image,s=t.image(a),l=n;l instanceof bo||l.image.dispose(),l.image=s}if("wrapping"in i){let a=n;a.wrap=i.wrapping}if("repeat"in i||"offset"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),s.updateMatrix()}return o}function yg(r,t,e,n){let o=!1;for(let[i,a]of Object.entries(r)){if(!i||a===void 0||ju(i,e,n))continue;e.visible=n.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof jn))switch(o=o||BC(e,i,a),s.constructor){case Ee:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof zn?s.value=new pt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case pr:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof zn?s.value=new pt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case xt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case At:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case jt:{zu(a,t,e);break}case wr:{s.value=a.map(l=>new gg.Vector4(...l));break}default:{s.value=a;break}}}return o}var Hu=class extends he{constructor(e,n,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=n,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Hu.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),n)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Va=Hu;Va.Nodes=function(){return{matcap:new Z(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
1085
1085
|
vec3 viewDir = normalize( vViewPosition );
|
|
1086
1086
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
1087
1087
|
vec3 y = cross( viewDir, x );
|
|
@@ -1093,14 +1093,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1093
1093
|
|
|
1094
1094
|
return matcapColor.rgb;
|
|
1095
1095
|
}
|
|
1096
|
-
`)}}();var
|
|
1096
|
+
`)}}();var za=class extends jn{constructor(e,n){super("t");this.image=e;this.wrap=n}get value(){return this.image.getTexture(this.wrap)}};var vg=require("three");var Ul=class extends jn{constructor(e){super("v3");this.image=e;this._value=new vg.Vector3}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var Wu=class extends he{constructor(e,n,o,i,a,s,l,u,c,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=n,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=u,this.offset=c,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Wu.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},ja=Wu;ja.Nodes=function(){let e=new Z(`float rand(float n) {
|
|
1097
1097
|
return fract(sin(n) * 43758.5453123);
|
|
1098
|
-
}`),
|
|
1098
|
+
}`),n=new Z(`float hash1(float p) {
|
|
1099
1099
|
p = fract(p * 0.011);
|
|
1100
1100
|
p *= p + 7.5;
|
|
1101
1101
|
p *= p + p;
|
|
1102
1102
|
return fract(p);
|
|
1103
|
-
}`),o=new
|
|
1103
|
+
}`),o=new Z(`float valueNoise(vec3 x) {
|
|
1104
1104
|
const vec3 step = vec3(110, 241, 171);
|
|
1105
1105
|
|
|
1106
1106
|
vec3 i = floor(x);
|
|
@@ -1115,13 +1115,13 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1115
1115
|
mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
|
|
1116
1116
|
mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
|
|
1117
1117
|
mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
|
|
1118
|
-
}`,[
|
|
1118
|
+
}`,[n]),i=new Z(`vec3 hash3(vec3 x) {
|
|
1119
1119
|
x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
|
|
1120
1120
|
dot(x,vec3(269.5, 183.3, 246.1)),
|
|
1121
1121
|
dot(x,vec3(113.5, 271.9, 124.6)));
|
|
1122
1122
|
|
|
1123
1123
|
return fract(sin(x)*43758.5453123);
|
|
1124
|
-
}`),
|
|
1124
|
+
}`),a=new Z(`vec3 voronoiNoise(in vec3 x)
|
|
1125
1125
|
{
|
|
1126
1126
|
vec3 p = floor(x);
|
|
1127
1127
|
vec3 f = fract(x);
|
|
@@ -1152,7 +1152,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1152
1152
|
|
|
1153
1153
|
return vec3(sqrt(res), abs(id));
|
|
1154
1154
|
}
|
|
1155
|
-
`,[i]);return{toon:new
|
|
1155
|
+
`,[i]);return{toon:new Z(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
|
|
1156
1156
|
float t = 0.0;
|
|
1157
1157
|
float shadow = 1.0;
|
|
1158
1158
|
|
|
@@ -1329,5 +1329,9 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1329
1329
|
|
|
1330
1330
|
return color.xyz;
|
|
1331
1331
|
|
|
1332
|
-
}`,[mt.simplex,e,o,s])}}();var gm=require("three");function hm(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Da=class extends Dn{constructor(e,r){super(new gm.Matrix3);this.repeat=e;this.offset=r;hm(this.value,e,r)}updateMatrix(){hm(this.value,this.repeat,this.offset)}};var Ar=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)vc(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Cr.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 Ma(i),c=new Da(r.texture.repeat,r.texture.offset),p=new Y(r.crop?1:0),l=new xe(r.projection??0),u=new xe(["x","y","z"].indexOf(r.axis)??0),d=new xe(r.side??0),f=new st(r.size?new Oe.Vector2(r.size[0],r.size[1]):new Oe.Vector2(100,100)),m=new Y(r.alpha??1),h=new xe(r.mode??0),g=new Ei(s,a,p,l,u,d,f,c,m,h),x=new _e(g.calpha,"f");return new ot(t,e,r,{texture:s,textureSize:a,crop:p,projection:l,axis:u,side:d,size:f,mat:c,alpha:m,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 Y(r.alpha??1),c=new xe(r.mode??0),p=new Hi(s,a,c),l=new _e(p.calpha,"f");return new ot(t,e,r,{texture:s,alpha:a,mode:c},p,c,l)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new ut(new Oe.Vector3(...r.offset)),s=new Y(r.scale??10),a=new Y(r.intensity??8),c=new Y(r.movement??1),p=new xe(r.noiseType??0),l=new Di(a,c,i,s,p);return new $i(t,e,r,{offset:i,scale:s,intensity:a,movement:c,noiseType:p},l)}else throw new Error;else return BS(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:fm(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?xc(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}},ot=class extends Ar{constructor(e,r,o,i,s,a,c){super(e,r,o,i);this.color=s;this.mode=a;this.alpha=c}},$i=class extends Ar{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},Cr=class extends Ar{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 Y(o.alpha),c=new xe(o.mode),p;if(o.category==="lambert"){s=new Vi;let l=new Ce(i.color(o.emissive)??0);p={emissive:l},s.emissive=l}else if(o.category==="phong"){s=new Oa;let l=new Y(o.shininess??30),u=new Ce(i.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="toon"){s=new ji;let l=new Y(o.shininess??30),u=new Ce(i.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="physical"){s=new zi;let l=new Y(o.roughness??.3),u=new Y(o.metalness??0),d=new Y(o.reflectivity??.5);p={roughness:l,metalness:u,reflectivity:d},s.roughness=l,s.metalness=u,s.reflectivity=d}else s=new Lo,p={};return s.alpha=new Y(1),s.shadingAlpha=a,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new Cr(e,r,o,s,p)}};function ym(n){let t=n instanceof Ar?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function DS(n,t,e,r){switch(n.type){case"color":{let o=new Ce(r.color??5855577),i=new Y(r.alpha??1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let a=new xe(r.mode??0);return o.alpha=i,new ot(t,e,n,{color:o,alpha:i,mode:a},o,a,s)}case"fresnel":{let o=new Ce(r.color??16777215),i=new Y(r.bias??.1),s=new Y(r.scale??1),a=new Y(r.intensity??2),c=new Y(r.factor??1),p=new Y(r.alpha??1),l=new xe(r.mode??0),u=new Ni(o,i,s,a,c,p,l),d=new _e(u.calpha,"f");return new ot(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 Y(r.filmThickness??30),i=new Y(r.movement??0),s=new ut(r.wavelengths??new Oe.Vector3(0,0,0)),a=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new ut(r.offset??new Oe.Vector3(0,0,0)),l=new Y(r.alpha??1),u=new Pi(o,i,s,a,c,p,l),d=new _e(u.calpha,"f"),f=new xe(r.mode??0);return new ot(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:c,offset:p,alpha:l,mode:f},u,f,d)}case"transmission":{let o=new Y(r.thickness??10),i=new Y(r.ior??1.5),s=new Y(r.roughness??.5),a=pt.transmissionSize,c=pt.transmissionRenderTarget,p=pt.transmissionRenderTargetDepth,l=window.innerWidth,u=window.innerHeight,d=l>=u?new st(u/l,1):new st(1,l/u),f=new Y(r.alpha??1),m=new Li(o,i,s,a,c,p,d,f),h=new _e(m.calpha,"f"),g=new xe(r.mode??0);return new ot(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:f,mode:g},m,g,h)}case"toon":{let o=new xe(r.positioning??0),i;r.colors?i=new rr(r.colors.length,r.colors):(i=new rr(10,new Oe.Vector4(0,0,0,1)),i.value[1]=new Oe.Vector4(1,1,1,1));let s;r.steps?s=new tr(r.steps.length,r.steps):(s=new tr(10,1),s.value[0]=0);let a=new ut(r.source??new Oe.Vector3(0,0,0)),c=new so(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),l=new Y(r.noiseScale??1),u=new qt(r.shadowColor),d=new ut(r.offset??new Oe.Vector3(0,0,0)),f=new Y(r.alpha??1),m=new qi(o,i,s,a,c,p,l,u,d,f),h=new _e(m.calpha,"f"),g=new xe(r.mode??0);return new ot(t,e,n,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:c,noiseStrength:p,noiseScale:l,shadowColor:u,offset:d,alpha:f,mode:g},m,g,h)}case"outline":{let o=new Ce(r.outlineColor??16777215),i=new Ce(r.contourColor??16777215),s=new Y(r.outlineWidth??.1),a=new Y(r.contourWidth??.1),c=new Y(r.outlineThreshold??.1),p=new Y(r.contourThreshold??.1),l=new Y(r.outlineSmoothing??.1),u=new Y(r.contourFrequency??.1),d=new ut(r.contourDirections??new Oe.Vector3(0,1,0)),f=new so(r.positionalLines??!1),m=new so(r.compensation??!0),h=pt.normalRenderTarget,g=pt.normalRenderTargetDepth,x=pt.pixelRatioNode,v=pt.resolution,A=new Y(r.alpha??1),S=new Ii(o,i,s,a,c,p,l,u,d,f,m,v,h,g,x,A),b=new _e(S.calpha,"f"),D=new xe(r.mode??0);return new ot(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:p,outlineSmoothing:l,contourFrequency:u,contourDirection:d,positionalLines:f,compensation:m,alpha:A,mode:D},S,D,b)}case"depth":{let o=new xe(r.gradientType??0),i=new so(r.smooth??!1),s=new Y(r.near??50),a=new Y(r.far??200),c=new Y(r.isVector??1),p=new Y(r.isWorldSpace??0),l=new ut(r.origin??new Oe.Vector3),u=new ut(r.direction??new Oe.Vector3),d;r.colors?d=new rr(r.colors.length,r.colors):(d=new rr(2,new Oe.Vector4(0,0,0,1)),d.value[1]=new Oe.Vector4(1,1,1,1));let f;r.steps?f=new tr(r.steps.length,r.steps):(f=new tr(2,1),f.value[0]=0);let m=new Y(r.alpha??1),h=new xe(r.mode??0),g=new Oi(o,i,s,a,c,p,l,u,d,f,m),x=new _e(g.calpha,"f");return new ot(t,e,n,{gradientType:o,smooth:i,near:s,far:a,isVector:c,isWorldSpace:p,origin:l,direction:u,colors:d,steps:f,alpha:m,mode:h},g,h,x)}case"noise":{let o=new Y(r.scale??1),i=new ut(r.size??new Oe.Vector3(100,100,100)),s=new Y(r.move??1),a=new st(r.fA??new Oe.Vector2(1.7,9.2)),c=new st(r.fB??new Oe.Vector2(8.3,2.8)),p=new st(r.distortion??new Oe.Vector2(1,1)),l=new qt(r.colorA),u=new qt(r.colorB),d=new qt(r.colorC),f=new qt(r.colorD),m=new Y(r.alpha??1),h=new xe(r.mode??0),g=new xe(r.noiseType??0),x=new Ai(o,i,s,a,c,p,l,u,d,f,m,g),v=new _e(x.calpha,"f");return new ot(t,e,n,{scale:o,size:i,move:s,fA:a,fB:c,distortion:p,colorA:l,colorB:u,colorC:d,colorD:f,alpha:m,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new ut(r.cnormal??new Oe.Vector3(1,1,1)),i=new Y(r.alpha??1),s=new xe(r.mode??0),a=new Ri(o,i),c=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new ot(t,e,n,{cnormal:o,alpha:i,mode:s},a,s,c)}case"gradient":{let o=new xe(r.gradientType??0),i=new so(r.smooth??!1),s;r.colors?s=new rr(r.colors.length,r.colors):(s=new rr(10,new Oe.Vector4(0,0,0,1)),s.value[1]=new Oe.Vector4(1,1,1,1));let a;r.steps?a=new tr(r.steps.length,r.steps):(a=new tr(10,1),a.value[0]=0);let c=new st(r.offset??new Oe.Vector2(0,0)),p=new st(r.morph??new Oe.Vector2(0,0)),l=new Y(r.angle??0),u=new Y(r.alpha??1),d=new xe(r.mode??0),f=new Bi(o,i,s,a,c,p,l,u),m=new _e(f.calpha,"f");return new ot(t,e,n,{gradientType:o,smooth:i,colors:s,steps:a,offset:c,morph:p,angle:l,alpha:u,mode:d},f,d,m)}default:{let o=new Ce(1,0,0,1),i=new Y(1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let a=new xe(0);return o.alpha=i,new ot(t,e,n,{color:o,alpha:i,mode:a},o,a,s)}}}function BS(n,t,e,r){let o=lm(e,r);return DS(e,n,t,o)}function vc(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 Rt=class extends Ba.ShaderMaterial{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.transparent=!0,this.reset(e,r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,r){let o=e.layers??Yt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Ar.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 Cr),this.lightLayer===void 0&&(this.lightLayer=new Cr(0,"",eo.defaultData("light","basic"),new Lo,{})),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=Ar.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=Ar.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 ot),r=this.layers.findIndex(o=>o instanceof Cr);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 ot&&(o=new Mi(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new _e("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Cr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ot&&(e=new Mi(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 $i);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new It(r,e[o].position,It.ADD),r=new It(r,new Y(.5).setReadonly(!0),It.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,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(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.category.toUpperCase()}",`;else{let o=(gc[r.type]??[]).map(a=>r[a]),i=(yc[r.type]??[]).map(a=>r[a]?.length??0),s=[...o,...i];s.length?e+=`["${r.type}", "${s.join('","')}"],`:e+=`"${r.type}",`}return e=e.slice(0,-1)+"]",e}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 Ia;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>Ba.NormalBlending,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Rt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});var Ft=require("three");function ES(n){if(n.geometry.attributes.extrudeNormal||!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 Ft.Vector3(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new Ft.Vector3})}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 Ft.Float32BufferAttribute(o,3))}function GS(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 Ft.Vector3;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 Ft.Float32BufferAttribute(e,3))}function co(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 instanceof Rt)||n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?GS(n):ES(n)}}function uo(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=[Ft.MathUtils.seededRandom(r),Ft.MathUtils.seededRandom(r+1e4),Ft.MathUtils.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new Ft.BufferAttribute(e,3))}var lt=class extends Wt(Ea.Mesh){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Ea.Matrix4;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=Ql[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(),co(this),r.getAttribute("randomColor")&&uo(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=vi(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 To(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new To(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&&(Zt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),yr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)gr(e)&&(e.freeBooleanPointer(),yr(e)&&e.invalidateUpstreamBooleanData())}};var RS=new po.Vector3(0,0,1),xm=new po.Vector3,vm=new po.Vector3,bm=new po.Matrix3,Fn=class extends lt{constructor(e=xt.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new po.EventDispatcher;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),bm.getNormalMatrix(this.matrixWorld),xm.copy(RS).applyMatrix3(bm).normalize(),vm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(xm,vm)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=xt.create(Object.assign({},i,{shape:r})),a=new Fn(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){lt.prototype.raycast.call(this,e,r)}};var Nr=(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=Qe(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 Vn=new Ge.Vector3,wc=new Ge.Vector3,zr=class extends Nr(Wt(Ge.Camera),aa){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=xo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Ge.OrthographicCamera(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new Ge.PerspectiveCamera(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 zr().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(Vn),this.targetOffset=Vn.distanceTo(e)}getTarget(e=new Ge.Vector3){return this.getWorldDirection(wc),this.getWorldPosition(Vn),wc.multiplyScalar(this.targetOffset),e.copy(Vn).add(wc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Vn),Vn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Ge.Quaternion),r=new Ge.Vector3(0,0,1).applyQuaternion(e),o=new Ge.Vector3().copy(Ge.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Ge.Vector3().copy(Ge.Object3D.DefaultUp).projectOnPlane(r),s=new Ge.Vector3().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Ge.Vector3),i=e.getWorldDirection(new Ge.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Ge.Vector3),i=this.getWorldDirection(new Ge.Vector3).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 nn(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.type==="PerspectiveCamera"?(this.zoom=this.perspCamera.zoom,this.fov=this.perspCamera.fov,this.near=this.perspCamera.near):(this.near=this.orthoCamera.near,this.zoom=this.orthoCamera.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}};var Xi=require("three");var Sm=new Xi.Matrix4;var Ga=class extends lt{constructor(e=new Xi.BufferGeometry,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,r=!0){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];yr(s)&&s.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(Jf(s)&&s.booleanExclude===!1&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=Zt.getMeshSet(s.geometry,e===!0,r)),s.booleanMeshSetAddress===-1)return;Zt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else yr(s)&&s.needsTransformForDownstream===!0?(Zt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(Sm.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Zt.transformMeshSet(s.booleanMeshSetAddress,Sm),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Zt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Xi.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Zt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,co(this),uo(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()}};var wm=require("three");var Mo=class extends Nr(Wt(wm.Group),mn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Mo().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};var Do=require("three");var zn=class extends Nr(Wt(Do.DirectionalLight),fn){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,this.layers.enable(3);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 Do.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new zn().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 Do.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Do.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Do.CameraHelper&&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&&Kf(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}};var ht=require("three");var Un=class extends Nr(Wt(ht.PointLight),hn){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,this.layers.enable(3);let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new ht.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ht.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new ht.Box3(i,s),c=new ht.Box3Helper(a,new ht.Color(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new Un().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 ht.Box3Helper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ht.Box3Helper&&(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 ht.Box3Helper){let o=this.shadow.camera,i=new ht.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ht.Vector3(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}};var Ot=require("three");var _m=new Ot.Vector3,Tm=new Ot.Vector3,Am=new Ot.Quaternion,jn=class extends Nr(Wt(Ot.SpotLight),ci){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,this.layers.enable(3);let o=this.shadow.camera;o.fov=Ot.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Ot.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new jn().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 Ot.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ot.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ot.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Tm.setFromMatrixPosition(this.matrixWorld),Am.setFromRotationMatrix(this.matrixWorld),_m.copy(this.up).applyQuaternion(Am).negate().multiplyScalar(this.distance),this.target.position.copy(Tm).add(_m),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}};var Cm=n=>n.tagName==="VIDEO",kn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;Cm(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];ym(s)&&kn.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,a=r.image;Cm(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 Ra=class extends lt{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&kn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Hn=class extends lt{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Fa=class extends Hn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var bt=require("three");var Lm=Mc(Pm());var _c;ba.then(n=>{_c=n});var Om=new bt.Matrix4,FS=new bt.Matrix4,VS=new bt.Matrix4,or=new bt.Box3,fo=new bt.Vector3,zS=new bt.Matrix4,US=new bt.Matrix4,Wn=class extends lt{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new bt.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new bt.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=Ht.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new Wn(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}=Ht.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,co(this),uo(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Ht.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Ht.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Ht.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Ht.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,lt.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,Lm.SVD)(r),a=Om.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=FS.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=VS.copy(c).transpose();this.shearScale=zS.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=US.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 bt.Sphere);let r=e.attributes.position,o=e.boundingSphere.center;or.setFromBufferAttribute(r),or.getCenter(o),e.boundingSphere.radius=o.distanceTo(or.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),or.getSize(fo);let i={width:fo.x,height:fo.y,depth:fo.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;or.min.set(e[0],e[2],e[4]),or.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(or.min.applyMatrix4(this.shearScaleInv),or.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new bt.Sphere);let o=r.boundingSphere.center;or.getCenter(o),r.boundingSphere.radius=o.distanceTo(or.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),or.getSize(fo);let i={width:fo.x,height:fo.y,depth:fo.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(_c.free_bvh(this.subdivPointer),_c.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,Im(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Im(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 Im(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Om.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}var mo=require("three");function Mm(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=mo.FrontSide:t.side===1?n.side=mo.BackSide:n.side=mo.DoubleSide)}function jS(n,t){if(Array.isArray(n.material))for(let e of n.material)Mm(e,t);else{let e=n.material;Mm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Dm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Wn.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new mo.BufferGeometry:Sa(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Zs.is2DParametricMesh(o.userData.type)?r=new Ra(o,i):o?.userData.type==="VectorGeometry"?r=new Fn(o,i):t.geometry.type==="NonParametricGeometry"?r=new Fa(o,i):t.geometry.type==="BooleanGeometry"?(r=new Ga(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Hn(o,i),r.uuid=n,r.fromState(t,e)}return jS(r,t),r}var $t=require("three"),Bm=require("three/examples/jsm/loaders/FontLoader.js"),qe=class extends $t.Mesh{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},c=new $t.MeshBasicMaterial({color:0,opacity:1,visible:!0,transparent:!0,side:$t.DoubleSide})){let p=qe.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 $t.Vector2,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 qe._fontPath}static set FONTS_PATH(e){qe._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new $t.Vector3(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=qe.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=qe.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=qe.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 qe(e).copy(this)}static loadFont(e){return new Promise(function(r,o){qe.fontCache[e]?r(qe.fontCache[e]):new Bm.FontLoader().load(qe.FONTS_PATH+e+".json",s=>{qe.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(qe.charCache[e]){if(qe.charCache[e][o]&&qe.charCache[e][o].fontFamily===r)return qe.charCache[e][o]}else qe.charCache[e]={};let i=qe.fontCache[r],s=i.generateShapes(e,1);return qe.charCache[e][o]={geometry:new $t.ShapeBufferGeometry(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},qe.charCache[e][o]}},nr=qe;nr.charCache={},nr.fontCache={},nr._fontPath="/_assets/_fonts/";var Pr=require("three");var Tc=require("three"),za=new Tc.Vector2,Bo=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new Tc.Vector2(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){za.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(za),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),za.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(za),e)}clone(){let t=new Bo(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 Ac=class extends lt{constructor(e){super(e,new Pr.MeshBasicMaterial({transparent:!0,opacity:1,visible:!1,side:Pr.DoubleSide}));this.objectType="TextFrame";this.charContainer=new Pr.Object3D,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 Pr.Vector3(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=va.create({parameters:{width:r.width,height:r.height}}),s=new Ac(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await nr.loadFont(o),r.text=e;let i=r.textOrigin,s=new Pr.MeshBasicMaterial({visible:r.visible,transparent:!0,side:Pr.DoubleSide}),a=e.split(`
|
|
1333
|
-
`),c=0;this.userData.textFrame.textLines=a.map((p,l)=>{let u=new Bo(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let f={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},m=s.clone();m.color=r.hexColor,m.opacity=r.opacity;let h=new nr(f,m);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 nr&&(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 Bo(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 nr.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 nr.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=Qe(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}},Eo=Ac;Eo.VerticalAlign=xl,Eo.HorizontalAlign=yl,Eo.TextTransform=vl;function Em(n,t,e){return t.type==="Mesh"?Dm(n,t,e):t.type==="TextFrame"?Eo.createFromState(n,t,e):t.type==="Empty"?Mo.createFromState(n,t):t.type==="PointLight"?Un.createFromState(n,t,e):t.type==="SpotLight"?jn.createFromState(n,t,e):t.type==="DirectionalLight"?zn.createFromState(n,t,e):sn.is(t.type)?zr.createFromState(n,t):(console.error(t),new Mo)}var Go=class extends Rt{};var Ur=require("three");function Gm(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,uo(n),co(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function Rm(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),e}function Fm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Ur.Mesh&&e.objectType!=="TextFrame")if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Gm(e,e.material[r])&&(t=!0);else Gm(e,e.material)&&(t=!0)}),t}function Vm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Ur.Mesh)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Rm(e,e.material[r])&&(t=!0);else Rm(e,e.material)&&(t=!0)}),t}function zm(n){"material"in n&&HS(n.material),"geometry"in n&&n.geometry.dispose()}function HS(n){Dc(n).forEach(t=>{t instanceof Go||t.dispose()})}var WS=new Ur.Raycaster,qS=new Ur.Matrix4,$S=new Ur.Ray;function Um(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=qS.copy(o.matrixWorld).invert(),s=$S.copy(t.ray).applyMatrix4(i),a=n.matrixWorld;s.applyMatrix4(a);let c=WS;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 jm=new Ir.Vector3,Cc=class extends Aa(Ir.Scene){constructor(e,r){super();this.objectType="Scene";this.backupFog=new Ir.Fog(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.bgColor=new rt(1,1,1,1);this.entityByUuid={};this.ambientLight=new Ir.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,r),this.matrixAutoUpdate=!1}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Vm(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Fm(this),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 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(Qe(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 zr&&this.switchActiveCamera(o)}this.traverse(o=>{yr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{zm(e)});for(let e of this.children)br(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=zr.createFromState(Cc.PERSONAL_CAMERA_ID,{...ea.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)br(s)&&!s.raycastLock&&s.visible&&((gr(s)||_a(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),Um(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)br(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)br(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=Qe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){Yf(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Qe(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.fogUseBGColor===!0&&(this.backupFog.color=e)}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=Em(e,r,s);return a&&(this.entityByUuid[e]=a,i.add(a),yr(i)&&gr(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 Ir.Box3;return o.setFromPoints(r),o.getCenter(jm),jm}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 lt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof Rt&&e(r.material[o]);else r.material instanceof Rt&&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})})}},Ki=Cc;Ki.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var qm=Mc(km());var Hm=new Map;function Wm(n){if(typeof n=="string")return n;let t=Hm.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},Hm.set(n,t)),t.url}var qn=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:Wm(t),format:"wav"},this.sound=new qm.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 Qi=class{constructor(t,e={}){this.deletedMaterial=new Go(Yt.defaultTwoLayerData("basic"),this);this.deletedImage=new Oo(oa.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o.data);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 Go(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data);this.penumbraSize=t.penumbraSize}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 Rt(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new Oo(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 Rn(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 ao(e.r,e.g,e.b,e.a):this.colors[t]=new ao(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 rt(0,0,0,0))}else return"a"in t?new rt(t.r,t.g,t.b,t.a):new rt(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 qn)return e;{let r=new qn({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._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof qn&&e.dispose()}),this.audios={}}},Hj=new Qi(ra.emptyData());var $m=require("three/examples/jsm/loaders/DRACOLoader.js");var ho;function XS(){return ho||(ho=new $m.DRACOLoader,ho.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ho.decoderPending}async function YS(n){if(ho){let t={attributeIDs:ho.defaultAttributeIDs,attributeTypes:ho.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ho.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 Xm(n,t){let[e,r]=tl($s.deserialize(new Uint8Array(n)));Ed(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 XS();for(let i of o){let s=await YS(Xt(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}var KS=require("three"),QS=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Ym(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}var Zi=require("three");function Km(n){let t=new Set;return n.traverse(e=>{if(gr(e))if(Fe(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(ZS(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Zi.Color,specularColor:new Zi.Color});let o=0;e.onBeforeCompile=(i,s)=>{r&&r(i,s),i.uniforms=Object.assign({},Zi.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(a=>{if(i.uniforms.transmissionSamplerMap.value){let c=a.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else JS(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function ZS(n){return n.getLayersOfType("transmission").length>0}function JS(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 Qm(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Zm(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}var Jm=require("three/examples/jsm/utils/BufferGeometryUtils.js");function eh(n){let t=[];return n.traverse(e=>{e instanceof To&&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&&Ym(c),c}),s=(0,Jm.mergeBufferGeometries)(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=>{Nc(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?Nc(e.material):"materials"in e&&e.materials.forEach(r=>{Nc(r)})})}function Nc(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.",ja=class extends ka.Loader{load(t,e,r,o=console.error){let i=new ka.FileLoader(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 Xm(t,rh),r=new Qi(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ki(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&&Xf(s)&&Object.assign(s,{makeDefault:!0})}return o=eh(o),o=Km(o),o=Qm(o),o=Zm(o),o=th(o),o}};
|
|
1332
|
+
}`,[Lt.simplex,e,o,a])}}();var bg=require("three");function xg(r,t,e){r.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Vl=class extends wi{constructor(e,n){super(new bg.Matrix3);this.repeat=e;this.offset=n;xg(this.value,e,n)}updateMatrix(){xg(this.value,this.repeat,this.offset)}};var $r=class{constructor(t,e,n,o){this.id=t;this.uuid=e;this.data=n;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in n)ju(i,this,n)}get type(){return this.data.type}static create(t,e,n,o){if(n.type==="light")return Kr.createLigherLayer(t,e,n,o);if(n.type==="texture"){let i=o.image(n.texture.image),a=new za(i,n.texture.wrapping),s=new Ul(i),l=new Vl(n.texture.repeat,n.texture.offset),u=new J(n.crop?1:0),c=new Ae(n.projection??0),p=new Ae(["x","y","z"].indexOf(n.axis)??0),f=new Ae(n.side??0),d=new xt(n.size?new ze.Vector2(n.size[0],n.size[1]):new ze.Vector2(100,100)),h=new J(n.alpha??1),m=new Ae(n.mode??0),g=new Ma(a,s,u,c,p,f,d,l,h,m),v=new Pe(g.calpha,"f");return new ft(t,e,n,{texture:a,textureSize:s,crop:u,projection:c,axis:p,side:f,size:d,mat:l,alpha:h,mode:m},g,m,v)}else if(n.type==="matcap"){let i=o.image(n.texture.image),a=new za(i,n.texture.wrapping),s=new J(n.alpha??1),l=new Ae(n.mode??0),u=new Va(a,s,l),c=new Pe(u.calpha,"f");return new ft(t,e,n,{texture:a,alpha:s,mode:l},u,l,c)}else if(n.type==="displace")if(n.displacementType==="noise"){let i=new At(new ze.Vector3(...n.offset)),a=new J(n.scale??10),s=new J(n.intensity??8),l=new J(n.movement??1),u=new Ae(n.noiseType??0),c=new Na(s,l,i,a,u);return new Ha(t,e,n,{offset:i,scale:a,intensity:s,movement:l,noiseType:u},c)}else throw new Error;else return RC(t,e,n,o)}updateByOp(t,e,n){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:yg(o.props,n,this,e)}else if(o.path[0]==="texture")return"texture"in e?zu(o.props,n,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 n=`f${this.id}_${t}`;this.hasValueByKey(n)&&e!==void 0&&(this.uniforms[n].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 n=/f\d+_(.*)/.exec(t);if(n&&n.length>1)return n[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let n=this.getName(e);n&&t.push(n)}return t}},ft=class extends $r{constructor(e,n,o,i,a,s,l){super(e,n,o,i);this.color=a;this.mode=s;this.alpha=l}},Ha=class extends $r{constructor(e,n,o,i,a){super(e,n,o,i);this.position=a}},Kr=class extends $r{constructor(e,n,o,i,a){super(e,n,o,a);this.data=o;this.node=i}static createLigherLayer(e,n,o,i){let a,s=new J(o.alpha),l=new Ae(o.mode),u;if(o.category==="lambert"){a=new Fa;let c=new Ee(i.color(o.emissive)??0);u={emissive:c},a.emissive=c}else if(o.category==="phong"){a=new Gl;let c=new J(o.shininess??30),p=new Ee(i.color(o.specular)??1118481);u={shininess:c,specular:p},a.shininess=c,a.specular=p}else if(o.category==="toon"){a=new Ga;let c=new J(o.shininess??30),p=new Ee(i.color(o.specular)??1118481);u={shininess:c,specular:p},a.shininess=c,a.specular=p}else if(o.category==="physical"){a=new Ra;let c=new J(o.roughness??.3),p=new J(o.metalness??0),f=new J(o.reflectivity??.5);u={roughness:c,metalness:p,reflectivity:f},a.roughness=c,a.metalness=p,a.reflectivity=f}else a=new xo,u={};return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=l,u.alpha=a.shadingAlpha,u.mode=a.shadingBlend,new Kr(e,n,o,a,u)}};function Sg(r){let t=r instanceof $r?r.type:r;return t==="texture"||t==="displace_map"||t==="matcap"}function FC(r,t,e,n){switch(r.type){case"color":{let o=new Ee(n.color??5855577),i=new J(n.alpha??1),a=new Pe("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");a.keywords.alpha=i;let s=new Ae(n.mode??0);return o.alpha=i,new ft(t,e,r,{color:o,alpha:i,mode:s},o,s,a)}case"fresnel":{let o=new Ee(n.color??16777215),i=new J(n.bias??.1),a=new J(n.scale??1),s=new J(n.intensity??2),l=new J(n.factor??1),u=new J(n.alpha??1),c=new Ae(n.mode??0),p=new Ca(o,i,a,s,l,u,c),f=new Pe(p.calpha,"f");return new ft(t,e,r,{color:o,bias:i,scale:a,intensity:s,factor:l,alpha:u,mode:c},p,c,f)}case"rainbow":{let o=new J(n.filmThickness??30),i=new J(n.movement??0),a=new At(n.wavelengths??new ze.Vector3(0,0,0)),s=new J(n.noiseStrength??0),l=new J(n.noiseScale??1),u=new At(n.offset??new ze.Vector3(0,0,0)),c=new J(n.alpha??1),p=new Aa(o,i,a,s,l,u,c),f=new Pe(p.calpha,"f"),d=new Ae(n.mode??0);return new ft(t,e,r,{filmThickness:o,movement:i,wavelengths:a,noiseStrength:s,noiseScale:l,offset:u,alpha:c,mode:d},p,d,f)}case"transmission":{let o=new J(n.thickness??10),i=new J(n.ior??1.5),a=new J(n.roughness??.5),s=_t.transmissionSize,l=_t.transmissionRenderTarget,u=_t.transmissionRenderTargetDepth,c=window.innerWidth,p=window.innerHeight,f=c>=p?new xt(p/c,1):new xt(1,c/p),d=new J(n.alpha??1),h=new Ia(o,i,a,s,l,u,f,d),m=new Pe(h.calpha,"f"),g=new Ae(n.mode??0);return new ft(t,e,r,{thickness:o,ior:i,roughness:a,aspectRatio:f,alpha:d,mode:g},h,g,m)}case"toon":{let o=new Ae(n.positioning??0),i;n.colors?i=new wr(n.colors.length,n.colors):(i=new wr(10,new ze.Vector4(0,0,0,1)),i.value[1]=new ze.Vector4(1,1,1,1));let a;n.steps?a=new Sr(n.steps.length,n.steps):(a=new Sr(10,1),a.value[0]=0);let s=new At(n.source??new ze.Vector3(0,0,0)),l=new Vn(n.isWorldSpace??!0),u=new J(n.noiseStrength??0),c=new J(n.noiseScale??1),p=new pr(n.shadowColor),f=new At(n.offset??new ze.Vector3(0,0,0)),d=new J(n.alpha??1),h=new ja(o,i,a,s,l,u,c,p,f,d),m=new Pe(h.calpha,"f"),g=new Ae(n.mode??0);return new ft(t,e,r,{positioning:o,colors:i,steps:a,source:s,isWorldSpace:l,noiseStrength:u,noiseScale:c,shadowColor:p,offset:f,alpha:d,mode:g},h,g,m)}case"outline":{let o=new Ee(n.outlineColor??16777215),i=new Ee(n.contourColor??16777215),a=new J(n.outlineWidth??.1),s=new J(n.contourWidth??.1),l=new J(n.outlineThreshold??.1),u=new J(n.contourThreshold??.1),c=new J(n.outlineSmoothing??.1),p=new J(n.contourFrequency??.1),f=new At(n.contourDirections??new ze.Vector3(0,1,0)),d=new Vn(n.positionalLines??!1),h=new Vn(n.compensation??!0),m=_t.normalRenderTarget,g=_t.normalRenderTargetDepth,v=_t.pixelRatioNode,x=_t.resolution,S=new J(n.alpha??1),w=new _a(o,i,a,s,l,u,c,p,f,d,h,x,m,g,v,S),b=new Pe(w.calpha,"f"),_=new Ae(n.mode??0);return new ft(t,e,r,{outlineColor:o,contourColor:i,outlineWidth:a,contourWidth:s,outlineThreshold:l,contourThreshold:u,outlineSmoothing:c,contourFrequency:p,contourDirection:f,positionalLines:d,compensation:h,alpha:S,mode:_},w,_,b)}case"depth":{let o=new Ae(n.gradientType??0),i=new Vn(n.smooth??!1),a=new J(n.near??50),s=new J(n.far??200),l=new J(n.isVector??1),u=new J(n.isWorldSpace??0),c=new At(n.origin??new ze.Vector3),p=new At(n.direction??new ze.Vector3),f;n.colors?f=new wr(n.colors.length,n.colors):(f=new wr(2,new ze.Vector4(0,0,0,1)),f.value[1]=new ze.Vector4(1,1,1,1));let d;n.steps?d=new Sr(n.steps.length,n.steps):(d=new Sr(2,1),d.value[0]=0);let h=new J(n.alpha??1),m=new Ae(n.mode??0),g=new Oa(o,i,a,s,l,u,c,p,f,d,h),v=new Pe(g.calpha,"f");return new ft(t,e,r,{gradientType:o,smooth:i,near:a,far:s,isVector:l,isWorldSpace:u,origin:c,direction:p,colors:f,steps:d,alpha:h,mode:m},g,m,v)}case"noise":{let o=new J(n.scale??1),i=new At(n.size??new ze.Vector3(100,100,100)),a=new J(n.move??1),s=new xt(n.fA??new ze.Vector2(1.7,9.2)),l=new xt(n.fB??new ze.Vector2(8.3,2.8)),u=new xt(n.distortion??new ze.Vector2(1,1)),c=new pr(n.colorA),p=new pr(n.colorB),f=new pr(n.colorC),d=new pr(n.colorD),h=new J(n.alpha??1),m=new Ae(n.mode??0),g=new Ae(n.noiseType??0),v=new wa(o,i,a,s,l,u,c,p,f,d,h,g),x=new Pe(v.calpha,"f");return new ft(t,e,r,{scale:o,size:i,move:a,fA:s,fB:l,distortion:u,colorA:c,colorB:p,colorC:f,colorD:d,alpha:h,mode:m,noiseType:g},v,m,x)}case"normal":{let o=new At(n.cnormal??new ze.Vector3(1,1,1)),i=new J(n.alpha??1),a=new Ae(n.mode??0),s=new Da(o,i),l=new Pe("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return l.keywords.alpha=i,new ft(t,e,r,{cnormal:o,alpha:i,mode:a},s,a,l)}case"gradient":{let o=new Ae(n.gradientType??0),i=new Vn(n.smooth??!1),a;n.colors?a=new wr(n.colors.length,n.colors):(a=new wr(10,new ze.Vector4(0,0,0,1)),a.value[1]=new ze.Vector4(1,1,1,1));let s;n.steps?s=new Sr(n.steps.length,n.steps):(s=new Sr(10,1),s.value[0]=0);let l=new xt(n.offset??new ze.Vector2(0,0)),u=new xt(n.morph??new ze.Vector2(0,0)),c=new J(n.angle??0),p=new J(n.alpha??1),f=new Ae(n.mode??0),d=new Pa(o,i,a,s,l,u,c,p),h=new Pe(d.calpha,"f");return new ft(t,e,r,{gradientType:o,smooth:i,colors:a,steps:s,offset:l,morph:u,angle:c,alpha:p,mode:f},d,f,h)}default:{let o=new Ee(1,0,0,1),i=new J(1),a=new Pe("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");a.keywords.alpha=i;let s=new Ae(0);return o.alpha=i,new ft(t,e,r,{color:o,alpha:i,mode:s},o,s,a)}}}function RC(r,t,e,n){let o=fg(e,n);return FC(e,r,t,o)}function ju(r,t,e){if(e.type==="displace"&&(r==="intensity"||r==="visible")){let n=t.uniforms[`f${t.id}_intensity`];return n?(n.value=e.intensity*(e.visible?1:0),n):void 0}if(e.type!=="displace"&&(r==="alpha"||r==="visible")){let n=t.uniforms[`f${t.id}_alpha`];if(!n)return;if(n.value=e.alpha*(e.visible?1:0),e.type==="outline"&&r=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return n}}var Qt=class extends zl.ShaderMaterial{constructor(e,n){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.transparent=!0,this.reset(e,n)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,n){let o=e.layers??Zt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>$r.create(this.layerIdGen++,i.id,i.data,n)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(n)}getLayersOfType(e){return this.layers.filter(n=>n.type===e)}getLayerByUuid(e){return this.layers.find(n=>n.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(n=>n instanceof Kr),this.lightLayer===void 0&&(this.lightLayer=new Kr(0,"",Dn.defaultData("light","basic"),new xo,{})),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,n,o){if(this.data=n,e.path[0]==="layers"){let i=e.path[1];if(i===void 0){if(this.layers.reverse(),e.type===4){let a=$r.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,a)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let a=this.layers.findIndex(l=>l.uuid===e.id),s=this.layers[a];this.layers.splice(a,1),this.layers.splice(e.localIndex,0,s)}this.layers.reverse(),this.onUpdate(o)}else{let a=this.layers.find(s=>s.uuid===i);if(a){let s=n.layers.data(i);if(a.updateByOp({...e,path:e.path.slice(2)},s,o)){let u=$r.create(this.layerIdGen++,i,s,o);this.layers.splice(this.layers.findIndex(c=>c.uuid===i),1,u),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ft),n=this.layers.findIndex(o=>o instanceof Kr);if(e!==-1&&e<n){let o=this.layers[e].color;for(let i=e+1;i<n;++i){let a=this.layers[i];a instanceof ft&&(o=new La(o,a.color,a.alpha,a.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Pe("outgoingLight","f"),n=this.layers.findIndex(o=>o instanceof Kr);if(this.layers.length>n+1){for(let o=n+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ft&&(e=new La(e,i.color,i.alpha,i.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(n=>n instanceof Ha);if(e.length>0){let n=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(n=new Ht(n,e[o].position,Ht.ADD),n=new Ht(n,new J(.5).setReadonly(!0),Ht.MUL));this.fragment.position=n}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,n){this.build({renderer:n}),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,n){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let a=o(i.uniforms[`f${i.id}_intensity`].value,e,n);i.uniforms[`f${i.id}_intensity`].value=a}}restoreClampedUniforms(){for(let e of this.layers)e.type==="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){let e="[";for(let{data:n}of this.data.layers)if(n.type==="light")e+=`"${n.category.toUpperCase()}",`;else{let o=(Uu[n.type]??[]).map(s=>n[s]),i=(Vu[n.type]??[]).map(s=>n[s]?.length??0),a=[...o,...i];a.length?e+=`["${n.type}", "${a.join('","')}"],`:e+=`"${n.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let n=0;n<this.updaters.length;++n)e.updateNode(this.updaters[n])}build(e){e=e??{};let n=e.builder??new Rl;return this.lights=this.lightLayer.data.category!=="basic",n.setMaterial(this,e.renderer),n.build(this.fragment,this.fragment),this.vertexShader=n.getCode("vertex"),this.fragmentShader=n.getCode("fragment"),this.defines=n.defines,this.uniforms=n.uniforms,this.extensions=n.extensions,this.updaters=n.updaters,this.transparent=n.requires.transparent||this.blending>zl.NormalBlending,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Qt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(r){r===!0&&this.version++,this.needsCompile=r},get:function(){return this.needsCompile}}});var Jt=require("three");function kC(r){if(r.geometry.attributes.extrudeNormal||!r.geometry.attributes.position)return;let t=new Map,e=r.geometry.attributes.position.array,n=r.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let a=`${e[i]}_${e[i+1]}_${e[i+2]}`,s=new Jt.Vector3(n[i],n[i+1],n[i+2]);t.has(a)?t.get(a)?.normals.push(s):t.set(a,{normals:[s],result:new Jt.Vector3})}t.forEach((i,a)=>{for(let s of i.normals)i.result.add(s);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let a=`${e[i]}_${e[i+1]}_${e[i+2]}`,s=t.get(a)?.result;s&&(o[i]=s.x,o[i+1]=s.y,o[i+2]=s.z)}r.geometry.setAttribute("extrudeNormal",new Jt.Float32BufferAttribute(o,3))}function GC(r){if(r.geometry.attributes.extrudeNormals||!r.geometry.attributes.position)return;let t=r.geometry.attributes.position.array,e=new Float32Array(t.length),n=new Jt.Vector3;for(let o=0;o<t.length;o+=3)n.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=n.x,e[o+1]=n.y,e[o+2]=n.z;r.geometry.setAttribute("extrudeNormal",new Jt.Float32BufferAttribute(e,3))}function Zr(r){if(Array.isArray(r.material)){for(let t of r.material)if(t.getLayersOfType("outline").length===0)return}else if(!(r.material instanceof Qt)||r.material.getLayersOfType("outline").length===0)return;r.objectType==="Mesh2D"||r.objectType==="TextFrame"&&r.data?.geometry?.depth===0?GC(r):kC(r)}function Qr(r){if(!r.geometry.attributes.position)return;let t=r.geometry.attributes.position.array,e=new Float32Array(t.length),n=parseInt(r.uuid.replace(/\D/g,"")),o=[Jt.MathUtils.seededRandom(n),Jt.MathUtils.seededRandom(n+1e4),Jt.MathUtils.seededRandom(n+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];r.geometry.setAttribute("randomColor",new Jt.BufferAttribute(e,3))}var St=class extends ur(jl.Mesh){constructor(e,n){super(e,n);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new jl.Matrix4;this.booleanExclude=null;Array.isArray(n)&&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,n){let o=this.geometry,i=Su[o.userData.type],a=this.objectType==="NonParametric"?Object.assign({},o.userData,{geometry:o}):o.userData,s=i.build(i.normalizeInputs(e,a)),l=o.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=l,this.geometry.computeBoundingSphere(),Zr(this),o.getAttribute("randomColor")&&Qr(this)}clone(e){let n=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=ga(n),i=this.material;return new this.constructor(o,i).copy(this,e)}copy(e,n=!0){return super.copy(e,n),e.cloner&&(this.cloner=new po(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new po(this)),this.cloner.fromClonerState(e))}fromState(e,n){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&&(yr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),jr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)zr(e)&&(e.freeBooleanPointer(),jr(e)&&e.invalidateUpstreamBooleanData())}};var UC=new Hn.Vector3(0,0,1),wg=new Hn.Vector3,Tg=new Hn.Vector3,Cg=new Hn.Matrix3,Ii=class extends St{constructor(e=Ct.create({}),n){super(e,n);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Hn.EventDispatcher;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,n){if(super.updateGeometry(e,n),"userData"in this.geometry){let o=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:o})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,n){super.updateWorldMatrix(e,n),Cg.getNormalMatrix(this.matrixWorld),wg.copy(UC).applyMatrix3(Cg).normalize(),Tg.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(wg,Tg)}clone(e){let n=this.shape.clone(),o=this.material,i=this.geometry.userData,a=Ct.create(Object.assign({},i,{shape:n})),s=new Ii(a,o).copy(this,e);return s.shape=n,n.update(),s}raycast(e,n){St.prototype.raycast.call(this,e,n)}};var Jr=(r,t)=>class extends r{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 a=this;o.color!==void 0&&(a.color=yt(o.color,i)),o.intensity!==void 0&&(a.intensity=o.intensity),o.depth!==void 0&&(a.shadow.camera.far=o.depth,a.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows)}return this}};var Oi=new qe.Vector3,qu=new qe.Vector3,gn=class extends Jr(ur(qe.Camera),gl){constructor(e=window.innerWidth,n=window.innerHeight,o=45,i,a=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=oo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=n,this.orthoCamera=new qe.OrthographicCamera(e*-.5,e*.5,n*.5,n*-.5,i??-5e4,a),this.perspCamera=new qe.PerspectiveCamera(o,e/n,i??50,a),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,n){let o=new gn().fromState(n);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,n){e==="PerspectiveCamera"?this.perspCamera.near=n:this.orthoCamera.near=n}setZoom(e,n){n>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=n:this.orthoCamera.zoom=n)}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(Oi),this.targetOffset=Oi.distanceTo(e)}getTarget(e=new qe.Vector3){return this.getWorldDirection(qu),this.getWorldPosition(Oi),qu.multiplyScalar(this.targetOffset),e.copy(Oi).add(qu),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Oi),Oi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new qe.Quaternion),n=new qe.Vector3(0,0,1).applyQuaternion(e),o=new qe.Vector3().copy(qe.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new qe.Vector3().copy(qe.Object3D.DefaultUp).projectOnPlane(n),a=new qe.Vector3().crossVectors(i,o).dot(n)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*a}getViewFrontToObject(e){let n=e.getWorldPosition(new qe.Vector3),i=e.getWorldDirection(new qe.Vector3).multiplyScalar(this.targetOffset);return{position:n.clone().add(i),target:n}}getViewToObject(e){let n=e.getWorldPosition(new qe.Vector3),i=this.getWorldDirection(new qe.Vector3).multiplyScalar(this.targetOffset);return{position:n.clone().sub(i),target:n}}setViewplaneSize(e,n){this.left=-e*.5,this.right=e*.5,this.top=n*.5,this.bottom=-n*.5,this.aspect=e/n,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,n,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,n,o,i,a,s):this.orthoCamera.setViewOffset(e,n,o,i,a,s)}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,n){super.updateWorldMatrix(e,n),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,n){return super.copy(e,n),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 n={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 $o(n,e)}fromCameraState(e){let{orthographic:n,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),n!==void 0&&(n.near!==void 0&&(this.orthoCamera.near=n.near),n.zoom!==void 0&&(this.orthoCamera.zoom=n.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.type==="PerspectiveCamera"?(this.zoom=this.perspCamera.zoom,this.fov=this.perspCamera.fov,this.near=this.perspCamera.near):(this.near=this.orthoCamera.near,this.zoom=this.orthoCamera.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}};var Wa=require("three");var Ag=new Wa.Matrix4;var Hl=class extends St{constructor(e=new Wa.BufferGeometry,n){super(e,n);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,n=!0){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];jr(a)&&a.recomputeBoolean(e===!0,n)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(ng(a)&&a.booleanExclude===!1&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0){if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=yr.getMeshSet(a.geometry,e===!0,n)),a.booleanMeshSetAddress===-1)return;yr.transformMeshSet(a.booleanMeshSetAddress,a.matrix),a.booleanMatrixInvOld.copy(a.matrix).invert(),a.booleanWasTransformed=!1}else jr(a)&&a.needsTransformForDownstream===!0?(yr.transformMeshSet(a.booleanMeshSetAddress,a.matrix),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Ag.multiplyMatrices(a.matrix,a.booleanMatrixInvOld),yr.transformMeshSet(a.booleanMeshSetAddress,Ag),a.booleanMatrixInvOld.copy(a.matrix).invert(),a.booleanWasTransformed=!1);this.meshSetAddresses.push(a.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return yr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Wa.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=yr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,Zr(this),Qr(this)}updateGeometry(e,n){let o=e.parameters;o.operation!==void 0&&(this.booleanOp=o.operation),o.phongAngle!==void 0&&(this.phongAngle=o.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var _g=require("three");var So=class extends Jr(ur(_g.Group),oi){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,n){let o=new So().fromState(n);return o.uuid=e,o.objectHelper.update(),o}};var wo=require("three");var Li=class extends Jr(ur(wo.DirectionalLight),ni){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,this.layers.enable(3);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 wo.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,n,o){let i=new Li().fromState(n,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof wo.CameraHelper&&(n.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof wo.CameraHelper&&(n.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let n=this._gizmos[e];n instanceof wo.CameraHelper&&n.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(e,n){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,n),e.size!==void 0&&eg(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,n){return super.fromState(e),this.fromDirectionalLightState(e,n),this}};var Nt=require("three");var Ni=class extends Jr(ur(Nt.PointLight),ii){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,this.layers.enable(3);let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new Nt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),a=new Nt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),s=new Nt.Box3(i,a),l=new Nt.Box3Helper(s,new Nt.Color(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,n,o){let i=new Ni().fromState(n,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof Nt.Box3Helper&&(n.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof Nt.Box3Helper&&(n.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let n=this._gizmos[e];if(n instanceof Nt.Box3Helper){let o=this.shadow.camera,i=new Nt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),a=new Nt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);n.box.set(i,a),n.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,n){return super.fromLightState(e,n),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,n){return super.fromState(e),this.fromPointLightState(e,n),this}};var qt=require("three");var Ig=new qt.Vector3,Og=new qt.Vector3,Lg=new qt.Quaternion,Pi=class extends Jr(ur(qt.SpotLight),aa){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,this.layers.enable(3);let o=this.shadow.camera;o.fov=qt.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new qt.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,n,o){let i=new Pi().fromState(n,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof qt.CameraHelper&&(n.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof qt.CameraHelper&&(n.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let n=this._gizmos[e];n instanceof qt.CameraHelper&&n.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Og.setFromMatrixPosition(this.matrixWorld),Lg.setFromRotationMatrix(this.matrixWorld),Ig.copy(this.up).applyQuaternion(Lg).negate().multiplyScalar(this.distance),this.target.position.copy(Og).add(Ig),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(e,n){return super.fromLightState(e,n),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,n){return super.fromState(e),this.fromSpotLightState(e,n),this}};var Ng=r=>r.tagName==="VIDEO",Mi=class{static resize(t,e,n){let o=t/e,i;if(!n.image)return;let a=n.image;Ng(a)?i=a.videoWidth/a.videoHeight:i=a.width/a.height,o>i&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1*i/o):n.repeat.set(1,1*i/o)),o<i&&(n.imageType=="WEBCAM"?n.repeat.set(1*o/i*-1,1):n.repeat.set(1*o/i,1)),o==i&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1):n.repeat.set(1,1))}static resizeTextureLayer(t,e,n){let o=t/e,i=n.image!==void 0?n.image.width/n.image.height:1,a;o>i?a={x:1,y:i/o}:o<i?a={x:o/i,y:1}:a={x:1,y:1},n.repeat.set(a.x,a.y),n.updateMatrix()}static resizeTextureLayers(t,e,n){let o=n.layers;for(let i=0;i<o.length;i++){let a=o[i];Sg(a)&&Mi.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value)}}static resizeComplex(t,e,n,o){let i=t/e,a,s=n.image;Ng(s)?a=s.videoWidth/s.videoHeight:a=s.width/s.height,o.geometry.type.includes("Shape")?(i>a&&(n.imageType=="WEBCAM"?n.repeat.set(1/t*-1,1/e*a/i):n.repeat.set(1/t,1/e*a/i)),i<a&&(n.imageType=="WEBCAM"?n.repeat.set(1/t*i/a*-1,1/e):n.repeat.set(1/t*i/a,1/e)),i==a&&(n.imageType=="WEBCAM"?n.repeat.set(1/t*-1,1/e):n.repeat.set(1/t,1/e))):(i>a&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1*a/i):n.repeat.set(1,1*a/i)),i<a&&(n.imageType=="WEBCAM"?n.repeat.set(1*i/a*-1,1):n.repeat.set(1*i/a,1)),i==a&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1):n.repeat.set(1,1)))}};var Wl=class extends St{constructor(e,n){super(e,n);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e,n){super.updateGeometry(e,n),this.material.layers&&Mi.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Ei=class extends St{constructor(e,n){super(e,n);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var ql=class extends Ei{constructor(e,n){super(e,n);this.objectType="NonParametric"}};String.prototype.codePointAt||function(){var r=function(){try{var e={},n=Object.defineProperty,o=n(e,e,e)&&n}catch{}return o}(),t=function(e){if(this==null)throw TypeError();var n=String(this),o=n.length,i=e?Number(e):0;if(i!=i&&(i=0),!(i<0||i>=o)){var a=n.charCodeAt(i),s;return a>=55296&&a<=56319&&o>i+1&&(s=n.charCodeAt(i+1),s>=56320&&s<=57343)?(a-55296)*1024+s-56320+65536:a}};r?r(String.prototype,"codePointAt",{value:t,configurable:!0,writable:!0}):String.prototype.codePointAt=t}();var fp=0,gy=-3;function $a(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function VC(r,t){this.source=r,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=t,this.destLen=0,this.ltree=new $a,this.dtree=new $a}var yy=new $a,vy=new $a,dp=new Uint8Array(30),hp=new Uint16Array(30),xy=new Uint8Array(30),by=new Uint16Array(30),zC=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Pg=new $a,en=new Uint8Array(288+32);function Sy(r,t,e,n){var o,i;for(o=0;o<e;++o)r[o]=0;for(o=0;o<30-e;++o)r[o+e]=o/e|0;for(i=n,o=0;o<30;++o)t[o]=i,i+=1<<r[o]}function jC(r,t){var e;for(e=0;e<7;++e)r.table[e]=0;for(r.table[7]=24,r.table[8]=152,r.table[9]=112,e=0;e<24;++e)r.trans[e]=256+e;for(e=0;e<144;++e)r.trans[24+e]=e;for(e=0;e<8;++e)r.trans[24+144+e]=280+e;for(e=0;e<112;++e)r.trans[24+144+8+e]=144+e;for(e=0;e<5;++e)t.table[e]=0;for(t.table[5]=32,e=0;e<32;++e)t.trans[e]=e}var Mg=new Uint16Array(16);function Yu(r,t,e,n){var o,i;for(o=0;o<16;++o)r.table[o]=0;for(o=0;o<n;++o)r.table[t[e+o]]++;for(r.table[0]=0,i=0,o=0;o<16;++o)Mg[o]=i,i+=r.table[o];for(o=0;o<n;++o)t[e+o]&&(r.trans[Mg[t[e+o]]++]=o)}function HC(r){r.bitcount--||(r.tag=r.source[r.sourceIndex++],r.bitcount=7);var t=r.tag&1;return r.tag>>>=1,t}function tn(r,t,e){if(!t)return e;for(;r.bitcount<24;)r.tag|=r.source[r.sourceIndex++]<<r.bitcount,r.bitcount+=8;var n=r.tag&65535>>>16-t;return r.tag>>>=t,r.bitcount-=t,n+e}function np(r,t){for(;r.bitcount<24;)r.tag|=r.source[r.sourceIndex++]<<r.bitcount,r.bitcount+=8;var e=0,n=0,o=0,i=r.tag;do n=2*n+(i&1),i>>>=1,++o,e+=t.table[o],n-=t.table[o];while(n>=0);return r.tag=i,r.bitcount-=o,t.trans[e+n]}function WC(r,t,e){var n,o,i,a,s,l;for(n=tn(r,5,257),o=tn(r,5,1),i=tn(r,4,4),a=0;a<19;++a)en[a]=0;for(a=0;a<i;++a){var u=tn(r,3,0);en[zC[a]]=u}for(Yu(Pg,en,0,19),s=0;s<n+o;){var c=np(r,Pg);switch(c){case 16:var p=en[s-1];for(l=tn(r,2,3);l;--l)en[s++]=p;break;case 17:for(l=tn(r,3,3);l;--l)en[s++]=0;break;case 18:for(l=tn(r,7,11);l;--l)en[s++]=0;break;default:en[s++]=c;break}}Yu(t,en,0,n),Yu(e,en,n,o)}function Eg(r,t,e){for(;;){var n=np(r,t);if(n===256)return fp;if(n<256)r.dest[r.destLen++]=n;else{var o,i,a,s;for(n-=257,o=tn(r,dp[n],hp[n]),i=np(r,e),a=r.destLen-tn(r,xy[i],by[i]),s=a;s<a+o;++s)r.dest[r.destLen++]=r.dest[s]}}}function qC(r){for(var t,e,n;r.bitcount>8;)r.sourceIndex--,r.bitcount-=8;if(t=r.source[r.sourceIndex+1],t=256*t+r.source[r.sourceIndex],e=r.source[r.sourceIndex+3],e=256*e+r.source[r.sourceIndex+2],t!==(~e&65535))return gy;for(r.sourceIndex+=4,n=t;n;--n)r.dest[r.destLen++]=r.source[r.sourceIndex++];return r.bitcount=0,fp}function XC(r,t){var e=new VC(r,t),n,o,i;do{switch(n=HC(e),o=tn(e,2,0),o){case 0:i=qC(e);break;case 1:i=Eg(e,yy,vy);break;case 2:WC(e,e.ltree,e.dtree),i=Eg(e,e.ltree,e.dtree);break;default:i=gy}if(i!==fp)throw new Error("Data error")}while(!n);return e.destLen<e.dest.length?typeof e.dest.slice=="function"?e.dest.slice(0,e.destLen):e.dest.subarray(0,e.destLen):e.dest}jC(yy,vy);Sy(dp,hp,4,3);Sy(xy,by,2,1);dp[28]=0;hp[28]=258;var YC=XC;function Di(r,t,e,n,o){return Math.pow(1-o,3)*r+3*Math.pow(1-o,2)*o*t+3*(1-o)*Math.pow(o,2)*e+Math.pow(o,3)*n}function Zn(){this.x1=Number.NaN,this.y1=Number.NaN,this.x2=Number.NaN,this.y2=Number.NaN}Zn.prototype.isEmpty=function(){return isNaN(this.x1)||isNaN(this.y1)||isNaN(this.x2)||isNaN(this.y2)};Zn.prototype.addPoint=function(r,t){typeof r=="number"&&((isNaN(this.x1)||isNaN(this.x2))&&(this.x1=r,this.x2=r),r<this.x1&&(this.x1=r),r>this.x2&&(this.x2=r)),typeof t=="number"&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=t,this.y2=t),t<this.y1&&(this.y1=t),t>this.y2&&(this.y2=t))};Zn.prototype.addX=function(r){this.addPoint(r,null)};Zn.prototype.addY=function(r){this.addPoint(null,r)};Zn.prototype.addBezier=function(r,t,e,n,o,i,a,s){var l=[r,t],u=[e,n],c=[o,i],p=[a,s];this.addPoint(r,t),this.addPoint(a,s);for(var f=0;f<=1;f++){var d=6*l[f]-12*u[f]+6*c[f],h=-3*l[f]+9*u[f]-9*c[f]+3*p[f],m=3*u[f]-3*l[f];if(h===0){if(d===0)continue;var g=-m/d;0<g&&g<1&&(f===0&&this.addX(Di(l[f],u[f],c[f],p[f],g)),f===1&&this.addY(Di(l[f],u[f],c[f],p[f],g)));continue}var v=Math.pow(d,2)-4*m*h;if(!(v<0)){var x=(-d+Math.sqrt(v))/(2*h);0<x&&x<1&&(f===0&&this.addX(Di(l[f],u[f],c[f],p[f],x)),f===1&&this.addY(Di(l[f],u[f],c[f],p[f],x)));var S=(-d-Math.sqrt(v))/(2*h);0<S&&S<1&&(f===0&&this.addX(Di(l[f],u[f],c[f],p[f],S)),f===1&&this.addY(Di(l[f],u[f],c[f],p[f],S)))}}};Zn.prototype.addQuad=function(r,t,e,n,o,i){var a=r+.6666666666666666*(e-r),s=t+2/3*(n-t),l=a+1/3*(o-r),u=s+1/3*(i-t);this.addBezier(r,t,a,s,l,u,o,i)};function dt(){this.commands=[],this.fill="black",this.stroke=null,this.strokeWidth=1}dt.prototype.moveTo=function(r,t){this.commands.push({type:"M",x:r,y:t})};dt.prototype.lineTo=function(r,t){this.commands.push({type:"L",x:r,y:t})};dt.prototype.curveTo=dt.prototype.bezierCurveTo=function(r,t,e,n,o,i){this.commands.push({type:"C",x1:r,y1:t,x2:e,y2:n,x:o,y:i})};dt.prototype.quadTo=dt.prototype.quadraticCurveTo=function(r,t,e,n){this.commands.push({type:"Q",x1:r,y1:t,x:e,y:n})};dt.prototype.close=dt.prototype.closePath=function(){this.commands.push({type:"Z"})};dt.prototype.extend=function(r){if(r.commands)r=r.commands;else if(r instanceof Zn){var t=r;this.moveTo(t.x1,t.y1),this.lineTo(t.x2,t.y1),this.lineTo(t.x2,t.y2),this.lineTo(t.x1,t.y2),this.close();return}Array.prototype.push.apply(this.commands,r)};dt.prototype.getBoundingBox=function(){for(var r=new Zn,t=0,e=0,n=0,o=0,i=0;i<this.commands.length;i++){var a=this.commands[i];switch(a.type){case"M":r.addPoint(a.x,a.y),t=n=a.x,e=o=a.y;break;case"L":r.addPoint(a.x,a.y),n=a.x,o=a.y;break;case"Q":r.addQuad(n,o,a.x1,a.y1,a.x,a.y),n=a.x,o=a.y;break;case"C":r.addBezier(n,o,a.x1,a.y1,a.x2,a.y2,a.x,a.y),n=a.x,o=a.y;break;case"Z":n=t,o=e;break;default:throw new Error("Unexpected path command "+a.type)}}return r.isEmpty()&&r.addPoint(0,0),r};dt.prototype.draw=function(r){r.beginPath();for(var t=0;t<this.commands.length;t+=1){var e=this.commands[t];e.type==="M"?r.moveTo(e.x,e.y):e.type==="L"?r.lineTo(e.x,e.y):e.type==="C"?r.bezierCurveTo(e.x1,e.y1,e.x2,e.y2,e.x,e.y):e.type==="Q"?r.quadraticCurveTo(e.x1,e.y1,e.x,e.y):e.type==="Z"&&r.closePath()}this.fill&&(r.fillStyle=this.fill,r.fill()),this.stroke&&(r.strokeStyle=this.stroke,r.lineWidth=this.strokeWidth,r.stroke())};dt.prototype.toPathData=function(r){r=r!==void 0?r:2;function t(a){return Math.round(a)===a?""+Math.round(a):a.toFixed(r)}function e(){for(var a=arguments,s="",l=0;l<arguments.length;l+=1){var u=a[l];u>=0&&l>0&&(s+=" "),s+=t(u)}return s}for(var n="",o=0;o<this.commands.length;o+=1){var i=this.commands[o];i.type==="M"?n+="M"+e(i.x,i.y):i.type==="L"?n+="L"+e(i.x,i.y):i.type==="C"?n+="C"+e(i.x1,i.y1,i.x2,i.y2,i.x,i.y):i.type==="Q"?n+="Q"+e(i.x1,i.y1,i.x,i.y):i.type==="Z"&&(n+="Z")}return n};dt.prototype.toSVG=function(r){var t='<path d="';return t+=this.toPathData(r),t+='"',this.fill&&this.fill!=="black"&&(this.fill===null?t+=' fill="none"':t+=' fill="'+this.fill+'"'),this.stroke&&(t+=' stroke="'+this.stroke+'" stroke-width="'+this.strokeWidth+'"'),t+="/>",t};dt.prototype.toDOMElement=function(r){var t=this.toPathData(r),e=document.createElementNS("http://www.w3.org/2000/svg","path");return e.setAttribute("d",t),e};function wy(r){throw new Error(r)}function Dg(r,t){r||wy(t)}var xe={fail:wy,argument:Dg,assert:Dg},Bg=32768,Fg=2147483648,Fi={},te={},be={};function _r(r){return function(){return r}}te.BYTE=function(r){return xe.argument(r>=0&&r<=255,"Byte value should be between 0 and 255."),[r]};be.BYTE=_r(1);te.CHAR=function(r){return[r.charCodeAt(0)]};be.CHAR=_r(1);te.CHARARRAY=function(r){typeof r>"u"&&(r="",console.warn("Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name."));for(var t=[],e=0;e<r.length;e+=1)t[e]=r.charCodeAt(e);return t};be.CHARARRAY=function(r){return typeof r>"u"?0:r.length};te.USHORT=function(r){return[r>>8&255,r&255]};be.USHORT=_r(2);te.SHORT=function(r){return r>=Bg&&(r=-(2*Bg-r)),[r>>8&255,r&255]};be.SHORT=_r(2);te.UINT24=function(r){return[r>>16&255,r>>8&255,r&255]};be.UINT24=_r(3);te.ULONG=function(r){return[r>>24&255,r>>16&255,r>>8&255,r&255]};be.ULONG=_r(4);te.LONG=function(r){return r>=Fg&&(r=-(2*Fg-r)),[r>>24&255,r>>16&255,r>>8&255,r&255]};be.LONG=_r(4);te.FIXED=te.ULONG;be.FIXED=be.ULONG;te.FWORD=te.SHORT;be.FWORD=be.SHORT;te.UFWORD=te.USHORT;be.UFWORD=be.USHORT;te.LONGDATETIME=function(r){return[0,0,0,0,r>>24&255,r>>16&255,r>>8&255,r&255]};be.LONGDATETIME=_r(8);te.TAG=function(r){return xe.argument(r.length===4,"Tag should be exactly 4 ASCII characters."),[r.charCodeAt(0),r.charCodeAt(1),r.charCodeAt(2),r.charCodeAt(3)]};be.TAG=_r(4);te.Card8=te.BYTE;be.Card8=be.BYTE;te.Card16=te.USHORT;be.Card16=be.USHORT;te.OffSize=te.BYTE;be.OffSize=be.BYTE;te.SID=te.USHORT;be.SID=be.USHORT;te.NUMBER=function(r){return r>=-107&&r<=107?[r+139]:r>=108&&r<=1131?(r=r-108,[(r>>8)+247,r&255]):r>=-1131&&r<=-108?(r=-r-108,[(r>>8)+251,r&255]):r>=-32768&&r<=32767?te.NUMBER16(r):te.NUMBER32(r)};be.NUMBER=function(r){return te.NUMBER(r).length};te.NUMBER16=function(r){return[28,r>>8&255,r&255]};be.NUMBER16=_r(3);te.NUMBER32=function(r){return[29,r>>24&255,r>>16&255,r>>8&255,r&255]};be.NUMBER32=_r(5);te.REAL=function(r){var t=r.toString(),e=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(t);if(e){var n=parseFloat("1e"+((e[2]?+e[2]:0)+e[1].length));t=(Math.round(r*n)/n).toString()}for(var o="",i=0,a=t.length;i<a;i+=1){var s=t[i];s==="e"?o+=t[++i]==="-"?"c":"b":s==="."?o+="a":s==="-"?o+="e":o+=s}o+=o.length&1?"f":"ff";for(var l=[30],u=0,c=o.length;u<c;u+=2)l.push(parseInt(o.substr(u,2),16));return l};be.REAL=function(r){return te.REAL(r).length};te.NAME=te.CHARARRAY;be.NAME=be.CHARARRAY;te.STRING=te.CHARARRAY;be.STRING=be.CHARARRAY;Fi.UTF8=function(r,t,e){for(var n=[],o=e,i=0;i<o;i++,t+=1)n[i]=r.getUint8(t);return String.fromCharCode.apply(null,n)};Fi.UTF16=function(r,t,e){for(var n=[],o=e/2,i=0;i<o;i++,t+=2)n[i]=r.getUint16(t);return String.fromCharCode.apply(null,n)};te.UTF16=function(r){for(var t=[],e=0;e<r.length;e+=1){var n=r.charCodeAt(e);t[t.length]=n>>8&255,t[t.length]=n&255}return t};be.UTF16=function(r){return r.length*2};var op={"x-mac-croatian":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u03A9\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uF8FF\xA9\u2044\u20AC\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7","x-mac-cyrillic":"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E","x-mac-gaelic":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u1E02\xB1\u2264\u2265\u1E03\u010A\u010B\u1E0A\u1E0B\u1E1E\u1E1F\u0120\u0121\u1E40\xE6\xF8\u1E41\u1E56\u1E57\u027C\u0192\u017F\u1E60\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u1E61\u1E9B\xFF\u0178\u1E6A\u20AC\u2039\u203A\u0176\u0177\u1E6B\xB7\u1EF2\u1EF3\u204A\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u2663\xD2\xDA\xDB\xD9\u0131\xDD\xFD\u0174\u0175\u1E84\u1E85\u1E80\u1E81\u1E82\u1E83","x-mac-greek":"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\u20AC\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\xB7\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\xAD","x-mac-icelandic":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-inuit":"\u1403\u1404\u1405\u1406\u140A\u140B\u1431\u1432\u1433\u1434\u1438\u1439\u1449\u144E\u144F\u1450\u1451\u1455\u1456\u1466\u146D\u146E\u146F\u1470\u1472\u1473\u1483\u148B\u148C\u148D\u148E\u1490\u1491\xB0\u14A1\u14A5\u14A6\u2022\xB6\u14A7\xAE\xA9\u2122\u14A8\u14AA\u14AB\u14BB\u14C2\u14C3\u14C4\u14C5\u14C7\u14C8\u14D0\u14EF\u14F0\u14F1\u14F2\u14F4\u14F5\u1505\u14D5\u14D6\u14D7\u14D8\u14DA\u14DB\u14EA\u1528\u1529\u152A\u152B\u152D\u2026\xA0\u152E\u153E\u1555\u1556\u1557\u2013\u2014\u201C\u201D\u2018\u2019\u1558\u1559\u155A\u155D\u1546\u1547\u1548\u1549\u154B\u154C\u1550\u157F\u1580\u1581\u1582\u1583\u1584\u1585\u158F\u1590\u1591\u1592\u1593\u1594\u1595\u1671\u1672\u1673\u1674\u1675\u1676\u1596\u15A0\u15A1\u15A2\u15A3\u15A4\u15A5\u15A6\u157C\u0141\u0142","x-mac-ce":"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7",macintosh:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-romanian":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u0218\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\u0103\u0219\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\u2039\u203A\u021A\u021B\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-turkish":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\uF8A0\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"};Fi.MACSTRING=function(r,t,e,n){var o=op[n];if(o!==void 0){for(var i="",a=0;a<e;a++){var s=r.getUint8(t+a);s<=127?i+=String.fromCharCode(s):i+=o[s&127]}return i}};var Xl=typeof WeakMap=="function"&&new WeakMap,Yl,$C=function(r){if(!Yl){Yl={};for(var t in op)Yl[t]=new String(t)}var e=Yl[r];if(e!==void 0){if(Xl){var n=Xl.get(e);if(n!==void 0)return n}var o=op[r];if(o!==void 0){for(var i={},a=0;a<o.length;a++)i[o.charCodeAt(a)]=a+128;return Xl&&Xl.set(e,i),i}}};te.MACSTRING=function(r,t){var e=$C(t);if(e!==void 0){for(var n=[],o=0;o<r.length;o++){var i=r.charCodeAt(o);if(i>=128&&(i=e[i],i===void 0))return;n[o]=i}return n}};be.MACSTRING=function(r,t){var e=te.MACSTRING(r,t);return e!==void 0?e.length:0};function ip(r){return r>=-128&&r<=127}function KC(r,t,e){for(var n=0,o=r.length;t<o&&n<64&&r[t]===0;)++t,++n;return e.push(128|n-1),t}function ZC(r,t,e){for(var n=0,o=r.length,i=t;i<o&&n<64;){var a=r[i];if(!ip(a)||a===0&&i+1<o&&r[i+1]===0)break;++i,++n}e.push(n-1);for(var s=t;s<i;++s)e.push(r[s]+256&255);return i}function QC(r,t,e){for(var n=0,o=r.length,i=t;i<o&&n<64;){var a=r[i];if(a===0||ip(a)&&i+1<o&&ip(r[i+1]))break;++i,++n}e.push(64|n-1);for(var s=t;s<i;++s){var l=r[s];e.push(l+65536>>8&255,l+256&255)}return i}te.VARDELTAS=function(r){for(var t=0,e=[];t<r.length;){var n=r[t];n===0?t=KC(r,t,e):n>=-128&&n<=127?t=ZC(r,t,e):t=QC(r,t,e)}return e};te.INDEX=function(r){for(var t=1,e=[t],n=[],o=0;o<r.length;o+=1){var i=te.OBJECT(r[o]);Array.prototype.push.apply(n,i),t+=i.length,e.push(t)}if(n.length===0)return[0,0];for(var a=[],s=1+Math.floor(Math.log(t)/Math.log(2))/8|0,l=[void 0,te.BYTE,te.USHORT,te.UINT24,te.ULONG][s],u=0;u<e.length;u+=1){var c=l(e[u]);Array.prototype.push.apply(a,c)}return Array.prototype.concat(te.Card16(r.length),te.OffSize(s),a,n)};be.INDEX=function(r){return te.INDEX(r).length};te.DICT=function(r){for(var t=[],e=Object.keys(r),n=e.length,o=0;o<n;o+=1){var i=parseInt(e[o],0),a=r[i];t=t.concat(te.OPERAND(a.value,a.type)),t=t.concat(te.OPERATOR(i))}return t};be.DICT=function(r){return te.DICT(r).length};te.OPERATOR=function(r){return r<1200?[r]:[12,r-1200]};te.OPERAND=function(r,t){var e=[];if(Array.isArray(t))for(var n=0;n<t.length;n+=1)xe.argument(r.length===t.length,"Not enough arguments given for type"+t),e=e.concat(te.OPERAND(r[n],t[n]));else if(t==="SID")e=e.concat(te.NUMBER(r));else if(t==="offset")e=e.concat(te.NUMBER32(r));else if(t==="number")e=e.concat(te.NUMBER(r));else if(t==="real")e=e.concat(te.REAL(r));else throw new Error("Unknown operand type "+t);return e};te.OP=te.BYTE;be.OP=be.BYTE;var $l=typeof WeakMap=="function"&&new WeakMap;te.CHARSTRING=function(r){if($l){var t=$l.get(r);if(t!==void 0)return t}for(var e=[],n=r.length,o=0;o<n;o+=1){var i=r[o];e=e.concat(te[i.type](i.value))}return $l&&$l.set(r,e),e};be.CHARSTRING=function(r){return te.CHARSTRING(r).length};te.OBJECT=function(r){var t=te[r.type];return xe.argument(t!==void 0,"No encoding function for type "+r.type),t(r.value)};be.OBJECT=function(r){var t=be[r.type];return xe.argument(t!==void 0,"No sizeOf function for type "+r.type),t(r.value)};te.TABLE=function(r){for(var t=[],e=r.fields.length,n=[],o=[],i=0;i<e;i+=1){var a=r.fields[i],s=te[a.type];xe.argument(s!==void 0,"No encoding function for field type "+a.type+" ("+a.name+")");var l=r[a.name];l===void 0&&(l=a.value);var u=s(l);a.type==="TABLE"?(o.push(t.length),t=t.concat([0,0]),n.push(u)):t=t.concat(u)}for(var c=0;c<n.length;c+=1){var p=o[c],f=t.length;xe.argument(f<65536,"Table "+r.tableName+" too big."),t[p]=f>>8,t[p+1]=f&255,t=t.concat(n[c])}return t};be.TABLE=function(r){for(var t=0,e=r.fields.length,n=0;n<e;n+=1){var o=r.fields[n],i=be[o.type];xe.argument(i!==void 0,"No sizeOf function for field type "+o.type+" ("+o.name+")");var a=r[o.name];a===void 0&&(a=o.value),t+=i(a),o.type==="TABLE"&&(t+=2)}return t};te.RECORD=te.TABLE;be.RECORD=be.TABLE;te.LITERAL=function(r){return r};be.LITERAL=function(r){return r.length};function wt(r,t,e){if(t.length&&(t[0].name!=="coverageFormat"||t[0].value===1))for(var n=0;n<t.length;n+=1){var o=t[n];this[o.name]=o.value}if(this.tableName=r,this.fields=t,e)for(var i=Object.keys(e),a=0;a<i.length;a+=1){var s=i[a],l=e[s];this[s]!==void 0&&(this[s]=l)}}wt.prototype.encode=function(){return te.TABLE(this)};wt.prototype.sizeOf=function(){return be.TABLE(this)};function Ka(r,t,e){e===void 0&&(e=t.length);var n=new Array(t.length+1);n[0]={name:r+"Count",type:"USHORT",value:e};for(var o=0;o<t.length;o++)n[o+1]={name:r+o,type:"USHORT",value:t[o]};return n}function ap(r,t,e){var n=t.length,o=new Array(n+1);o[0]={name:r+"Count",type:"USHORT",value:n};for(var i=0;i<n;i++)o[i+1]={name:r+i,type:"TABLE",value:e(t[i],i)};return o}function Za(r,t,e){var n=t.length,o=[];o[0]={name:r+"Count",type:"USHORT",value:n};for(var i=0;i<n;i++)o=o.concat(e(t[i],i));return o}function ec(r){r.format===1?wt.call(this,"coverageTable",[{name:"coverageFormat",type:"USHORT",value:1}].concat(Ka("glyph",r.glyphs))):r.format===2?wt.call(this,"coverageTable",[{name:"coverageFormat",type:"USHORT",value:2}].concat(Za("rangeRecord",r.ranges,function(t){return[{name:"startGlyphID",type:"USHORT",value:t.start},{name:"endGlyphID",type:"USHORT",value:t.end},{name:"startCoverageIndex",type:"USHORT",value:t.index}]}))):xe.assert(!1,"Coverage format must be 1 or 2.")}ec.prototype=Object.create(wt.prototype);ec.prototype.constructor=ec;function tc(r){wt.call(this,"scriptListTable",Za("scriptRecord",r,function(t,e){var n=t.script,o=n.defaultLangSys;return xe.assert(!!o,"Unable to write GSUB: script "+t.tag+" has no default language system."),[{name:"scriptTag"+e,type:"TAG",value:t.tag},{name:"script"+e,type:"TABLE",value:new wt("scriptTable",[{name:"defaultLangSys",type:"TABLE",value:new wt("defaultLangSys",[{name:"lookupOrder",type:"USHORT",value:0},{name:"reqFeatureIndex",type:"USHORT",value:o.reqFeatureIndex}].concat(Ka("featureIndex",o.featureIndexes)))}].concat(Za("langSys",n.langSysRecords,function(i,a){var s=i.langSys;return[{name:"langSysTag"+a,type:"TAG",value:i.tag},{name:"langSys"+a,type:"TABLE",value:new wt("langSys",[{name:"lookupOrder",type:"USHORT",value:0},{name:"reqFeatureIndex",type:"USHORT",value:s.reqFeatureIndex}].concat(Ka("featureIndex",s.featureIndexes)))}]})))}]}))}tc.prototype=Object.create(wt.prototype);tc.prototype.constructor=tc;function rc(r){wt.call(this,"featureListTable",Za("featureRecord",r,function(t,e){var n=t.feature;return[{name:"featureTag"+e,type:"TAG",value:t.tag},{name:"feature"+e,type:"TABLE",value:new wt("featureTable",[{name:"featureParams",type:"USHORT",value:n.featureParams}].concat(Ka("lookupListIndex",n.lookupListIndexes)))}]}))}rc.prototype=Object.create(wt.prototype);rc.prototype.constructor=rc;function nc(r,t){wt.call(this,"lookupListTable",ap("lookup",r,function(e){var n=t[e.lookupType];return xe.assert(!!n,"Unable to write GSUB lookup type "+e.lookupType+" tables."),new wt("lookupTable",[{name:"lookupType",type:"USHORT",value:e.lookupType},{name:"lookupFlag",type:"USHORT",value:e.lookupFlag}].concat(ap("subtable",e.subtables,n)))}))}nc.prototype=Object.create(wt.prototype);nc.prototype.constructor=nc;var le={Table:wt,Record:wt,Coverage:ec,ScriptList:tc,FeatureList:rc,LookupList:nc,ushortList:Ka,tableList:ap,recordList:Za};function Rg(r,t){return r.getUint8(t)}function oc(r,t){return r.getUint16(t,!1)}function JC(r,t){return r.getInt16(t,!1)}function mp(r,t){return r.getUint32(t,!1)}function Ty(r,t){var e=r.getInt16(t,!1),n=r.getUint16(t+2,!1);return e+n/65535}function eA(r,t){for(var e="",n=t;n<t+4;n+=1)e+=String.fromCharCode(r.getInt8(n));return e}function tA(r,t,e){for(var n=0,o=0;o<e;o+=1)n<<=8,n+=r.getUint8(t+o);return n}function rA(r,t,e){for(var n=[],o=t;o<e;o+=1)n.push(r.getUint8(o));return n}function nA(r){for(var t="",e=0;e<r.length;e+=1)t+=String.fromCharCode(r[e]);return t}var oA={byte:1,uShort:2,short:2,uLong:4,fixed:4,longDateTime:8,tag:4};function E(r,t){this.data=r,this.offset=t,this.relativeOffset=0}E.prototype.parseByte=function(){var r=this.data.getUint8(this.offset+this.relativeOffset);return this.relativeOffset+=1,r};E.prototype.parseChar=function(){var r=this.data.getInt8(this.offset+this.relativeOffset);return this.relativeOffset+=1,r};E.prototype.parseCard8=E.prototype.parseByte;E.prototype.parseUShort=function(){var r=this.data.getUint16(this.offset+this.relativeOffset);return this.relativeOffset+=2,r};E.prototype.parseCard16=E.prototype.parseUShort;E.prototype.parseSID=E.prototype.parseUShort;E.prototype.parseOffset16=E.prototype.parseUShort;E.prototype.parseShort=function(){var r=this.data.getInt16(this.offset+this.relativeOffset);return this.relativeOffset+=2,r};E.prototype.parseF2Dot14=function(){var r=this.data.getInt16(this.offset+this.relativeOffset)/16384;return this.relativeOffset+=2,r};E.prototype.parseULong=function(){var r=mp(this.data,this.offset+this.relativeOffset);return this.relativeOffset+=4,r};E.prototype.parseOffset32=E.prototype.parseULong;E.prototype.parseFixed=function(){var r=Ty(this.data,this.offset+this.relativeOffset);return this.relativeOffset+=4,r};E.prototype.parseString=function(r){var t=this.data,e=this.offset+this.relativeOffset,n="";this.relativeOffset+=r;for(var o=0;o<r;o++)n+=String.fromCharCode(t.getUint8(e+o));return n};E.prototype.parseTag=function(){return this.parseString(4)};E.prototype.parseLongDateTime=function(){var r=mp(this.data,this.offset+this.relativeOffset+4);return r-=2082844800,this.relativeOffset+=8,r};E.prototype.parseVersion=function(r){var t=oc(this.data,this.offset+this.relativeOffset),e=oc(this.data,this.offset+this.relativeOffset+2);return this.relativeOffset+=4,r===void 0&&(r=4096),t+e/r/10};E.prototype.skip=function(r,t){t===void 0&&(t=1),this.relativeOffset+=oA[r]*t};E.prototype.parseULongList=function(r){r===void 0&&(r=this.parseULong());for(var t=new Array(r),e=this.data,n=this.offset+this.relativeOffset,o=0;o<r;o++)t[o]=e.getUint32(n),n+=4;return this.relativeOffset+=r*4,t};E.prototype.parseOffset16List=E.prototype.parseUShortList=function(r){r===void 0&&(r=this.parseUShort());for(var t=new Array(r),e=this.data,n=this.offset+this.relativeOffset,o=0;o<r;o++)t[o]=e.getUint16(n),n+=2;return this.relativeOffset+=r*2,t};E.prototype.parseShortList=function(r){for(var t=new Array(r),e=this.data,n=this.offset+this.relativeOffset,o=0;o<r;o++)t[o]=e.getInt16(n),n+=2;return this.relativeOffset+=r*2,t};E.prototype.parseByteList=function(r){for(var t=new Array(r),e=this.data,n=this.offset+this.relativeOffset,o=0;o<r;o++)t[o]=e.getUint8(n++);return this.relativeOffset+=r,t};E.prototype.parseList=function(r,t){t||(t=r,r=this.parseUShort());for(var e=new Array(r),n=0;n<r;n++)e[n]=t.call(this);return e};E.prototype.parseList32=function(r,t){t||(t=r,r=this.parseULong());for(var e=new Array(r),n=0;n<r;n++)e[n]=t.call(this);return e};E.prototype.parseRecordList=function(r,t){t||(t=r,r=this.parseUShort());for(var e=new Array(r),n=Object.keys(t),o=0;o<r;o++){for(var i={},a=0;a<n.length;a++){var s=n[a],l=t[s];i[s]=l.call(this)}e[o]=i}return e};E.prototype.parseRecordList32=function(r,t){t||(t=r,r=this.parseULong());for(var e=new Array(r),n=Object.keys(t),o=0;o<r;o++){for(var i={},a=0;a<n.length;a++){var s=n[a],l=t[s];i[s]=l.call(this)}e[o]=i}return e};E.prototype.parseStruct=function(r){if(typeof r=="function")return r.call(this);for(var t=Object.keys(r),e={},n=0;n<t.length;n++){var o=t[n],i=r[o];e[o]=i.call(this)}return e};E.prototype.parseValueRecord=function(r){if(r===void 0&&(r=this.parseUShort()),r!==0){var t={};return r&1&&(t.xPlacement=this.parseShort()),r&2&&(t.yPlacement=this.parseShort()),r&4&&(t.xAdvance=this.parseShort()),r&8&&(t.yAdvance=this.parseShort()),r&16&&(t.xPlaDevice=void 0,this.parseShort()),r&32&&(t.yPlaDevice=void 0,this.parseShort()),r&64&&(t.xAdvDevice=void 0,this.parseShort()),r&128&&(t.yAdvDevice=void 0,this.parseShort()),t}};E.prototype.parseValueRecordList=function(){for(var r=this.parseUShort(),t=this.parseUShort(),e=new Array(t),n=0;n<t;n++)e[n]=this.parseValueRecord(r);return e};E.prototype.parsePointer=function(r){var t=this.parseOffset16();if(t>0)return new E(this.data,this.offset+t).parseStruct(r)};E.prototype.parsePointer32=function(r){var t=this.parseOffset32();if(t>0)return new E(this.data,this.offset+t).parseStruct(r)};E.prototype.parseListOfLists=function(r){for(var t=this.parseOffset16List(),e=t.length,n=this.relativeOffset,o=new Array(e),i=0;i<e;i++){var a=t[i];if(a===0){o[i]=void 0;continue}if(this.relativeOffset=a,r){for(var s=this.parseOffset16List(),l=new Array(s.length),u=0;u<s.length;u++)this.relativeOffset=a+s[u],l[u]=r.call(this);o[i]=l}else o[i]=this.parseUShortList()}return this.relativeOffset=n,o};E.prototype.parseCoverage=function(){var r=this.offset+this.relativeOffset,t=this.parseUShort(),e=this.parseUShort();if(t===1)return{format:1,glyphs:this.parseUShortList(e)};if(t===2){for(var n=new Array(e),o=0;o<e;o++)n[o]={start:this.parseUShort(),end:this.parseUShort(),index:this.parseUShort()};return{format:2,ranges:n}}throw new Error("0x"+r.toString(16)+": Coverage format must be 1 or 2.")};E.prototype.parseClassDef=function(){var r=this.offset+this.relativeOffset,t=this.parseUShort();if(t===1)return{format:1,startGlyph:this.parseUShort(),classes:this.parseUShortList()};if(t===2)return{format:2,ranges:this.parseRecordList({start:E.uShort,end:E.uShort,classId:E.uShort})};throw new Error("0x"+r.toString(16)+": ClassDef format must be 1 or 2.")};E.list=function(r,t){return function(){return this.parseList(r,t)}};E.list32=function(r,t){return function(){return this.parseList32(r,t)}};E.recordList=function(r,t){return function(){return this.parseRecordList(r,t)}};E.recordList32=function(r,t){return function(){return this.parseRecordList32(r,t)}};E.pointer=function(r){return function(){return this.parsePointer(r)}};E.pointer32=function(r){return function(){return this.parsePointer32(r)}};E.tag=E.prototype.parseTag;E.byte=E.prototype.parseByte;E.uShort=E.offset16=E.prototype.parseUShort;E.uShortList=E.prototype.parseUShortList;E.uLong=E.offset32=E.prototype.parseULong;E.uLongList=E.prototype.parseULongList;E.struct=E.prototype.parseStruct;E.coverage=E.prototype.parseCoverage;E.classDef=E.prototype.parseClassDef;var kg={reserved:E.uShort,reqFeatureIndex:E.uShort,featureIndexes:E.uShortList};E.prototype.parseScriptList=function(){return this.parsePointer(E.recordList({tag:E.tag,script:E.pointer({defaultLangSys:E.pointer(kg),langSysRecords:E.recordList({tag:E.tag,langSys:E.pointer(kg)})})}))||[]};E.prototype.parseFeatureList=function(){return this.parsePointer(E.recordList({tag:E.tag,feature:E.pointer({featureParams:E.offset16,lookupListIndexes:E.uShortList})}))||[]};E.prototype.parseLookupList=function(r){return this.parsePointer(E.list(E.pointer(function(){var t=this.parseUShort();xe.argument(1<=t&&t<=9,"GPOS/GSUB lookup type "+t+" unknown.");var e=this.parseUShort(),n=e&16;return{lookupType:t,lookupFlag:e,subtables:this.parseList(E.pointer(r[t])),markFilteringSet:n?this.parseUShort():void 0}})))||[]};E.prototype.parseFeatureVariationsList=function(){return this.parsePointer32(function(){var r=this.parseUShort(),t=this.parseUShort();xe.argument(r===1&&t<1,"GPOS/GSUB feature variations table unknown.");var e=this.parseRecordList32({conditionSetOffset:E.offset32,featureTableSubstitutionOffset:E.offset32});return e})||[]};var pe={getByte:Rg,getCard8:Rg,getUShort:oc,getCard16:oc,getShort:JC,getULong:mp,getFixed:Ty,getTag:eA,getOffset:tA,getBytes:rA,bytesToString:nA,Parser:E};function iA(r,t){t.parseUShort(),r.length=t.parseULong(),r.language=t.parseULong();var e;r.groupCount=e=t.parseULong(),r.glyphIndexMap={};for(var n=0;n<e;n+=1)for(var o=t.parseULong(),i=t.parseULong(),a=t.parseULong(),s=o;s<=i;s+=1)r.glyphIndexMap[s]=a,a++}function aA(r,t,e,n,o){r.length=t.parseUShort(),r.language=t.parseUShort();var i;r.segCount=i=t.parseUShort()>>1,t.skip("uShort",3),r.glyphIndexMap={};for(var a=new pe.Parser(e,n+o+14),s=new pe.Parser(e,n+o+16+i*2),l=new pe.Parser(e,n+o+16+i*4),u=new pe.Parser(e,n+o+16+i*6),c=n+o+16+i*8,p=0;p<i-1;p+=1)for(var f=void 0,d=a.parseUShort(),h=s.parseUShort(),m=l.parseShort(),g=u.parseUShort(),v=h;v<=d;v+=1)g!==0?(c=u.offset+u.relativeOffset-2,c+=g,c+=(v-h)*2,f=pe.getUShort(e,c),f!==0&&(f=f+m&65535)):f=v+m&65535,r.glyphIndexMap[v]=f}function sA(r,t){var e={};e.version=pe.getUShort(r,t),xe.argument(e.version===0,"cmap table version should be 0."),e.numTables=pe.getUShort(r,t+2);for(var n=-1,o=e.numTables-1;o>=0;o-=1){var i=pe.getUShort(r,t+4+o*8),a=pe.getUShort(r,t+4+o*8+2);if(i===3&&(a===0||a===1||a===10)||i===0&&(a===0||a===1||a===2||a===3||a===4)){n=pe.getULong(r,t+4+o*8+4);break}}if(n===-1)throw new Error("No valid cmap sub-tables found.");var s=new pe.Parser(r,t+n);if(e.format=s.parseUShort(),e.format===12)iA(e,s);else if(e.format===4)aA(e,s,r,t,n);else throw new Error("Only format 4 and 12 cmap tables are supported (found format "+e.format+").");return e}function lA(r,t,e){r.segments.push({end:t,start:t,delta:-(t-e),offset:0,glyphIndex:e})}function cA(r){r.segments.push({end:65535,start:65535,delta:1,offset:0})}function uA(r){var t=!0,e;for(e=r.length-1;e>0;e-=1){var n=r.get(e);if(n.unicode>65535){console.log("Adding CMAP format 12 (needed!)"),t=!1;break}}var o=[{name:"version",type:"USHORT",value:0},{name:"numTables",type:"USHORT",value:t?1:2},{name:"platformID",type:"USHORT",value:3},{name:"encodingID",type:"USHORT",value:1},{name:"offset",type:"ULONG",value:t?12:12+8}];t||(o=o.concat([{name:"cmap12PlatformID",type:"USHORT",value:3},{name:"cmap12EncodingID",type:"USHORT",value:10},{name:"cmap12Offset",type:"ULONG",value:0}])),o=o.concat([{name:"format",type:"USHORT",value:4},{name:"cmap4Length",type:"USHORT",value:0},{name:"language",type:"USHORT",value:0},{name:"segCountX2",type:"USHORT",value:0},{name:"searchRange",type:"USHORT",value:0},{name:"entrySelector",type:"USHORT",value:0},{name:"rangeShift",type:"USHORT",value:0}]);var i=new le.Table("cmap",o);for(i.segments=[],e=0;e<r.length;e+=1){for(var a=r.get(e),s=0;s<a.unicodes.length;s+=1)lA(i,a.unicodes[s],e);i.segments=i.segments.sort(function(x,S){return x.start-S.start})}cA(i);var l=i.segments.length,u=0,c=[],p=[],f=[],d=[],h=[],m=[];for(e=0;e<l;e+=1){var g=i.segments[e];g.end<=65535&&g.start<=65535?(c=c.concat({name:"end_"+e,type:"USHORT",value:g.end}),p=p.concat({name:"start_"+e,type:"USHORT",value:g.start}),f=f.concat({name:"idDelta_"+e,type:"SHORT",value:g.delta}),d=d.concat({name:"idRangeOffset_"+e,type:"USHORT",value:g.offset}),g.glyphId!==void 0&&(h=h.concat({name:"glyph_"+e,type:"USHORT",value:g.glyphId}))):u+=1,!t&&g.glyphIndex!==void 0&&(m=m.concat({name:"cmap12Start_"+e,type:"ULONG",value:g.start}),m=m.concat({name:"cmap12End_"+e,type:"ULONG",value:g.end}),m=m.concat({name:"cmap12Glyph_"+e,type:"ULONG",value:g.glyphIndex}))}if(i.segCountX2=(l-u)*2,i.searchRange=Math.pow(2,Math.floor(Math.log(l-u)/Math.log(2)))*2,i.entrySelector=Math.log(i.searchRange/2)/Math.log(2),i.rangeShift=i.segCountX2-i.searchRange,i.fields=i.fields.concat(c),i.fields.push({name:"reservedPad",type:"USHORT",value:0}),i.fields=i.fields.concat(p),i.fields=i.fields.concat(f),i.fields=i.fields.concat(d),i.fields=i.fields.concat(h),i.cmap4Length=14+c.length*2+2+p.length*2+f.length*2+d.length*2+h.length*2,!t){var v=16+m.length*4;i.cmap12Offset=12+2*2+4+i.cmap4Length,i.fields=i.fields.concat([{name:"cmap12Format",type:"USHORT",value:12},{name:"cmap12Reserved",type:"USHORT",value:0},{name:"cmap12Length",type:"ULONG",value:v},{name:"cmap12Language",type:"ULONG",value:0},{name:"cmap12nGroups",type:"ULONG",value:m.length/3}]),i.fields=i.fields.concat(m)}return i}var Cy={parse:sA,make:uA},Ql=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","266 ff","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],pA=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],fA=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],Co=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function Ay(r){this.font=r}Ay.prototype.charToGlyphIndex=function(r){var t=r.codePointAt(0),e=this.font.glyphs;if(e){for(var n=0;n<e.length;n+=1)for(var o=e.get(n),i=0;i<o.unicodes.length;i+=1)if(o.unicodes[i]===t)return n}return null};function _y(r){this.cmap=r}_y.prototype.charToGlyphIndex=function(r){return this.cmap.glyphIndexMap[r.codePointAt(0)]||0};function ic(r,t){this.encoding=r,this.charset=t}ic.prototype.charToGlyphIndex=function(r){var t=r.codePointAt(0),e=this.encoding[t];return this.charset.indexOf(e)};function gp(r){switch(r.version){case 1:this.names=Co.slice();break;case 2:this.names=new Array(r.numberOfGlyphs);for(var t=0;t<r.numberOfGlyphs;t++)r.glyphNameIndex[t]<Co.length?this.names[t]=Co[r.glyphNameIndex[t]]:this.names[t]=r.names[r.glyphNameIndex[t]-Co.length];break;case 2.5:this.names=new Array(r.numberOfGlyphs);for(var e=0;e<r.numberOfGlyphs;e++)this.names[e]=Co[e+r.glyphNameIndex[e]];break;case 3:this.names=[];break;default:this.names=[];break}}gp.prototype.nameToGlyphIndex=function(r){return this.names.indexOf(r)};gp.prototype.glyphIndexToName=function(r){return this.names[r]};function dA(r){for(var t,e=r.tables.cmap.glyphIndexMap,n=Object.keys(e),o=0;o<n.length;o+=1){var i=n[o],a=e[i];t=r.glyphs.get(a),t.addUnicode(parseInt(i))}for(var s=0;s<r.glyphs.length;s+=1)t=r.glyphs.get(s),r.cffEncoding?r.isCIDFont?t.name="gid"+s:t.name=r.cffEncoding.charset[s]:r.glyphNames.names&&(t.name=r.glyphNames.glyphIndexToName(s))}function hA(r){r._IndexToUnicodeMap={};for(var t=r.tables.cmap.glyphIndexMap,e=Object.keys(t),n=0;n<e.length;n+=1){var o=e[n],i=t[o];r._IndexToUnicodeMap[i]===void 0?r._IndexToUnicodeMap[i]={unicodes:[parseInt(o)]}:r._IndexToUnicodeMap[i].unicodes.push(parseInt(o))}}function mA(r,t){t.lowMemory?hA(r):dA(r)}function gA(r,t,e,n,o){r.beginPath(),r.moveTo(t,e),r.lineTo(n,o),r.stroke()}var To={line:gA};function yA(r,t){var e=t||new dt;return{configurable:!0,get:function(){return typeof e=="function"&&(e=e()),e},set:function(n){e=n}}}function fr(r){this.bindConstructorValues(r)}fr.prototype.bindConstructorValues=function(r){this.index=r.index||0,this.name=r.name||null,this.unicode=r.unicode||void 0,this.unicodes=r.unicodes||r.unicode!==void 0?[r.unicode]:[],"xMin"in r&&(this.xMin=r.xMin),"yMin"in r&&(this.yMin=r.yMin),"xMax"in r&&(this.xMax=r.xMax),"yMax"in r&&(this.yMax=r.yMax),"advanceWidth"in r&&(this.advanceWidth=r.advanceWidth),Object.defineProperty(this,"path",yA(this,r.path))};fr.prototype.addUnicode=function(r){this.unicodes.length===0&&(this.unicode=r),this.unicodes.push(r)};fr.prototype.getBoundingBox=function(){return this.path.getBoundingBox()};fr.prototype.getPath=function(r,t,e,n,o){r=r!==void 0?r:0,t=t!==void 0?t:0,e=e!==void 0?e:72;var i,a;n||(n={});var s=n.xScale,l=n.yScale;if(n.hinting&&o&&o.hinting&&(a=this.path&&o.hinting.exec(this,e)),a)i=o.hinting.getCommands(a),r=Math.round(r),t=Math.round(t),s=l=1;else{i=this.path.commands;var u=1/(this.path.unitsPerEm||1e3)*e;s===void 0&&(s=u),l===void 0&&(l=u)}for(var c=new dt,p=0;p<i.length;p+=1){var f=i[p];f.type==="M"?c.moveTo(r+f.x*s,t+-f.y*l):f.type==="L"?c.lineTo(r+f.x*s,t+-f.y*l):f.type==="Q"?c.quadraticCurveTo(r+f.x1*s,t+-f.y1*l,r+f.x*s,t+-f.y*l):f.type==="C"?c.curveTo(r+f.x1*s,t+-f.y1*l,r+f.x2*s,t+-f.y2*l,r+f.x*s,t+-f.y*l):f.type==="Z"&&c.closePath()}return c};fr.prototype.getContours=function(){if(this.points===void 0)return[];for(var r=[],t=[],e=0;e<this.points.length;e+=1){var n=this.points[e];t.push(n),n.lastPointOfContour&&(r.push(t),t=[])}return xe.argument(t.length===0,"There are still points left in the current contour."),r};fr.prototype.getMetrics=function(){for(var r=this.path.commands,t=[],e=[],n=0;n<r.length;n+=1){var o=r[n];o.type!=="Z"&&(t.push(o.x),e.push(o.y)),(o.type==="Q"||o.type==="C")&&(t.push(o.x1),e.push(o.y1)),o.type==="C"&&(t.push(o.x2),e.push(o.y2))}var i={xMin:Math.min.apply(null,t),yMin:Math.min.apply(null,e),xMax:Math.max.apply(null,t),yMax:Math.max.apply(null,e),leftSideBearing:this.leftSideBearing};return isFinite(i.xMin)||(i.xMin=0),isFinite(i.xMax)||(i.xMax=this.advanceWidth),isFinite(i.yMin)||(i.yMin=0),isFinite(i.yMax)||(i.yMax=0),i.rightSideBearing=this.advanceWidth-i.leftSideBearing-(i.xMax-i.xMin),i};fr.prototype.draw=function(r,t,e,n,o){this.getPath(t,e,n,o).draw(r)};fr.prototype.drawPoints=function(r,t,e,n){function o(p,f,d,h){r.beginPath();for(var m=0;m<p.length;m+=1)r.moveTo(f+p[m].x*h,d+p[m].y*h),r.arc(f+p[m].x*h,d+p[m].y*h,2,0,Math.PI*2,!1);r.closePath(),r.fill()}t=t!==void 0?t:0,e=e!==void 0?e:0,n=n!==void 0?n:24;for(var i=1/this.path.unitsPerEm*n,a=[],s=[],l=this.path,u=0;u<l.commands.length;u+=1){var c=l.commands[u];c.x!==void 0&&a.push({x:c.x,y:-c.y}),c.x1!==void 0&&s.push({x:c.x1,y:-c.y1}),c.x2!==void 0&&s.push({x:c.x2,y:-c.y2})}r.fillStyle="blue",o(a,t,e,i),r.fillStyle="red",o(s,t,e,i)};fr.prototype.drawMetrics=function(r,t,e,n){var o;t=t!==void 0?t:0,e=e!==void 0?e:0,n=n!==void 0?n:24,o=1/this.path.unitsPerEm*n,r.lineWidth=1,r.strokeStyle="black",To.line(r,t,-1e4,t,1e4),To.line(r,-1e4,e,1e4,e);var i=this.xMin||0,a=this.yMin||0,s=this.xMax||0,l=this.yMax||0,u=this.advanceWidth||0;r.strokeStyle="blue",To.line(r,t+i*o,-1e4,t+i*o,1e4),To.line(r,t+s*o,-1e4,t+s*o,1e4),To.line(r,-1e4,e+-a*o,1e4,e+-a*o),To.line(r,-1e4,e+-l*o,1e4,e+-l*o),r.strokeStyle="green",To.line(r,t+u*o,-1e4,t+u*o,1e4)};function Kl(r,t,e){Object.defineProperty(r,t,{get:function(){return r.path,r[e]},set:function(n){r[e]=n},enumerable:!0,configurable:!0})}function yp(r,t){if(this.font=r,this.glyphs={},Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];n.path.unitsPerEm=r.unitsPerEm,this.glyphs[e]=n}this.length=t&&t.length||0}yp.prototype.get=function(r){if(this.glyphs[r]===void 0){this.font._push(r),typeof this.glyphs[r]=="function"&&(this.glyphs[r]=this.glyphs[r]());var t=this.glyphs[r],e=this.font._IndexToUnicodeMap[r];if(e)for(var n=0;n<e.unicodes.length;n++)t.addUnicode(e.unicodes[n]);this.font.cffEncoding?this.font.isCIDFont?t.name="gid"+r:t.name=this.font.cffEncoding.charset[r]:this.font.glyphNames.names&&(t.name=this.font.glyphNames.glyphIndexToName(r)),this.glyphs[r].advanceWidth=this.font._hmtxTableData[r].advanceWidth,this.glyphs[r].leftSideBearing=this.font._hmtxTableData[r].leftSideBearing}else typeof this.glyphs[r]=="function"&&(this.glyphs[r]=this.glyphs[r]());return this.glyphs[r]};yp.prototype.push=function(r,t){this.glyphs[r]=t,this.length++};function vA(r,t){return new fr({index:t,font:r})}function xA(r,t,e,n,o,i){return function(){var a=new fr({index:t,font:r});return a.path=function(){e(a,n,o);var s=i(r.glyphs,a);return s.unitsPerEm=r.unitsPerEm,s},Kl(a,"xMin","_xMin"),Kl(a,"xMax","_xMax"),Kl(a,"yMin","_yMin"),Kl(a,"yMax","_yMax"),a}}function bA(r,t,e,n){return function(){var o=new fr({index:t,font:r});return o.path=function(){var i=e(r,o,n);return i.unitsPerEm=r.unitsPerEm,i},o}}var nn={GlyphSet:yp,glyphLoader:vA,ttfGlyphLoader:xA,cffGlyphLoader:bA};function Iy(r,t){if(r===t)return!0;if(Array.isArray(r)&&Array.isArray(t)){if(r.length!==t.length)return!1;for(var e=0;e<r.length;e+=1)if(!Iy(r[e],t[e]))return!1;return!0}else return!1}function sp(r){var t;return r.length<1240?t=107:r.length<33900?t=1131:t=32768,t}function Xn(r,t,e){var n=[],o=[],i=pe.getCard16(r,t),a,s;if(i!==0){var l=pe.getByte(r,t+2);a=t+(i+1)*l+2;for(var u=t+3,c=0;c<i+1;c+=1)n.push(pe.getOffset(r,u,l)),u+=l;s=a+n[i]}else s=t+2;for(var p=0;p<n.length-1;p+=1){var f=pe.getBytes(r,a+n[p],a+n[p+1]);e&&(f=e(f)),o.push(f)}return{objects:o,startOffset:t,endOffset:s}}function SA(r,t){var e=[],n=pe.getCard16(r,t),o,i;if(n!==0){var a=pe.getByte(r,t+2);o=t+(n+1)*a+2;for(var s=t+3,l=0;l<n+1;l+=1)e.push(pe.getOffset(r,s,a)),s+=a;i=o+e[n]}else i=t+2;return{offsets:e,startOffset:t,endOffset:i}}function wA(r,t,e,n,o){var i=pe.getCard16(e,n),a=0;if(i!==0){var s=pe.getByte(e,n+2);a=n+(i+1)*s+2}var l=pe.getBytes(e,a+t[r],a+t[r+1]);return o&&(l=o(l)),l}function TA(r){for(var t="",e=15,n=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"];;){var o=r.parseByte(),i=o>>4,a=o&15;if(i===e||(t+=n[i],a===e))break;t+=n[a]}return parseFloat(t)}function CA(r,t){var e,n,o,i;if(t===28)return e=r.parseByte(),n=r.parseByte(),e<<8|n;if(t===29)return e=r.parseByte(),n=r.parseByte(),o=r.parseByte(),i=r.parseByte(),e<<24|n<<16|o<<8|i;if(t===30)return TA(r);if(t>=32&&t<=246)return t-139;if(t>=247&&t<=250)return e=r.parseByte(),(t-247)*256+e+108;if(t>=251&&t<=254)return e=r.parseByte(),-(t-251)*256-e-108;throw new Error("Invalid b0 "+t)}function AA(r){for(var t={},e=0;e<r.length;e+=1){var n=r[e][0],o=r[e][1],i=void 0;if(o.length===1?i=o[0]:i=o,t.hasOwnProperty(n)&&!isNaN(t[n]))throw new Error("Object "+t+" already has key "+n);t[n]=i}return t}function Oy(r,t,e){t=t!==void 0?t:0;var n=new pe.Parser(r,t),o=[],i=[];for(e=e!==void 0?e:r.length;n.relativeOffset<e;){var a=n.parseByte();a<=21?(a===12&&(a=1200+n.parseByte()),o.push([a,i]),i=[]):i.push(CA(n,a))}return AA(o)}function Ya(r,t){return t<=390?t=Ql[t]:t=r[t-391],t}function Ly(r,t,e){for(var n={},o,i=0;i<t.length;i+=1){var a=t[i];if(Array.isArray(a.type)){var s=[];s.length=a.type.length;for(var l=0;l<a.type.length;l++)o=r[a.op]!==void 0?r[a.op][l]:void 0,o===void 0&&(o=a.value!==void 0&&a.value[l]!==void 0?a.value[l]:null),a.type[l]==="SID"&&(o=Ya(e,o)),s[l]=o;n[a.name]=s}else o=r[a.op],o===void 0&&(o=a.value!==void 0?a.value:null),a.type==="SID"&&(o=Ya(e,o)),n[a.name]=o}return n}function _A(r,t){var e={};return e.formatMajor=pe.getCard8(r,t),e.formatMinor=pe.getCard8(r,t+1),e.size=pe.getCard8(r,t+2),e.offsetSize=pe.getCard8(r,t+3),e.startOffset=t,e.endOffset=t+4,e}var Ny=[{name:"version",op:0,type:"SID"},{name:"notice",op:1,type:"SID"},{name:"copyright",op:1200,type:"SID"},{name:"fullName",op:2,type:"SID"},{name:"familyName",op:3,type:"SID"},{name:"weight",op:4,type:"SID"},{name:"isFixedPitch",op:1201,type:"number",value:0},{name:"italicAngle",op:1202,type:"number",value:0},{name:"underlinePosition",op:1203,type:"number",value:-100},{name:"underlineThickness",op:1204,type:"number",value:50},{name:"paintType",op:1205,type:"number",value:0},{name:"charstringType",op:1206,type:"number",value:2},{name:"fontMatrix",op:1207,type:["real","real","real","real","real","real"],value:[.001,0,0,.001,0,0]},{name:"uniqueId",op:13,type:"number"},{name:"fontBBox",op:5,type:["number","number","number","number"],value:[0,0,0,0]},{name:"strokeWidth",op:1208,type:"number",value:0},{name:"xuid",op:14,type:[],value:null},{name:"charset",op:15,type:"offset",value:0},{name:"encoding",op:16,type:"offset",value:0},{name:"charStrings",op:17,type:"offset",value:0},{name:"private",op:18,type:["number","offset"],value:[0,0]},{name:"ros",op:1230,type:["SID","SID","number"]},{name:"cidFontVersion",op:1231,type:"number",value:0},{name:"cidFontRevision",op:1232,type:"number",value:0},{name:"cidFontType",op:1233,type:"number",value:0},{name:"cidCount",op:1234,type:"number",value:8720},{name:"uidBase",op:1235,type:"number"},{name:"fdArray",op:1236,type:"offset"},{name:"fdSelect",op:1237,type:"offset"},{name:"fontName",op:1238,type:"SID"}],Py=[{name:"subrs",op:19,type:"offset",value:0},{name:"defaultWidthX",op:20,type:"number",value:0},{name:"nominalWidthX",op:21,type:"number",value:0}];function IA(r,t){var e=Oy(r,0,r.byteLength);return Ly(e,Ny,t)}function My(r,t,e,n){var o=Oy(r,t,e);return Ly(o,Py,n)}function Gg(r,t,e,n){for(var o=[],i=0;i<e.length;i+=1){var a=new DataView(new Uint8Array(e[i]).buffer),s=IA(a,n);s._subrs=[],s._subrsBias=0,s._defaultWidthX=0,s._nominalWidthX=0;var l=s.private[0],u=s.private[1];if(l!==0&&u!==0){var c=My(r,u+t,l,n);if(s._defaultWidthX=c.defaultWidthX,s._nominalWidthX=c.nominalWidthX,c.subrs!==0){var p=u+c.subrs,f=Xn(r,p+t);s._subrs=f.objects,s._subrsBias=sp(s._subrs)}s._privateDict=c}o.push(s)}return o}function OA(r,t,e,n){var o,i,a=new pe.Parser(r,t);e-=1;var s=[".notdef"],l=a.parseCard8();if(l===0)for(var u=0;u<e;u+=1)o=a.parseSID(),s.push(Ya(n,o));else if(l===1)for(;s.length<=e;){o=a.parseSID(),i=a.parseCard8();for(var c=0;c<=i;c+=1)s.push(Ya(n,o)),o+=1}else if(l===2)for(;s.length<=e;){o=a.parseSID(),i=a.parseCard16();for(var p=0;p<=i;p+=1)s.push(Ya(n,o)),o+=1}else throw new Error("Unknown charset format "+l);return s}function LA(r,t,e){var n,o={},i=new pe.Parser(r,t),a=i.parseCard8();if(a===0)for(var s=i.parseCard8(),l=0;l<s;l+=1)n=i.parseCard8(),o[n]=l;else if(a===1){var u=i.parseCard8();n=1;for(var c=0;c<u;c+=1)for(var p=i.parseCard8(),f=i.parseCard8(),d=p;d<=p+f;d+=1)o[d]=n,n+=1}else throw new Error("Unknown encoding format "+a);return new ic(o,e)}function Ug(r,t,e){var n,o,i,a,s=new dt,l=[],u=0,c=!1,p=!1,f=0,d=0,h,m,g,v;if(r.isCIDFont){var x=r.tables.cff.topDict._fdSelect[t.index],S=r.tables.cff.topDict._fdArray[x];h=S._subrs,m=S._subrsBias,g=S._defaultWidthX,v=S._nominalWidthX}else h=r.tables.cff.topDict._subrs,m=r.tables.cff.topDict._subrsBias,g=r.tables.cff.topDict._defaultWidthX,v=r.tables.cff.topDict._nominalWidthX;var w=g;function b(y,I){p&&s.closePath(),s.moveTo(y,I),p=!0}function _(){var y;y=l.length%2!==0,y&&!c&&(w=l.shift()+v),u+=l.length>>1,l.length=0,c=!0}function T(y){for(var I,A,O,C,N,P,G,$,Y,ie,j,H,V=0;V<y.length;){var R=y[V];switch(V+=1,R){case 1:_();break;case 3:_();break;case 4:l.length>1&&!c&&(w=l.shift()+v,c=!0),d+=l.pop(),b(f,d);break;case 5:for(;l.length>0;)f+=l.shift(),d+=l.shift(),s.lineTo(f,d);break;case 6:for(;l.length>0&&(f+=l.shift(),s.lineTo(f,d),l.length!==0);)d+=l.shift(),s.lineTo(f,d);break;case 7:for(;l.length>0&&(d+=l.shift(),s.lineTo(f,d),l.length!==0);)f+=l.shift(),s.lineTo(f,d);break;case 8:for(;l.length>0;)n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a+l.shift(),s.curveTo(n,o,i,a,f,d);break;case 10:N=l.pop()+m,P=h[N],P&&T(P);break;case 11:return;case 12:switch(R=y[V],V+=1,R){case 35:n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),G=i+l.shift(),$=a+l.shift(),Y=G+l.shift(),ie=$+l.shift(),j=Y+l.shift(),H=ie+l.shift(),f=j+l.shift(),d=H+l.shift(),l.shift(),s.curveTo(n,o,i,a,G,$),s.curveTo(Y,ie,j,H,f,d);break;case 34:n=f+l.shift(),o=d,i=n+l.shift(),a=o+l.shift(),G=i+l.shift(),$=a,Y=G+l.shift(),ie=a,j=Y+l.shift(),H=d,f=j+l.shift(),s.curveTo(n,o,i,a,G,$),s.curveTo(Y,ie,j,H,f,d);break;case 36:n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),G=i+l.shift(),$=a,Y=G+l.shift(),ie=a,j=Y+l.shift(),H=ie+l.shift(),f=j+l.shift(),s.curveTo(n,o,i,a,G,$),s.curveTo(Y,ie,j,H,f,d);break;case 37:n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),G=i+l.shift(),$=a+l.shift(),Y=G+l.shift(),ie=$+l.shift(),j=Y+l.shift(),H=ie+l.shift(),Math.abs(j-f)>Math.abs(H-d)?f=j+l.shift():d=H+l.shift(),s.curveTo(n,o,i,a,G,$),s.curveTo(Y,ie,j,H,f,d);break;default:console.log("Glyph "+t.index+": unknown operator "+1200+R),l.length=0}break;case 14:l.length>0&&!c&&(w=l.shift()+v,c=!0),p&&(s.closePath(),p=!1);break;case 18:_();break;case 19:case 20:_(),V+=u+7>>3;break;case 21:l.length>2&&!c&&(w=l.shift()+v,c=!0),d+=l.pop(),f+=l.pop(),b(f,d);break;case 22:l.length>1&&!c&&(w=l.shift()+v,c=!0),f+=l.pop(),b(f,d);break;case 23:_();break;case 24:for(;l.length>2;)n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a+l.shift(),s.curveTo(n,o,i,a,f,d);f+=l.shift(),d+=l.shift(),s.lineTo(f,d);break;case 25:for(;l.length>6;)f+=l.shift(),d+=l.shift(),s.lineTo(f,d);n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a+l.shift(),s.curveTo(n,o,i,a,f,d);break;case 26:for(l.length%2&&(f+=l.shift());l.length>0;)n=f,o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i,d=a+l.shift(),s.curveTo(n,o,i,a,f,d);break;case 27:for(l.length%2&&(d+=l.shift());l.length>0;)n=f+l.shift(),o=d,i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a,s.curveTo(n,o,i,a,f,d);break;case 28:I=y[V],A=y[V+1],l.push((I<<24|A<<16)>>16),V+=2;break;case 29:N=l.pop()+r.gsubrsBias,P=r.gsubrs[N],P&&T(P);break;case 30:for(;l.length>0&&(n=f,o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a+(l.length===1?l.shift():0),s.curveTo(n,o,i,a,f,d),l.length!==0);)n=f+l.shift(),o=d,i=n+l.shift(),a=o+l.shift(),d=a+l.shift(),f=i+(l.length===1?l.shift():0),s.curveTo(n,o,i,a,f,d);break;case 31:for(;l.length>0&&(n=f+l.shift(),o=d,i=n+l.shift(),a=o+l.shift(),d=a+l.shift(),f=i+(l.length===1?l.shift():0),s.curveTo(n,o,i,a,f,d),l.length!==0);)n=f,o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a+(l.length===1?l.shift():0),s.curveTo(n,o,i,a,f,d);break;default:R<32?console.log("Glyph "+t.index+": unknown operator "+R):R<247?l.push(R-139):R<251?(I=y[V],V+=1,l.push((R-247)*256+I+108)):R<255?(I=y[V],V+=1,l.push(-(R-251)*256-I-108)):(I=y[V],A=y[V+1],O=y[V+2],C=y[V+3],V+=4,l.push((I<<24|A<<16|O<<8|C)/65536))}}}return T(e),t.advanceWidth=w,s}function NA(r,t,e,n){var o=[],i,a=new pe.Parser(r,t),s=a.parseCard8();if(s===0)for(var l=0;l<e;l++){if(i=a.parseCard8(),i>=n)throw new Error("CFF table CID Font FDSelect has bad FD index value "+i+" (FD count "+n+")");o.push(i)}else if(s===3){var u=a.parseCard16(),c=a.parseCard16();if(c!==0)throw new Error("CFF Table CID Font FDSelect format 3 range has bad initial GID "+c);for(var p,f=0;f<u;f++){if(i=a.parseCard8(),p=a.parseCard16(),i>=n)throw new Error("CFF table CID Font FDSelect has bad FD index value "+i+" (FD count "+n+")");if(p>e)throw new Error("CFF Table CID Font FDSelect format 3 range has bad GID "+p);for(;c<p;c++)o.push(i);c=p}if(p!==e)throw new Error("CFF Table CID Font FDSelect format 3 range has bad final GID "+p)}else throw new Error("CFF Table CID Font FDSelect table has unsupported format "+s);return o}function PA(r,t,e,n){e.tables.cff={};var o=_A(r,t),i=Xn(r,o.endOffset,pe.bytesToString),a=Xn(r,i.endOffset),s=Xn(r,a.endOffset,pe.bytesToString),l=Xn(r,s.endOffset);e.gsubrs=l.objects,e.gsubrsBias=sp(e.gsubrs);var u=Gg(r,t,a.objects,s.objects);if(u.length!==1)throw new Error("CFF table has too many fonts in 'FontSet' - count of fonts NameIndex.length = "+u.length);var c=u[0];if(e.tables.cff.topDict=c,c._privateDict&&(e.defaultWidthX=c._privateDict.defaultWidthX,e.nominalWidthX=c._privateDict.nominalWidthX),c.ros[0]!==void 0&&c.ros[1]!==void 0&&(e.isCIDFont=!0),e.isCIDFont){var p=c.fdArray,f=c.fdSelect;if(p===0||f===0)throw new Error("Font is marked as a CID font, but FDArray and/or FDSelect information is missing");p+=t;var d=Xn(r,p),h=Gg(r,t,d.objects,s.objects);c._fdArray=h,f+=t,c._fdSelect=NA(r,f,e.numGlyphs,h.length)}var m=t+c.private[1],g=My(r,m,c.private[0],s.objects);if(e.defaultWidthX=g.defaultWidthX,e.nominalWidthX=g.nominalWidthX,g.subrs!==0){var v=m+g.subrs,x=Xn(r,v);e.subrs=x.objects,e.subrsBias=sp(e.subrs)}else e.subrs=[],e.subrsBias=0;var S;n.lowMemory?(S=SA(r,t+c.charStrings),e.nGlyphs=S.offsets.length):(S=Xn(r,t+c.charStrings),e.nGlyphs=S.objects.length);var w=OA(r,t+c.charset,e.nGlyphs,s.objects);if(c.encoding===0?e.cffEncoding=new ic(pA,w):c.encoding===1?e.cffEncoding=new ic(fA,w):e.cffEncoding=LA(r,t+c.encoding,w),e.encoding=e.encoding||e.cffEncoding,e.glyphs=new nn.GlyphSet(e),n.lowMemory)e._push=function(T){var y=wA(T,S.offsets,r,t+c.charStrings);e.glyphs.push(T,nn.cffGlyphLoader(e,T,Ug,y))};else for(var b=0;b<e.nGlyphs;b+=1){var _=S.objects[b];e.glyphs.push(b,nn.cffGlyphLoader(e,b,Ug,_))}}function Ey(r,t){var e,n=Ql.indexOf(r);return n>=0&&(e=n),n=t.indexOf(r),n>=0?e=n+Ql.length:(e=Ql.length+t.length,t.push(r)),e}function MA(){return new le.Record("Header",[{name:"major",type:"Card8",value:1},{name:"minor",type:"Card8",value:0},{name:"hdrSize",type:"Card8",value:4},{name:"major",type:"Card8",value:1}])}function EA(r){var t=new le.Record("Name INDEX",[{name:"names",type:"INDEX",value:[]}]);t.names=[];for(var e=0;e<r.length;e+=1)t.names.push({name:"name_"+e,type:"NAME",value:r[e]});return t}function Dy(r,t,e){for(var n={},o=0;o<r.length;o+=1){var i=r[o],a=t[i.name];a!==void 0&&!Iy(a,i.value)&&(i.type==="SID"&&(a=Ey(a,e)),n[i.op]={name:i.name,type:i.type,value:a})}return n}function Vg(r,t){var e=new le.Record("Top DICT",[{name:"dict",type:"DICT",value:{}}]);return e.dict=Dy(Ny,r,t),e}function zg(r){var t=new le.Record("Top DICT INDEX",[{name:"topDicts",type:"INDEX",value:[]}]);return t.topDicts=[{name:"topDict_0",type:"TABLE",value:r}],t}function DA(r){var t=new le.Record("String INDEX",[{name:"strings",type:"INDEX",value:[]}]);t.strings=[];for(var e=0;e<r.length;e+=1)t.strings.push({name:"string_"+e,type:"STRING",value:r[e]});return t}function BA(){return new le.Record("Global Subr INDEX",[{name:"subrs",type:"INDEX",value:[]}])}function FA(r,t){for(var e=new le.Record("Charsets",[{name:"format",type:"Card8",value:0}]),n=0;n<r.length;n+=1){var o=r[n],i=Ey(o,t);e.fields.push({name:"glyph_"+n,type:"SID",value:i})}return e}function RA(r){var t=[],e=r.path;t.push({name:"width",type:"NUMBER",value:r.advanceWidth});for(var n=0,o=0,i=0;i<e.commands.length;i+=1){var a=void 0,s=void 0,l=e.commands[i];if(l.type==="Q"){var u=.3333333333333333,c=2/3;l={type:"C",x:l.x,y:l.y,x1:Math.round(u*n+c*l.x1),y1:Math.round(u*o+c*l.y1),x2:Math.round(u*l.x+c*l.x1),y2:Math.round(u*l.y+c*l.y1)}}if(l.type==="M")a=Math.round(l.x-n),s=Math.round(l.y-o),t.push({name:"dx",type:"NUMBER",value:a}),t.push({name:"dy",type:"NUMBER",value:s}),t.push({name:"rmoveto",type:"OP",value:21}),n=Math.round(l.x),o=Math.round(l.y);else if(l.type==="L")a=Math.round(l.x-n),s=Math.round(l.y-o),t.push({name:"dx",type:"NUMBER",value:a}),t.push({name:"dy",type:"NUMBER",value:s}),t.push({name:"rlineto",type:"OP",value:5}),n=Math.round(l.x),o=Math.round(l.y);else if(l.type==="C"){var p=Math.round(l.x1-n),f=Math.round(l.y1-o),d=Math.round(l.x2-l.x1),h=Math.round(l.y2-l.y1);a=Math.round(l.x-l.x2),s=Math.round(l.y-l.y2),t.push({name:"dx1",type:"NUMBER",value:p}),t.push({name:"dy1",type:"NUMBER",value:f}),t.push({name:"dx2",type:"NUMBER",value:d}),t.push({name:"dy2",type:"NUMBER",value:h}),t.push({name:"dx",type:"NUMBER",value:a}),t.push({name:"dy",type:"NUMBER",value:s}),t.push({name:"rrcurveto",type:"OP",value:8}),n=Math.round(l.x),o=Math.round(l.y)}}return t.push({name:"endchar",type:"OP",value:14}),t}function kA(r){for(var t=new le.Record("CharStrings INDEX",[{name:"charStrings",type:"INDEX",value:[]}]),e=0;e<r.length;e+=1){var n=r.get(e),o=RA(n);t.charStrings.push({name:n.name,type:"CHARSTRING",value:o})}return t}function GA(r,t){var e=new le.Record("Private DICT",[{name:"dict",type:"DICT",value:{}}]);return e.dict=Dy(Py,r,t),e}function UA(r,t){for(var e=new le.Table("CFF ",[{name:"header",type:"RECORD"},{name:"nameIndex",type:"RECORD"},{name:"topDictIndex",type:"RECORD"},{name:"stringIndex",type:"RECORD"},{name:"globalSubrIndex",type:"RECORD"},{name:"charsets",type:"RECORD"},{name:"charStringsIndex",type:"RECORD"},{name:"privateDict",type:"RECORD"}]),n=1/t.unitsPerEm,o={version:t.version,fullName:t.fullName,familyName:t.familyName,weight:t.weightName,fontBBox:t.fontBBox||[0,0,0,0],fontMatrix:[n,0,0,n,0,0],charset:999,encoding:0,charStrings:999,private:[0,999]},i={},a=[],s,l=1;l<r.length;l+=1)s=r.get(l),a.push(s.name);var u=[];e.header=MA(),e.nameIndex=EA([t.postScriptName]);var c=Vg(o,u);e.topDictIndex=zg(c),e.globalSubrIndex=BA(),e.charsets=FA(a,u),e.charStringsIndex=kA(r),e.privateDict=GA(i,u),e.stringIndex=DA(u);var p=e.header.sizeOf()+e.nameIndex.sizeOf()+e.topDictIndex.sizeOf()+e.stringIndex.sizeOf()+e.globalSubrIndex.sizeOf();return o.charset=p,o.encoding=0,o.charStrings=o.charset+e.charsets.sizeOf(),o.private[1]=o.charStrings+e.charStringsIndex.sizeOf(),c=Vg(o,u),e.topDictIndex=zg(c),e}var By={parse:PA,make:UA};function VA(r,t){var e={},n=new pe.Parser(r,t);return e.version=n.parseVersion(),e.fontRevision=Math.round(n.parseFixed()*1e3)/1e3,e.checkSumAdjustment=n.parseULong(),e.magicNumber=n.parseULong(),xe.argument(e.magicNumber===1594834165,"Font header has wrong magic number."),e.flags=n.parseUShort(),e.unitsPerEm=n.parseUShort(),e.created=n.parseLongDateTime(),e.modified=n.parseLongDateTime(),e.xMin=n.parseShort(),e.yMin=n.parseShort(),e.xMax=n.parseShort(),e.yMax=n.parseShort(),e.macStyle=n.parseUShort(),e.lowestRecPPEM=n.parseUShort(),e.fontDirectionHint=n.parseShort(),e.indexToLocFormat=n.parseShort(),e.glyphDataFormat=n.parseShort(),e}function zA(r){var t=Math.round(new Date().getTime()/1e3)+2082844800,e=t;return r.createdTimestamp&&(e=r.createdTimestamp+2082844800),new le.Table("head",[{name:"version",type:"FIXED",value:65536},{name:"fontRevision",type:"FIXED",value:65536},{name:"checkSumAdjustment",type:"ULONG",value:0},{name:"magicNumber",type:"ULONG",value:1594834165},{name:"flags",type:"USHORT",value:0},{name:"unitsPerEm",type:"USHORT",value:1e3},{name:"created",type:"LONGDATETIME",value:e},{name:"modified",type:"LONGDATETIME",value:t},{name:"xMin",type:"SHORT",value:0},{name:"yMin",type:"SHORT",value:0},{name:"xMax",type:"SHORT",value:0},{name:"yMax",type:"SHORT",value:0},{name:"macStyle",type:"USHORT",value:0},{name:"lowestRecPPEM",type:"USHORT",value:0},{name:"fontDirectionHint",type:"SHORT",value:2},{name:"indexToLocFormat",type:"SHORT",value:0},{name:"glyphDataFormat",type:"SHORT",value:0}],r)}var Fy={parse:VA,make:zA};function jA(r,t){var e={},n=new pe.Parser(r,t);return e.version=n.parseVersion(),e.ascender=n.parseShort(),e.descender=n.parseShort(),e.lineGap=n.parseShort(),e.advanceWidthMax=n.parseUShort(),e.minLeftSideBearing=n.parseShort(),e.minRightSideBearing=n.parseShort(),e.xMaxExtent=n.parseShort(),e.caretSlopeRise=n.parseShort(),e.caretSlopeRun=n.parseShort(),e.caretOffset=n.parseShort(),n.relativeOffset+=8,e.metricDataFormat=n.parseShort(),e.numberOfHMetrics=n.parseUShort(),e}function HA(r){return new le.Table("hhea",[{name:"version",type:"FIXED",value:65536},{name:"ascender",type:"FWORD",value:0},{name:"descender",type:"FWORD",value:0},{name:"lineGap",type:"FWORD",value:0},{name:"advanceWidthMax",type:"UFWORD",value:0},{name:"minLeftSideBearing",type:"FWORD",value:0},{name:"minRightSideBearing",type:"FWORD",value:0},{name:"xMaxExtent",type:"FWORD",value:0},{name:"caretSlopeRise",type:"SHORT",value:1},{name:"caretSlopeRun",type:"SHORT",value:0},{name:"caretOffset",type:"SHORT",value:0},{name:"reserved1",type:"SHORT",value:0},{name:"reserved2",type:"SHORT",value:0},{name:"reserved3",type:"SHORT",value:0},{name:"reserved4",type:"SHORT",value:0},{name:"metricDataFormat",type:"SHORT",value:0},{name:"numberOfHMetrics",type:"USHORT",value:0}],r)}var Ry={parse:jA,make:HA};function WA(r,t,e,n,o){for(var i,a,s=new pe.Parser(r,t),l=0;l<n;l+=1){l<e&&(i=s.parseUShort(),a=s.parseShort());var u=o.get(l);u.advanceWidth=i,u.leftSideBearing=a}}function qA(r,t,e,n,o){r._hmtxTableData={};for(var i,a,s=new pe.Parser(t,e),l=0;l<o;l+=1)l<n&&(i=s.parseUShort(),a=s.parseShort()),r._hmtxTableData[l]={advanceWidth:i,leftSideBearing:a}}function XA(r,t,e,n,o,i,a){a.lowMemory?qA(r,t,e,n,o):WA(t,e,n,o,i)}function YA(r){for(var t=new le.Table("hmtx",[]),e=0;e<r.length;e+=1){var n=r.get(e),o=n.advanceWidth||0,i=n.leftSideBearing||0;t.fields.push({name:"advanceWidth_"+e,type:"USHORT",value:o}),t.fields.push({name:"leftSideBearing_"+e,type:"SHORT",value:i})}return t}var ky={parse:XA,make:YA};function $A(r){for(var t=new le.Table("ltag",[{name:"version",type:"ULONG",value:1},{name:"flags",type:"ULONG",value:0},{name:"numTags",type:"ULONG",value:r.length}]),e="",n=12+r.length*4,o=0;o<r.length;++o){var i=e.indexOf(r[o]);i<0&&(i=e.length,e+=r[o]),t.fields.push({name:"offset "+o,type:"USHORT",value:n+i}),t.fields.push({name:"length "+o,type:"USHORT",value:r[o].length})}return t.fields.push({name:"stringPool",type:"CHARARRAY",value:e}),t}function KA(r,t){var e=new pe.Parser(r,t),n=e.parseULong();xe.argument(n===1,"Unsupported ltag table version."),e.skip("uLong",1);for(var o=e.parseULong(),i=[],a=0;a<o;a++){for(var s="",l=t+e.parseUShort(),u=e.parseUShort(),c=l;c<l+u;++c)s+=String.fromCharCode(r.getInt8(c));i.push(s)}return i}var Gy={make:$A,parse:KA};function ZA(r,t){var e={},n=new pe.Parser(r,t);return e.version=n.parseVersion(),e.numGlyphs=n.parseUShort(),e.version===1&&(e.maxPoints=n.parseUShort(),e.maxContours=n.parseUShort(),e.maxCompositePoints=n.parseUShort(),e.maxCompositeContours=n.parseUShort(),e.maxZones=n.parseUShort(),e.maxTwilightPoints=n.parseUShort(),e.maxStorage=n.parseUShort(),e.maxFunctionDefs=n.parseUShort(),e.maxInstructionDefs=n.parseUShort(),e.maxStackElements=n.parseUShort(),e.maxSizeOfInstructions=n.parseUShort(),e.maxComponentElements=n.parseUShort(),e.maxComponentDepth=n.parseUShort()),e}function QA(r){return new le.Table("maxp",[{name:"version",type:"FIXED",value:20480},{name:"numGlyphs",type:"USHORT",value:r}])}var Uy={parse:ZA,make:QA},Vy=["copyright","fontFamily","fontSubfamily","uniqueID","fullName","version","postScriptName","trademark","manufacturer","designer","description","manufacturerURL","designerURL","license","licenseURL","reserved","preferredFamily","preferredSubfamily","compatibleFullName","sampleText","postScriptFindFontName","wwsFamily","wwsSubfamily"],zy={0:"en",1:"fr",2:"de",3:"it",4:"nl",5:"sv",6:"es",7:"da",8:"pt",9:"no",10:"he",11:"ja",12:"ar",13:"fi",14:"el",15:"is",16:"mt",17:"tr",18:"hr",19:"zh-Hant",20:"ur",21:"hi",22:"th",23:"ko",24:"lt",25:"pl",26:"hu",27:"es",28:"lv",29:"se",30:"fo",31:"fa",32:"ru",33:"zh",34:"nl-BE",35:"ga",36:"sq",37:"ro",38:"cz",39:"sk",40:"si",41:"yi",42:"sr",43:"mk",44:"bg",45:"uk",46:"be",47:"uz",48:"kk",49:"az-Cyrl",50:"az-Arab",51:"hy",52:"ka",53:"mo",54:"ky",55:"tg",56:"tk",57:"mn-CN",58:"mn",59:"ps",60:"ks",61:"ku",62:"sd",63:"bo",64:"ne",65:"sa",66:"mr",67:"bn",68:"as",69:"gu",70:"pa",71:"or",72:"ml",73:"kn",74:"ta",75:"te",76:"si",77:"my",78:"km",79:"lo",80:"vi",81:"id",82:"tl",83:"ms",84:"ms-Arab",85:"am",86:"ti",87:"om",88:"so",89:"sw",90:"rw",91:"rn",92:"ny",93:"mg",94:"eo",128:"cy",129:"eu",130:"ca",131:"la",132:"qu",133:"gn",134:"ay",135:"tt",136:"ug",137:"dz",138:"jv",139:"su",140:"gl",141:"af",142:"br",143:"iu",144:"gd",145:"gv",146:"ga",147:"to",148:"el-polyton",149:"kl",150:"az",151:"nn"},JA={0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:5,11:1,12:4,13:0,14:6,15:0,16:0,17:0,18:0,19:2,20:4,21:9,22:21,23:3,24:29,25:29,26:29,27:29,28:29,29:0,30:0,31:4,32:7,33:25,34:0,35:0,36:0,37:0,38:29,39:29,40:0,41:5,42:7,43:7,44:7,45:7,46:7,47:7,48:7,49:7,50:4,51:24,52:23,53:7,54:7,55:7,56:7,57:27,58:7,59:4,60:4,61:4,62:4,63:26,64:9,65:9,66:9,67:13,68:13,69:11,70:10,71:12,72:17,73:16,74:14,75:15,76:18,77:19,78:20,79:22,80:30,81:0,82:0,83:0,84:4,85:28,86:28,87:28,88:0,89:0,90:0,91:0,92:0,93:0,94:0,128:0,129:0,130:0,131:0,132:0,133:0,134:0,135:7,136:4,137:26,138:0,139:0,140:0,141:0,142:0,143:28,144:0,145:0,146:0,147:0,148:6,149:0,150:0,151:0},jy={1078:"af",1052:"sq",1156:"gsw",1118:"am",5121:"ar-DZ",15361:"ar-BH",3073:"ar",2049:"ar-IQ",11265:"ar-JO",13313:"ar-KW",12289:"ar-LB",4097:"ar-LY",6145:"ary",8193:"ar-OM",16385:"ar-QA",1025:"ar-SA",10241:"ar-SY",7169:"aeb",14337:"ar-AE",9217:"ar-YE",1067:"hy",1101:"as",2092:"az-Cyrl",1068:"az",1133:"ba",1069:"eu",1059:"be",2117:"bn",1093:"bn-IN",8218:"bs-Cyrl",5146:"bs",1150:"br",1026:"bg",1027:"ca",3076:"zh-HK",5124:"zh-MO",2052:"zh",4100:"zh-SG",1028:"zh-TW",1155:"co",1050:"hr",4122:"hr-BA",1029:"cs",1030:"da",1164:"prs",1125:"dv",2067:"nl-BE",1043:"nl",3081:"en-AU",10249:"en-BZ",4105:"en-CA",9225:"en-029",16393:"en-IN",6153:"en-IE",8201:"en-JM",17417:"en-MY",5129:"en-NZ",13321:"en-PH",18441:"en-SG",7177:"en-ZA",11273:"en-TT",2057:"en-GB",1033:"en",12297:"en-ZW",1061:"et",1080:"fo",1124:"fil",1035:"fi",2060:"fr-BE",3084:"fr-CA",1036:"fr",5132:"fr-LU",6156:"fr-MC",4108:"fr-CH",1122:"fy",1110:"gl",1079:"ka",3079:"de-AT",1031:"de",5127:"de-LI",4103:"de-LU",2055:"de-CH",1032:"el",1135:"kl",1095:"gu",1128:"ha",1037:"he",1081:"hi",1038:"hu",1039:"is",1136:"ig",1057:"id",1117:"iu",2141:"iu-Latn",2108:"ga",1076:"xh",1077:"zu",1040:"it",2064:"it-CH",1041:"ja",1099:"kn",1087:"kk",1107:"km",1158:"quc",1159:"rw",1089:"sw",1111:"kok",1042:"ko",1088:"ky",1108:"lo",1062:"lv",1063:"lt",2094:"dsb",1134:"lb",1071:"mk",2110:"ms-BN",1086:"ms",1100:"ml",1082:"mt",1153:"mi",1146:"arn",1102:"mr",1148:"moh",1104:"mn",2128:"mn-CN",1121:"ne",1044:"nb",2068:"nn",1154:"oc",1096:"or",1123:"ps",1045:"pl",1046:"pt",2070:"pt-PT",1094:"pa",1131:"qu-BO",2155:"qu-EC",3179:"qu",1048:"ro",1047:"rm",1049:"ru",9275:"smn",4155:"smj-NO",5179:"smj",3131:"se-FI",1083:"se",2107:"se-SE",8251:"sms",6203:"sma-NO",7227:"sms",1103:"sa",7194:"sr-Cyrl-BA",3098:"sr",6170:"sr-Latn-BA",2074:"sr-Latn",1132:"nso",1074:"tn",1115:"si",1051:"sk",1060:"sl",11274:"es-AR",16394:"es-BO",13322:"es-CL",9226:"es-CO",5130:"es-CR",7178:"es-DO",12298:"es-EC",17418:"es-SV",4106:"es-GT",18442:"es-HN",2058:"es-MX",19466:"es-NI",6154:"es-PA",15370:"es-PY",10250:"es-PE",20490:"es-PR",3082:"es",1034:"es",21514:"es-US",14346:"es-UY",8202:"es-VE",2077:"sv-FI",1053:"sv",1114:"syr",1064:"tg",2143:"tzm",1097:"ta",1092:"tt",1098:"te",1054:"th",1105:"bo",1055:"tr",1090:"tk",1152:"ug",1058:"uk",1070:"hsb",1056:"ur",2115:"uz-Cyrl",1091:"uz",1066:"vi",1106:"cy",1160:"wo",1157:"sah",1144:"ii",1130:"yo"};function e_(r,t,e){switch(r){case 0:if(t===65535)return"und";if(e)return e[t];break;case 1:return zy[t];case 3:return jy[t]}}var lp="utf-16",t_={0:"macintosh",1:"x-mac-japanese",2:"x-mac-chinesetrad",3:"x-mac-korean",6:"x-mac-greek",7:"x-mac-cyrillic",9:"x-mac-devanagai",10:"x-mac-gurmukhi",11:"x-mac-gujarati",12:"x-mac-oriya",13:"x-mac-bengali",14:"x-mac-tamil",15:"x-mac-telugu",16:"x-mac-kannada",17:"x-mac-malayalam",18:"x-mac-sinhalese",19:"x-mac-burmese",20:"x-mac-khmer",21:"x-mac-thai",22:"x-mac-lao",23:"x-mac-georgian",24:"x-mac-armenian",25:"x-mac-chinesesimp",26:"x-mac-tibetan",27:"x-mac-mongolian",28:"x-mac-ethiopic",29:"x-mac-ce",30:"x-mac-vietnamese",31:"x-mac-extarabic"},r_={15:"x-mac-icelandic",17:"x-mac-turkish",18:"x-mac-croatian",24:"x-mac-ce",25:"x-mac-ce",26:"x-mac-ce",27:"x-mac-ce",28:"x-mac-ce",30:"x-mac-icelandic",37:"x-mac-romanian",38:"x-mac-ce",39:"x-mac-ce",40:"x-mac-ce",143:"x-mac-inuit",146:"x-mac-gaelic"};function Hy(r,t,e){switch(r){case 0:return lp;case 1:return r_[e]||t_[t];case 3:if(t===1||t===10)return lp;break}}function n_(r,t,e){for(var n={},o=new pe.Parser(r,t),i=o.parseUShort(),a=o.parseUShort(),s=o.offset+o.parseUShort(),l=0;l<a;l++){var u=o.parseUShort(),c=o.parseUShort(),p=o.parseUShort(),f=o.parseUShort(),d=Vy[f]||f,h=o.parseUShort(),m=o.parseUShort(),g=e_(u,p,e),v=Hy(u,c,p);if(v!==void 0&&g!==void 0){var x=void 0;if(v===lp?x=Fi.UTF16(r,s+m,h):x=Fi.MACSTRING(r,s+m,h,v),x){var S=n[d];S===void 0&&(S=n[d]={}),S[g]=x}}}var w=0;return i===1&&(w=o.parseUShort()),n}function $u(r){var t={};for(var e in r)t[r[e]]=parseInt(e);return t}function jg(r,t,e,n,o,i){return new le.Record("NameRecord",[{name:"platformID",type:"USHORT",value:r},{name:"encodingID",type:"USHORT",value:t},{name:"languageID",type:"USHORT",value:e},{name:"nameID",type:"USHORT",value:n},{name:"length",type:"USHORT",value:o},{name:"offset",type:"USHORT",value:i}])}function o_(r,t){var e=r.length,n=t.length-e+1;e:for(var o=0;o<n;o++)for(;o<n;o++){for(var i=0;i<e;i++)if(t[o+i]!==r[i])continue e;return o}return-1}function Hg(r,t){var e=o_(r,t);if(e<0){e=t.length;for(var n=0,o=r.length;n<o;++n)t.push(r[n])}return e}function i_(r,t){var e,n=[],o={},i=$u(Vy);for(var a in r){var s=i[a];if(s===void 0&&(s=a),e=parseInt(s),isNaN(e))throw new Error('Name table entry "'+a+'" does not exist, see nameTableNames for complete list.');o[e]=r[a],n.push(e)}for(var l=$u(zy),u=$u(jy),c=[],p=[],f=0;f<n.length;f++){e=n[f];var d=o[e];for(var h in d){var m=d[h],g=1,v=l[h],x=JA[v],S=Hy(g,x,v),w=te.MACSTRING(m,S);w===void 0&&(g=0,v=t.indexOf(h),v<0&&(v=t.length,t.push(h)),x=4,w=te.UTF16(m));var b=Hg(w,p);c.push(jg(g,x,v,e,w.length,b));var _=u[h];if(_!==void 0){var T=te.UTF16(m),y=Hg(T,p);c.push(jg(3,1,_,e,T.length,y))}}}c.sort(function(O,C){return O.platformID-C.platformID||O.encodingID-C.encodingID||O.languageID-C.languageID||O.nameID-C.nameID});for(var I=new le.Table("name",[{name:"format",type:"USHORT",value:0},{name:"count",type:"USHORT",value:c.length},{name:"stringOffset",type:"USHORT",value:6+c.length*12}]),A=0;A<c.length;A++)I.fields.push({name:"record_"+A,type:"RECORD",value:c[A]});return I.fields.push({name:"strings",type:"LITERAL",value:p}),I}var Wy={parse:n_,make:i_},cp=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584,end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66e3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}];function a_(r){for(var t=0;t<cp.length;t+=1){var e=cp[t];if(r>=e.begin&&r<e.end)return t}return-1}function s_(r,t){var e={},n=new pe.Parser(r,t);e.version=n.parseUShort(),e.xAvgCharWidth=n.parseShort(),e.usWeightClass=n.parseUShort(),e.usWidthClass=n.parseUShort(),e.fsType=n.parseUShort(),e.ySubscriptXSize=n.parseShort(),e.ySubscriptYSize=n.parseShort(),e.ySubscriptXOffset=n.parseShort(),e.ySubscriptYOffset=n.parseShort(),e.ySuperscriptXSize=n.parseShort(),e.ySuperscriptYSize=n.parseShort(),e.ySuperscriptXOffset=n.parseShort(),e.ySuperscriptYOffset=n.parseShort(),e.yStrikeoutSize=n.parseShort(),e.yStrikeoutPosition=n.parseShort(),e.sFamilyClass=n.parseShort(),e.panose=[];for(var o=0;o<10;o++)e.panose[o]=n.parseByte();return e.ulUnicodeRange1=n.parseULong(),e.ulUnicodeRange2=n.parseULong(),e.ulUnicodeRange3=n.parseULong(),e.ulUnicodeRange4=n.parseULong(),e.achVendID=String.fromCharCode(n.parseByte(),n.parseByte(),n.parseByte(),n.parseByte()),e.fsSelection=n.parseUShort(),e.usFirstCharIndex=n.parseUShort(),e.usLastCharIndex=n.parseUShort(),e.sTypoAscender=n.parseShort(),e.sTypoDescender=n.parseShort(),e.sTypoLineGap=n.parseShort(),e.usWinAscent=n.parseUShort(),e.usWinDescent=n.parseUShort(),e.version>=1&&(e.ulCodePageRange1=n.parseULong(),e.ulCodePageRange2=n.parseULong()),e.version>=2&&(e.sxHeight=n.parseShort(),e.sCapHeight=n.parseShort(),e.usDefaultChar=n.parseUShort(),e.usBreakChar=n.parseUShort(),e.usMaxContent=n.parseUShort()),e}function l_(r){return new le.Table("OS/2",[{name:"version",type:"USHORT",value:3},{name:"xAvgCharWidth",type:"SHORT",value:0},{name:"usWeightClass",type:"USHORT",value:0},{name:"usWidthClass",type:"USHORT",value:0},{name:"fsType",type:"USHORT",value:0},{name:"ySubscriptXSize",type:"SHORT",value:650},{name:"ySubscriptYSize",type:"SHORT",value:699},{name:"ySubscriptXOffset",type:"SHORT",value:0},{name:"ySubscriptYOffset",type:"SHORT",value:140},{name:"ySuperscriptXSize",type:"SHORT",value:650},{name:"ySuperscriptYSize",type:"SHORT",value:699},{name:"ySuperscriptXOffset",type:"SHORT",value:0},{name:"ySuperscriptYOffset",type:"SHORT",value:479},{name:"yStrikeoutSize",type:"SHORT",value:49},{name:"yStrikeoutPosition",type:"SHORT",value:258},{name:"sFamilyClass",type:"SHORT",value:0},{name:"bFamilyType",type:"BYTE",value:0},{name:"bSerifStyle",type:"BYTE",value:0},{name:"bWeight",type:"BYTE",value:0},{name:"bProportion",type:"BYTE",value:0},{name:"bContrast",type:"BYTE",value:0},{name:"bStrokeVariation",type:"BYTE",value:0},{name:"bArmStyle",type:"BYTE",value:0},{name:"bLetterform",type:"BYTE",value:0},{name:"bMidline",type:"BYTE",value:0},{name:"bXHeight",type:"BYTE",value:0},{name:"ulUnicodeRange1",type:"ULONG",value:0},{name:"ulUnicodeRange2",type:"ULONG",value:0},{name:"ulUnicodeRange3",type:"ULONG",value:0},{name:"ulUnicodeRange4",type:"ULONG",value:0},{name:"achVendID",type:"CHARARRAY",value:"XXXX"},{name:"fsSelection",type:"USHORT",value:0},{name:"usFirstCharIndex",type:"USHORT",value:0},{name:"usLastCharIndex",type:"USHORT",value:0},{name:"sTypoAscender",type:"SHORT",value:0},{name:"sTypoDescender",type:"SHORT",value:0},{name:"sTypoLineGap",type:"SHORT",value:0},{name:"usWinAscent",type:"USHORT",value:0},{name:"usWinDescent",type:"USHORT",value:0},{name:"ulCodePageRange1",type:"ULONG",value:0},{name:"ulCodePageRange2",type:"ULONG",value:0},{name:"sxHeight",type:"SHORT",value:0},{name:"sCapHeight",type:"SHORT",value:0},{name:"usDefaultChar",type:"USHORT",value:0},{name:"usBreakChar",type:"USHORT",value:0},{name:"usMaxContext",type:"USHORT",value:0}],r)}var up={parse:s_,make:l_,unicodeRanges:cp,getUnicodeRange:a_};function c_(r,t){var e={},n=new pe.Parser(r,t);switch(e.version=n.parseVersion(),e.italicAngle=n.parseFixed(),e.underlinePosition=n.parseShort(),e.underlineThickness=n.parseShort(),e.isFixedPitch=n.parseULong(),e.minMemType42=n.parseULong(),e.maxMemType42=n.parseULong(),e.minMemType1=n.parseULong(),e.maxMemType1=n.parseULong(),e.version){case 1:e.names=Co.slice();break;case 2:e.numberOfGlyphs=n.parseUShort(),e.glyphNameIndex=new Array(e.numberOfGlyphs);for(var o=0;o<e.numberOfGlyphs;o++)e.glyphNameIndex[o]=n.parseUShort();e.names=[];for(var i=0;i<e.numberOfGlyphs;i++)if(e.glyphNameIndex[i]>=Co.length){var a=n.parseChar();e.names.push(n.parseString(a))}break;case 2.5:e.numberOfGlyphs=n.parseUShort(),e.offset=new Array(e.numberOfGlyphs);for(var s=0;s<e.numberOfGlyphs;s++)e.offset[s]=n.parseChar();break}return e}function u_(){return new le.Table("post",[{name:"version",type:"FIXED",value:196608},{name:"italicAngle",type:"FIXED",value:0},{name:"underlinePosition",type:"FWORD",value:0},{name:"underlineThickness",type:"FWORD",value:0},{name:"isFixedPitch",type:"ULONG",value:0},{name:"minMemType42",type:"ULONG",value:0},{name:"maxMemType42",type:"ULONG",value:0},{name:"minMemType1",type:"ULONG",value:0},{name:"maxMemType1",type:"ULONG",value:0}])}var qy={parse:c_,make:u_},Tr=new Array(9);Tr[1]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();if(e===1)return{substFormat:1,coverage:this.parsePointer(E.coverage),deltaGlyphId:this.parseUShort()};if(e===2)return{substFormat:2,coverage:this.parsePointer(E.coverage),substitute:this.parseOffset16List()};xe.assert(!1,"0x"+t.toString(16)+": lookup type 1 format must be 1 or 2.")};Tr[2]=function(){var t=this.parseUShort();return xe.argument(t===1,"GSUB Multiple Substitution Subtable identifier-format must be 1"),{substFormat:t,coverage:this.parsePointer(E.coverage),sequences:this.parseListOfLists()}};Tr[3]=function(){var t=this.parseUShort();return xe.argument(t===1,"GSUB Alternate Substitution Subtable identifier-format must be 1"),{substFormat:t,coverage:this.parsePointer(E.coverage),alternateSets:this.parseListOfLists()}};Tr[4]=function(){var t=this.parseUShort();return xe.argument(t===1,"GSUB ligature table identifier-format must be 1"),{substFormat:t,coverage:this.parsePointer(E.coverage),ligatureSets:this.parseListOfLists(function(){return{ligGlyph:this.parseUShort(),components:this.parseUShortList(this.parseUShort()-1)}})}};var Bi={sequenceIndex:E.uShort,lookupListIndex:E.uShort};Tr[5]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();if(e===1)return{substFormat:e,coverage:this.parsePointer(E.coverage),ruleSets:this.parseListOfLists(function(){var i=this.parseUShort(),a=this.parseUShort();return{input:this.parseUShortList(i-1),lookupRecords:this.parseRecordList(a,Bi)}})};if(e===2)return{substFormat:e,coverage:this.parsePointer(E.coverage),classDef:this.parsePointer(E.classDef),classSets:this.parseListOfLists(function(){var i=this.parseUShort(),a=this.parseUShort();return{classes:this.parseUShortList(i-1),lookupRecords:this.parseRecordList(a,Bi)}})};if(e===3){var n=this.parseUShort(),o=this.parseUShort();return{substFormat:e,coverages:this.parseList(n,E.pointer(E.coverage)),lookupRecords:this.parseRecordList(o,Bi)}}xe.assert(!1,"0x"+t.toString(16)+": lookup type 5 format must be 1, 2 or 3.")};Tr[6]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();if(e===1)return{substFormat:1,coverage:this.parsePointer(E.coverage),chainRuleSets:this.parseListOfLists(function(){return{backtrack:this.parseUShortList(),input:this.parseUShortList(this.parseShort()-1),lookahead:this.parseUShortList(),lookupRecords:this.parseRecordList(Bi)}})};if(e===2)return{substFormat:2,coverage:this.parsePointer(E.coverage),backtrackClassDef:this.parsePointer(E.classDef),inputClassDef:this.parsePointer(E.classDef),lookaheadClassDef:this.parsePointer(E.classDef),chainClassSet:this.parseListOfLists(function(){return{backtrack:this.parseUShortList(),input:this.parseUShortList(this.parseShort()-1),lookahead:this.parseUShortList(),lookupRecords:this.parseRecordList(Bi)}})};if(e===3)return{substFormat:3,backtrackCoverage:this.parseList(E.pointer(E.coverage)),inputCoverage:this.parseList(E.pointer(E.coverage)),lookaheadCoverage:this.parseList(E.pointer(E.coverage)),lookupRecords:this.parseRecordList(Bi)};xe.assert(!1,"0x"+t.toString(16)+": lookup type 6 format must be 1, 2 or 3.")};Tr[7]=function(){var t=this.parseUShort();xe.argument(t===1,"GSUB Extension Substitution subtable identifier-format must be 1");var e=this.parseUShort(),n=new E(this.data,this.offset+this.parseULong());return{substFormat:1,lookupType:e,extension:Tr[e].call(n)}};Tr[8]=function(){var t=this.parseUShort();return xe.argument(t===1,"GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1"),{substFormat:t,coverage:this.parsePointer(E.coverage),backtrackCoverage:this.parseList(E.pointer(E.coverage)),lookaheadCoverage:this.parseList(E.pointer(E.coverage)),substitutes:this.parseUShortList()}};function p_(r,t){t=t||0;var e=new E(r,t),n=e.parseVersion(1);return xe.argument(n===1||n===1.1,"Unsupported GSUB table version."),n===1?{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(Tr)}:{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(Tr),variations:e.parseFeatureVariationsList()}}var Ri=new Array(9);Ri[1]=function(t){return t.substFormat===1?new le.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)},{name:"deltaGlyphID",type:"USHORT",value:t.deltaGlyphId}]):new le.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:2},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)}].concat(le.ushortList("substitute",t.substitute)))};Ri[2]=function(t){return xe.assert(t.substFormat===1,"Lookup type 2 substFormat must be 1."),new le.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)}].concat(le.tableList("seqSet",t.sequences,function(e){return new le.Table("sequenceSetTable",le.ushortList("sequence",e))})))};Ri[3]=function(t){return xe.assert(t.substFormat===1,"Lookup type 3 substFormat must be 1."),new le.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)}].concat(le.tableList("altSet",t.alternateSets,function(e){return new le.Table("alternateSetTable",le.ushortList("alternate",e))})))};Ri[4]=function(t){return xe.assert(t.substFormat===1,"Lookup type 4 substFormat must be 1."),new le.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)}].concat(le.tableList("ligSet",t.ligatureSets,function(e){return new le.Table("ligatureSetTable",le.tableList("ligature",e,function(n){return new le.Table("ligatureTable",[{name:"ligGlyph",type:"USHORT",value:n.ligGlyph}].concat(le.ushortList("component",n.components,n.components.length+1)))}))})))};Ri[6]=function(t){if(t.substFormat===1){var e=new le.Table("chainContextTable",[{name:"substFormat",type:"USHORT",value:t.substFormat},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)}].concat(le.tableList("chainRuleSet",t.chainRuleSets,function(i){return new le.Table("chainRuleSetTable",le.tableList("chainRule",i,function(a){var s=le.ushortList("backtrackGlyph",a.backtrack,a.backtrack.length).concat(le.ushortList("inputGlyph",a.input,a.input.length+1)).concat(le.ushortList("lookaheadGlyph",a.lookahead,a.lookahead.length)).concat(le.ushortList("substitution",[],a.lookupRecords.length));return a.lookupRecords.forEach(function(l,u){s=s.concat({name:"sequenceIndex"+u,type:"USHORT",value:l.sequenceIndex}).concat({name:"lookupListIndex"+u,type:"USHORT",value:l.lookupListIndex})}),new le.Table("chainRuleTable",s)}))})));return e}else if(t.substFormat===2)xe.assert(!1,"lookup type 6 format 2 is not yet supported.");else if(t.substFormat===3){var n=[{name:"substFormat",type:"USHORT",value:t.substFormat}];n.push({name:"backtrackGlyphCount",type:"USHORT",value:t.backtrackCoverage.length}),t.backtrackCoverage.forEach(function(i,a){n.push({name:"backtrackCoverage"+a,type:"TABLE",value:new le.Coverage(i)})}),n.push({name:"inputGlyphCount",type:"USHORT",value:t.inputCoverage.length}),t.inputCoverage.forEach(function(i,a){n.push({name:"inputCoverage"+a,type:"TABLE",value:new le.Coverage(i)})}),n.push({name:"lookaheadGlyphCount",type:"USHORT",value:t.lookaheadCoverage.length}),t.lookaheadCoverage.forEach(function(i,a){n.push({name:"lookaheadCoverage"+a,type:"TABLE",value:new le.Coverage(i)})}),n.push({name:"substitutionCount",type:"USHORT",value:t.lookupRecords.length}),t.lookupRecords.forEach(function(i,a){n=n.concat({name:"sequenceIndex"+a,type:"USHORT",value:i.sequenceIndex}).concat({name:"lookupListIndex"+a,type:"USHORT",value:i.lookupListIndex})});var o=new le.Table("chainContextTable",n);return o}xe.assert(!1,"lookup type 6 format must be 1, 2 or 3.")};function f_(r){return new le.Table("GSUB",[{name:"version",type:"ULONG",value:65536},{name:"scripts",type:"TABLE",value:new le.ScriptList(r.scripts)},{name:"features",type:"TABLE",value:new le.FeatureList(r.features)},{name:"lookups",type:"TABLE",value:new le.LookupList(r.lookups,Ri)}])}var Xy={parse:p_,make:f_};function d_(r,t){var e=new pe.Parser(r,t),n=e.parseULong();xe.argument(n===1,"Unsupported META table version."),e.parseULong(),e.parseULong();for(var o=e.parseULong(),i={},a=0;a<o;a++){var s=e.parseTag(),l=e.parseULong(),u=e.parseULong(),c=Fi.UTF8(r,t+l,u);i[s]=c}return i}function h_(r){var t=Object.keys(r).length,e="",n=16+t*12,o=new le.Table("meta",[{name:"version",type:"ULONG",value:1},{name:"flags",type:"ULONG",value:0},{name:"offset",type:"ULONG",value:n},{name:"numTags",type:"ULONG",value:t}]);for(var i in r){var a=e.length;e+=r[i],o.fields.push({name:"tag "+i,type:"TAG",value:i}),o.fields.push({name:"offset "+i,type:"ULONG",value:n+a}),o.fields.push({name:"length "+i,type:"ULONG",value:r[i].length})}return o.fields.push({name:"stringPool",type:"CHARARRAY",value:e}),o}var Yy={parse:d_,make:h_};function Wg(r){return Math.log(r)/Math.log(2)|0}function vp(r){for(;r.length%4!==0;)r.push(0);for(var t=0,e=0;e<r.length;e+=4)t+=(r[e]<<24)+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];return t%=Math.pow(2,32),t}function qg(r,t,e,n){return new le.Record("Table Record",[{name:"tag",type:"TAG",value:r!==void 0?r:""},{name:"checkSum",type:"ULONG",value:t!==void 0?t:0},{name:"offset",type:"ULONG",value:e!==void 0?e:0},{name:"length",type:"ULONG",value:n!==void 0?n:0}])}function $y(r){var t=new le.Table("sfnt",[{name:"version",type:"TAG",value:"OTTO"},{name:"numTables",type:"USHORT",value:0},{name:"searchRange",type:"USHORT",value:0},{name:"entrySelector",type:"USHORT",value:0},{name:"rangeShift",type:"USHORT",value:0}]);t.tables=r,t.numTables=r.length;var e=Math.pow(2,Wg(t.numTables));t.searchRange=16*e,t.entrySelector=Wg(e),t.rangeShift=t.numTables*16-t.searchRange;for(var n=[],o=[],i=t.sizeOf()+qg().sizeOf()*t.numTables;i%4!==0;)i+=1,o.push({name:"padding",type:"BYTE",value:0});for(var a=0;a<r.length;a+=1){var s=r[a];xe.argument(s.tableName.length===4,"Table name"+s.tableName+" is invalid.");var l=s.sizeOf(),u=qg(s.tableName,vp(s.encode()),i,l);for(n.push({name:u.tag+" Table Record",type:"RECORD",value:u}),o.push({name:s.tableName+" table",type:"RECORD",value:s}),i+=l,xe.argument(!isNaN(i),"Something went wrong calculating the offset.");i%4!==0;)i+=1,o.push({name:"padding",type:"BYTE",value:0})}return n.sort(function(c,p){return c.value.tag>p.value.tag?1:-1}),t.fields=t.fields.concat(n),t.fields=t.fields.concat(o),t}function Xg(r,t,e){for(var n=0;n<t.length;n+=1){var o=r.charToGlyphIndex(t[n]);if(o>0){var i=r.glyphs.get(o);return i.getMetrics()}}return e}function m_(r){for(var t=0,e=0;e<r.length;e+=1)t+=r[e];return t/r.length}function g_(r){for(var t=[],e=[],n=[],o=[],i=[],a=[],s=[],l,u=0,c=0,p=0,f=0,d=0,h=0;h<r.glyphs.length;h+=1){var m=r.glyphs.get(h),g=m.unicode|0;if(isNaN(m.advanceWidth))throw new Error("Glyph "+m.name+" ("+h+"): advanceWidth is not a number.");(l>g||l===void 0)&&g>0&&(l=g),u<g&&(u=g);var v=up.getUnicodeRange(g);if(v<32)c|=1<<v;else if(v<64)p|=1<<v-32;else if(v<96)f|=1<<v-64;else if(v<123)d|=1<<v-96;else throw new Error("Unicode ranges bits > 123 are reserved for internal usage");if(m.name!==".notdef"){var x=m.getMetrics();t.push(x.xMin),e.push(x.yMin),n.push(x.xMax),o.push(x.yMax),a.push(x.leftSideBearing),s.push(x.rightSideBearing),i.push(m.advanceWidth)}}var S={xMin:Math.min.apply(null,t),yMin:Math.min.apply(null,e),xMax:Math.max.apply(null,n),yMax:Math.max.apply(null,o),advanceWidthMax:Math.max.apply(null,i),advanceWidthAvg:m_(i),minLeftSideBearing:Math.min.apply(null,a),maxLeftSideBearing:Math.max.apply(null,a),minRightSideBearing:Math.min.apply(null,s)};S.ascender=r.ascender,S.descender=r.descender;var w=Fy.make({flags:3,unitsPerEm:r.unitsPerEm,xMin:S.xMin,yMin:S.yMin,xMax:S.xMax,yMax:S.yMax,lowestRecPPEM:3,createdTimestamp:r.createdTimestamp}),b=Ry.make({ascender:S.ascender,descender:S.descender,advanceWidthMax:S.advanceWidthMax,minLeftSideBearing:S.minLeftSideBearing,minRightSideBearing:S.minRightSideBearing,xMaxExtent:S.maxLeftSideBearing+(S.xMax-S.xMin),numberOfHMetrics:r.glyphs.length}),_=Uy.make(r.glyphs.length),T=up.make(Object.assign({xAvgCharWidth:Math.round(S.advanceWidthAvg),usFirstCharIndex:l,usLastCharIndex:u,ulUnicodeRange1:c,ulUnicodeRange2:p,ulUnicodeRange3:f,ulUnicodeRange4:d,sTypoAscender:S.ascender,sTypoDescender:S.descender,sTypoLineGap:0,usWinAscent:S.yMax,usWinDescent:Math.abs(S.yMin),ulCodePageRange1:1,sxHeight:Xg(r,"xyvw",{yMax:Math.round(S.ascender/2)}).yMax,sCapHeight:Xg(r,"HIKLEFJMNTZBDPRAGOQSUVWXY",S).yMax,usDefaultChar:r.hasChar(" ")?32:0,usBreakChar:r.hasChar(" ")?32:0},r.tables.os2)),y=ky.make(r.glyphs),I=Cy.make(r.glyphs),A=r.getEnglishName("fontFamily"),O=r.getEnglishName("fontSubfamily"),C=A+" "+O,N=r.getEnglishName("postScriptName");N||(N=A.replace(/\s/g,"")+"-"+O);var P={};for(var G in r.names)P[G]=r.names[G];P.uniqueID||(P.uniqueID={en:r.getEnglishName("manufacturer")+":"+C}),P.postScriptName||(P.postScriptName={en:N}),P.preferredFamily||(P.preferredFamily=r.names.fontFamily),P.preferredSubfamily||(P.preferredSubfamily=r.names.fontSubfamily);var $=[],Y=Wy.make(P,$),ie=$.length>0?Gy.make($):void 0,j=qy.make(),H=By.make(r.glyphs,{version:r.getEnglishName("version"),fullName:C,familyName:A,weightName:O,postScriptName:N,unitsPerEm:r.unitsPerEm,fontBBox:[0,S.yMin,S.ascender,S.advanceWidthMax]}),V=r.metas&&Object.keys(r.metas).length>0?Yy.make(r.metas):void 0,R=[w,b,_,T,Y,I,j,H,y];ie&&R.push(ie),r.tables.gsub&&R.push(Xy.make(r.tables.gsub)),V&&R.push(V);for(var D=$y(R),F=D.encode(),B=vp(F),X=D.fields,K=!1,q=0;q<X.length;q+=1)if(X[q].name==="head table"){X[q].value.checkSumAdjustment=2981146554-B,K=!0;break}if(!K)throw new Error("Could not find head table with checkSum to adjust.");return D}var y_={make:$y,fontToTable:g_,computeCheckSum:vp};function Ku(r,t){for(var e=0,n=r.length-1;e<=n;){var o=e+n>>>1,i=r[o].tag;if(i===t)return o;i<t?e=o+1:n=o-1}return-e-1}function Yg(r,t){for(var e=0,n=r.length-1;e<=n;){var o=e+n>>>1,i=r[o];if(i===t)return o;i<t?e=o+1:n=o-1}return-e-1}function $g(r,t){for(var e,n=0,o=r.length-1;n<=o;){var i=n+o>>>1;e=r[i];var a=e.start;if(a===t)return e;a<t?n=i+1:o=i-1}if(n>0)return e=r[n-1],t>e.end?0:e}function Ja(r,t){this.font=r,this.tableName=t}Ja.prototype={searchTag:Ku,binSearch:Yg,getTable:function(r){var t=this.font.tables[this.tableName];return!t&&r&&(t=this.font.tables[this.tableName]=this.createDefaultTable()),t},getScriptNames:function(){var r=this.getTable();return r?r.scripts.map(function(t){return t.tag}):[]},getDefaultScriptName:function(){var r=this.getTable();if(!!r){for(var t=!1,e=0;e<r.scripts.length;e++){var n=r.scripts[e].tag;if(n==="DFLT")return n;n==="latn"&&(t=!0)}if(t)return"latn"}},getScriptTable:function(r,t){var e=this.getTable(t);if(e){r=r||"DFLT";var n=e.scripts,o=Ku(e.scripts,r);if(o>=0)return n[o].script;if(t){var i={tag:r,script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}};return n.splice(-1-o,0,i),i.script}}},getLangSysTable:function(r,t,e){var n=this.getScriptTable(r,e);if(n){if(!t||t==="dflt"||t==="DFLT")return n.defaultLangSys;var o=Ku(n.langSysRecords,t);if(o>=0)return n.langSysRecords[o].langSys;if(e){var i={tag:t,langSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]}};return n.langSysRecords.splice(-1-o,0,i),i.langSys}}},getFeatureTable:function(r,t,e,n){var o=this.getLangSysTable(r,t,n);if(o){for(var i,a=o.featureIndexes,s=this.font.tables[this.tableName].features,l=0;l<a.length;l++)if(i=s[a[l]],i.tag===e)return i.feature;if(n){var u=s.length;return xe.assert(u===0||e>=s[u-1].tag,"Features must be added in alphabetical order."),i={tag:e,feature:{params:0,lookupListIndexes:[]}},s.push(i),a.push(u),i.feature}}},getLookupTables:function(r,t,e,n,o){var i=this.getFeatureTable(r,t,e,o),a=[];if(i){for(var s,l=i.lookupListIndexes,u=this.font.tables[this.tableName].lookups,c=0;c<l.length;c++)s=u[l[c]],s.lookupType===n&&a.push(s);if(a.length===0&&o){s={lookupType:n,lookupFlag:0,subtables:[],markFilteringSet:void 0};var p=u.length;return u.push(s),l.push(p),[s]}}return a},getGlyphClass:function(r,t){switch(r.format){case 1:return r.startGlyph<=t&&t<r.startGlyph+r.classes.length?r.classes[t-r.startGlyph]:0;case 2:var e=$g(r.ranges,t);return e?e.classId:0}},getCoverageIndex:function(r,t){switch(r.format){case 1:var e=Yg(r.glyphs,t);return e>=0?e:-1;case 2:var n=$g(r.ranges,t);return n?n.index+t-n.start:-1}},expandCoverage:function(r){if(r.format===1)return r.glyphs;for(var t=[],e=r.ranges,n=0;n<e.length;n++)for(var o=e[n],i=o.start,a=o.end,s=i;s<=a;s++)t.push(s);return t}};function es(r){Ja.call(this,r,"gpos")}es.prototype=Ja.prototype;es.prototype.init=function(){var r=this.getDefaultScriptName();this.defaultKerningTables=this.getKerningTables(r)};es.prototype.getKerningValue=function(r,t,e){for(var n=0;n<r.length;n++)for(var o=r[n].subtables,i=0;i<o.length;i++){var a=o[i],s=this.getCoverageIndex(a.coverage,t);if(!(s<0))switch(a.posFormat){case 1:for(var l=a.pairSets[s],u=0;u<l.length;u++){var c=l[u];if(c.secondGlyph===e)return c.value1&&c.value1.xAdvance||0}break;case 2:var p=this.getGlyphClass(a.classDef1,t),f=this.getGlyphClass(a.classDef2,e),d=a.classRecords[p][f];return d.value1&&d.value1.xAdvance||0}}return 0};es.prototype.getKerningTables=function(r,t){if(this.font.tables.gpos)return this.getLookupTables(r,t,"kern",2)};function er(r){Ja.call(this,r,"gsub")}function v_(r,t){var e=r.length;if(e!==t.length)return!1;for(var n=0;n<e;n++)if(r[n]!==t[n])return!1;return!0}function xp(r,t,e){for(var n=r.subtables,o=0;o<n.length;o++){var i=n[o];if(i.substFormat===t)return i}if(e)return n.push(e),e}er.prototype=Ja.prototype;er.prototype.createDefaultTable=function(){return{version:1,scripts:[{tag:"DFLT",script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}}],features:[],lookups:[]}};er.prototype.getSingle=function(r,t,e){for(var n=[],o=this.getLookupTables(t,e,r,1),i=0;i<o.length;i++)for(var a=o[i].subtables,s=0;s<a.length;s++){var l=a[s],u=this.expandCoverage(l.coverage),c=void 0;if(l.substFormat===1){var p=l.deltaGlyphId;for(c=0;c<u.length;c++){var f=u[c];n.push({sub:f,by:f+p})}}else{var d=l.substitute;for(c=0;c<u.length;c++)n.push({sub:u[c],by:d[c]})}}return n};er.prototype.getMultiple=function(r,t,e){for(var n=[],o=this.getLookupTables(t,e,r,2),i=0;i<o.length;i++)for(var a=o[i].subtables,s=0;s<a.length;s++){var l=a[s],u=this.expandCoverage(l.coverage),c=void 0;for(c=0;c<u.length;c++){var p=u[c],f=l.sequences[c];n.push({sub:p,by:f})}}return n};er.prototype.getAlternates=function(r,t,e){for(var n=[],o=this.getLookupTables(t,e,r,3),i=0;i<o.length;i++)for(var a=o[i].subtables,s=0;s<a.length;s++)for(var l=a[s],u=this.expandCoverage(l.coverage),c=l.alternateSets,p=0;p<u.length;p++)n.push({sub:u[p],by:c[p]});return n};er.prototype.getLigatures=function(r,t,e){for(var n=[],o=this.getLookupTables(t,e,r,4),i=0;i<o.length;i++)for(var a=o[i].subtables,s=0;s<a.length;s++)for(var l=a[s],u=this.expandCoverage(l.coverage),c=l.ligatureSets,p=0;p<u.length;p++)for(var f=u[p],d=c[p],h=0;h<d.length;h++){var m=d[h];n.push({sub:[f].concat(m.components),by:m.ligGlyph})}return n};er.prototype.addSingle=function(r,t,e,n){var o=this.getLookupTables(e,n,r,1,!0)[0],i=xp(o,2,{substFormat:2,coverage:{format:1,glyphs:[]},substitute:[]});xe.assert(i.coverage.format===1,"Single: unable to modify coverage table format "+i.coverage.format);var a=t.sub,s=this.binSearch(i.coverage.glyphs,a);s<0&&(s=-1-s,i.coverage.glyphs.splice(s,0,a),i.substitute.splice(s,0,0)),i.substitute[s]=t.by};er.prototype.addMultiple=function(r,t,e,n){xe.assert(t.by instanceof Array&&t.by.length>1,'Multiple: "by" must be an array of two or more ids');var o=this.getLookupTables(e,n,r,2,!0)[0],i=xp(o,1,{substFormat:1,coverage:{format:1,glyphs:[]},sequences:[]});xe.assert(i.coverage.format===1,"Multiple: unable to modify coverage table format "+i.coverage.format);var a=t.sub,s=this.binSearch(i.coverage.glyphs,a);s<0&&(s=-1-s,i.coverage.glyphs.splice(s,0,a),i.sequences.splice(s,0,0)),i.sequences[s]=t.by};er.prototype.addAlternate=function(r,t,e,n){var o=this.getLookupTables(e,n,r,3,!0)[0],i=xp(o,1,{substFormat:1,coverage:{format:1,glyphs:[]},alternateSets:[]});xe.assert(i.coverage.format===1,"Alternate: unable to modify coverage table format "+i.coverage.format);var a=t.sub,s=this.binSearch(i.coverage.glyphs,a);s<0&&(s=-1-s,i.coverage.glyphs.splice(s,0,a),i.alternateSets.splice(s,0,0)),i.alternateSets[s]=t.by};er.prototype.addLigature=function(r,t,e,n){var o=this.getLookupTables(e,n,r,4,!0)[0],i=o.subtables[0];i||(i={substFormat:1,coverage:{format:1,glyphs:[]},ligatureSets:[]},o.subtables[0]=i),xe.assert(i.coverage.format===1,"Ligature: unable to modify coverage table format "+i.coverage.format);var a=t.sub[0],s=t.sub.slice(1),l={ligGlyph:t.by,components:s},u=this.binSearch(i.coverage.glyphs,a);if(u>=0){for(var c=i.ligatureSets[u],p=0;p<c.length;p++)if(v_(c[p].components,s))return;c.push(l)}else u=-1-u,i.coverage.glyphs.splice(u,0,a),i.ligatureSets.splice(u,0,[l])};er.prototype.getFeature=function(r,t,e){if(/ss\d\d/.test(r))return this.getSingle(r,t,e);switch(r){case"aalt":case"salt":return this.getSingle(r,t,e).concat(this.getAlternates(r,t,e));case"dlig":case"liga":case"rlig":return this.getLigatures(r,t,e);case"ccmp":return this.getMultiple(r,t,e).concat(this.getLigatures(r,t,e));case"stch":return this.getMultiple(r,t,e)}};er.prototype.add=function(r,t,e,n){if(/ss\d\d/.test(r))return this.addSingle(r,t,e,n);switch(r){case"aalt":case"salt":return typeof t.by=="number"?this.addSingle(r,t,e,n):this.addAlternate(r,t,e,n);case"dlig":case"liga":case"rlig":return this.addLigature(r,t,e,n);case"ccmp":return t.by instanceof Array?this.addMultiple(r,t,e,n):this.addLigature(r,t,e,n)}};function x_(){return typeof window<"u"}function b_(r){for(var t=new ArrayBuffer(r.length),e=new Uint8Array(t),n=0;n<r.length;++n)e[n]=r[n];return t}function S_(r){for(var t=new Buffer(r.byteLength),e=new Uint8Array(r),n=0;n<t.length;++n)t[n]=e[n];return t}function Xa(r,t){if(!r)throw t}function Kg(r,t,e,n,o){var i;return(t&n)>0?(i=r.parseByte(),(t&o)===0&&(i=-i),i=e+i):(t&o)>0?i=e:i=e+r.parseShort(),i}function Ky(r,t,e){var n=new pe.Parser(t,e);r.numberOfContours=n.parseShort(),r._xMin=n.parseShort(),r._yMin=n.parseShort(),r._xMax=n.parseShort(),r._yMax=n.parseShort();var o,i;if(r.numberOfContours>0){for(var a=r.endPointIndices=[],s=0;s<r.numberOfContours;s+=1)a.push(n.parseUShort());r.instructionLength=n.parseUShort(),r.instructions=[];for(var l=0;l<r.instructionLength;l+=1)r.instructions.push(n.parseByte());var u=a[a.length-1]+1;o=[];for(var c=0;c<u;c+=1)if(i=n.parseByte(),o.push(i),(i&8)>0)for(var p=n.parseByte(),f=0;f<p;f+=1)o.push(i),c+=1;if(xe.argument(o.length===u,"Bad flags."),a.length>0){var d=[],h;if(u>0){for(var m=0;m<u;m+=1)i=o[m],h={},h.onCurve=!!(i&1),h.lastPointOfContour=a.indexOf(m)>=0,d.push(h);for(var g=0,v=0;v<u;v+=1)i=o[v],h=d[v],h.x=Kg(n,i,g,2,16),g=h.x;for(var x=0,S=0;S<u;S+=1)i=o[S],h=d[S],h.y=Kg(n,i,x,4,32),x=h.y}r.points=d}else r.points=[]}else if(r.numberOfContours===0)r.points=[];else{r.isComposite=!0,r.points=[],r.components=[];for(var w=!0;w;){o=n.parseUShort();var b={glyphIndex:n.parseUShort(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(o&1)>0?(o&2)>0?(b.dx=n.parseShort(),b.dy=n.parseShort()):b.matchedPoints=[n.parseUShort(),n.parseUShort()]:(o&2)>0?(b.dx=n.parseChar(),b.dy=n.parseChar()):b.matchedPoints=[n.parseByte(),n.parseByte()],(o&8)>0?b.xScale=b.yScale=n.parseF2Dot14():(o&64)>0?(b.xScale=n.parseF2Dot14(),b.yScale=n.parseF2Dot14()):(o&128)>0&&(b.xScale=n.parseF2Dot14(),b.scale01=n.parseF2Dot14(),b.scale10=n.parseF2Dot14(),b.yScale=n.parseF2Dot14()),r.components.push(b),w=!!(o&32)}if(o&256){r.instructionLength=n.parseUShort(),r.instructions=[];for(var _=0;_<r.instructionLength;_+=1)r.instructions.push(n.parseByte())}}}function Zu(r,t){for(var e=[],n=0;n<r.length;n+=1){var o=r[n],i={x:t.xScale*o.x+t.scale01*o.y+t.dx,y:t.scale10*o.x+t.yScale*o.y+t.dy,onCurve:o.onCurve,lastPointOfContour:o.lastPointOfContour};e.push(i)}return e}function w_(r){for(var t=[],e=[],n=0;n<r.length;n+=1){var o=r[n];e.push(o),o.lastPointOfContour&&(t.push(e),e=[])}return xe.argument(e.length===0,"There are still points left in the current contour."),t}function Zy(r){var t=new dt;if(!r)return t;for(var e=w_(r),n=0;n<e.length;++n){var o=e[n],i=null,a=o[o.length-1],s=o[0];if(a.onCurve)t.moveTo(a.x,a.y);else if(s.onCurve)t.moveTo(s.x,s.y);else{var l={x:(a.x+s.x)*.5,y:(a.y+s.y)*.5};t.moveTo(l.x,l.y)}for(var u=0;u<o.length;++u)if(i=a,a=s,s=o[(u+1)%o.length],a.onCurve)t.lineTo(a.x,a.y);else{var c=i,p=s;i.onCurve||(c={x:(a.x+i.x)*.5,y:(a.y+i.y)*.5}),s.onCurve||(p={x:(a.x+s.x)*.5,y:(a.y+s.y)*.5}),t.quadraticCurveTo(a.x,a.y,p.x,p.y)}t.closePath()}return t}function Qy(r,t){if(t.isComposite)for(var e=0;e<t.components.length;e+=1){var n=t.components[e],o=r.get(n.glyphIndex);if(o.getPath(),o.points){var i=void 0;if(n.matchedPoints===void 0)i=Zu(o.points,n);else{if(n.matchedPoints[0]>t.points.length-1||n.matchedPoints[1]>o.points.length-1)throw Error("Matched points out of range in "+t.name);var a=t.points[n.matchedPoints[0]],s=o.points[n.matchedPoints[1]],l={xScale:n.xScale,scale01:n.scale01,scale10:n.scale10,yScale:n.yScale,dx:0,dy:0};s=Zu([s],l)[0],l.dx=a.x-s.x,l.dy=a.y-s.y,i=Zu(o.points,l)}t.points=t.points.concat(i)}}return Zy(t.points)}function T_(r,t,e,n){for(var o=new nn.GlyphSet(n),i=0;i<e.length-1;i+=1){var a=e[i],s=e[i+1];a!==s?o.push(i,nn.ttfGlyphLoader(n,i,Ky,r,t+a,Qy)):o.push(i,nn.glyphLoader(n,i))}return o}function C_(r,t,e,n){var o=new nn.GlyphSet(n);return n._push=function(i){var a=e[i],s=e[i+1];a!==s?o.push(i,nn.ttfGlyphLoader(n,i,Ky,r,t+a,Qy)):o.push(i,nn.glyphLoader(n,i))},o}function A_(r,t,e,n,o){return o.lowMemory?C_(r,t,e,n):T_(r,t,e,n)}var Jy={getPath:Zy,parse:A_},e0,_o,t0,pp;function r0(r){this.font=r,this.getCommands=function(t){return Jy.getPath(t).commands},this._fpgmState=this._prepState=void 0,this._errorState=0}function __(r){return r}function n0(r){return Math.sign(r)*Math.round(Math.abs(r))}function I_(r){return Math.sign(r)*Math.round(Math.abs(r*2))/2}function O_(r){return Math.sign(r)*(Math.round(Math.abs(r)+.5)-.5)}function L_(r){return Math.sign(r)*Math.ceil(Math.abs(r))}function N_(r){return Math.sign(r)*Math.floor(Math.abs(r))}var o0=function(r){var t=this.srPeriod,e=this.srPhase,n=this.srThreshold,o=1;return r<0&&(r=-r,o=-1),r+=n-e,r=Math.trunc(r/t)*t,r+=e,r<0?e*o:r*o},rn={x:1,y:0,axis:"x",distance:function(r,t,e,n){return(e?r.xo:r.x)-(n?t.xo:t.x)},interpolate:function(r,t,e,n){var o,i,a,s,l,u,c;if(!n||n===this){if(o=r.xo-t.xo,i=r.xo-e.xo,l=t.x-t.xo,u=e.x-e.xo,a=Math.abs(o),s=Math.abs(i),c=a+s,c===0){r.x=r.xo+(l+u)/2;return}r.x=r.xo+(l*s+u*a)/c;return}if(o=n.distance(r,t,!0,!0),i=n.distance(r,e,!0,!0),l=n.distance(t,t,!1,!0),u=n.distance(e,e,!1,!0),a=Math.abs(o),s=Math.abs(i),c=a+s,c===0){rn.setRelative(r,r,(l+u)/2,n,!0);return}rn.setRelative(r,r,(l*s+u*a)/c,n,!0)},normalSlope:Number.NEGATIVE_INFINITY,setRelative:function(r,t,e,n,o){if(!n||n===this){r.x=(o?t.xo:t.x)+e;return}var i=o?t.xo:t.x,a=o?t.yo:t.y,s=i+e*n.x,l=a+e*n.y;r.x=s+(r.y-l)/n.normalSlope},slope:0,touch:function(r){r.xTouched=!0},touched:function(r){return r.xTouched},untouch:function(r){r.xTouched=!1}},yn={x:0,y:1,axis:"y",distance:function(r,t,e,n){return(e?r.yo:r.y)-(n?t.yo:t.y)},interpolate:function(r,t,e,n){var o,i,a,s,l,u,c;if(!n||n===this){if(o=r.yo-t.yo,i=r.yo-e.yo,l=t.y-t.yo,u=e.y-e.yo,a=Math.abs(o),s=Math.abs(i),c=a+s,c===0){r.y=r.yo+(l+u)/2;return}r.y=r.yo+(l*s+u*a)/c;return}if(o=n.distance(r,t,!0,!0),i=n.distance(r,e,!0,!0),l=n.distance(t,t,!1,!0),u=n.distance(e,e,!1,!0),a=Math.abs(o),s=Math.abs(i),c=a+s,c===0){yn.setRelative(r,r,(l+u)/2,n,!0);return}yn.setRelative(r,r,(l*s+u*a)/c,n,!0)},normalSlope:0,setRelative:function(r,t,e,n,o){if(!n||n===this){r.y=(o?t.yo:t.y)+e;return}var i=o?t.xo:t.x,a=o?t.yo:t.y,s=i+e*n.x,l=a+e*n.y;r.y=l+n.normalSlope*(r.x-s)},slope:Number.POSITIVE_INFINITY,touch:function(r){r.yTouched=!0},touched:function(r){return r.yTouched},untouch:function(r){r.yTouched=!1}};Object.freeze(rn);Object.freeze(yn);function ts(r,t){this.x=r,this.y=t,this.axis=void 0,this.slope=t/r,this.normalSlope=-r/t,Object.freeze(this)}ts.prototype.distance=function(r,t,e,n){return this.x*rn.distance(r,t,e,n)+this.y*yn.distance(r,t,e,n)};ts.prototype.interpolate=function(r,t,e,n){var o,i,a,s,l,u,c;if(a=n.distance(r,t,!0,!0),s=n.distance(r,e,!0,!0),o=n.distance(t,t,!1,!0),i=n.distance(e,e,!1,!0),l=Math.abs(a),u=Math.abs(s),c=l+u,c===0){this.setRelative(r,r,(o+i)/2,n,!0);return}this.setRelative(r,r,(o*u+i*l)/c,n,!0)};ts.prototype.setRelative=function(r,t,e,n,o){n=n||this;var i=o?t.xo:t.x,a=o?t.yo:t.y,s=i+e*n.x,l=a+e*n.y,u=n.normalSlope,c=this.slope,p=r.x,f=r.y;r.x=(c*p-u*s+l-f)/(c-u),r.y=c*(r.x-p)+f};ts.prototype.touch=function(r){r.xTouched=!0,r.yTouched=!0};function rs(r,t){var e=Math.sqrt(r*r+t*t);return r/=e,t/=e,r===1&&t===0?rn:r===0&&t===1?yn:new ts(r,t)}function vn(r,t,e,n){this.x=this.xo=Math.round(r*64)/64,this.y=this.yo=Math.round(t*64)/64,this.lastPointOfContour=e,this.onCurve=n,this.prevPointOnContour=void 0,this.nextPointOnContour=void 0,this.xTouched=!1,this.yTouched=!1,Object.preventExtensions(this)}vn.prototype.nextTouched=function(r){for(var t=this.nextPointOnContour;!r.touched(t)&&t!==this;)t=t.nextPointOnContour;return t};vn.prototype.prevTouched=function(r){for(var t=this.prevPointOnContour;!r.touched(t)&&t!==this;)t=t.prevPointOnContour;return t};var Qa=Object.freeze(new vn(0,0)),P_={cvCutIn:17/16,deltaBase:9,deltaShift:.125,loop:1,minDis:1,autoFlip:!0};function Yn(r,t){switch(this.env=r,this.stack=[],this.prog=t,r){case"glyf":this.zp0=this.zp1=this.zp2=1,this.rp0=this.rp1=this.rp2=0;case"prep":this.fv=this.pv=this.dpv=rn,this.round=n0}}r0.prototype.exec=function(r,t){if(typeof t!="number")throw new Error("Point size is not a number!");if(!(this._errorState>2)){var e=this.font,n=this._prepState;if(!n||n.ppem!==t){var o=this._fpgmState;if(!o){Yn.prototype=P_,o=this._fpgmState=new Yn("fpgm",e.tables.fpgm),o.funcs=[],o.font=e,exports.DEBUG&&(console.log("---EXEC FPGM---"),o.step=-1);try{_o(o)}catch(u){console.log("Hinting error in FPGM:"+u),this._errorState=3;return}}Yn.prototype=o,n=this._prepState=new Yn("prep",e.tables.prep),n.ppem=t;var i=e.tables.cvt;if(i)for(var a=n.cvt=new Array(i.length),s=t/e.unitsPerEm,l=0;l<i.length;l++)a[l]=i[l]*s;else n.cvt=[];exports.DEBUG&&(console.log("---EXEC PREP---"),n.step=-1);try{_o(n)}catch(u){this._errorState<2&&console.log("Hinting error in PREP:"+u),this._errorState=2}}if(!(this._errorState>1))try{return t0(r,n)}catch(u){this._errorState<1&&(console.log("Hinting error:"+u),console.log("Note: further hinting errors are silenced")),this._errorState=1;return}}};t0=function(r,t){var e=t.ppem/t.font.unitsPerEm,n=e,o=r.components,i,a,s;if(Yn.prototype=t,!o)s=new Yn("glyf",r.instructions),exports.DEBUG&&(console.log("---EXEC GLYPH---"),s.step=-1),pp(r,s,e,n),a=s.gZone;else{var l=t.font;a=[],i=[];for(var u=0;u<o.length;u++){var c=o[u],p=l.glyphs.get(c.glyphIndex);s=new Yn("glyf",p.instructions),exports.DEBUG&&(console.log("---EXEC COMP "+u+"---"),s.step=-1),pp(p,s,e,n);for(var f=Math.round(c.dx*e),d=Math.round(c.dy*n),h=s.gZone,m=s.contours,g=0;g<h.length;g++){var v=h[g];v.xTouched=v.yTouched=!1,v.xo=v.x=v.x+f,v.yo=v.y=v.y+d}var x=a.length;a.push.apply(a,h);for(var S=0;S<m.length;S++)i.push(m[S]+x)}r.instructions&&!s.inhibitGridFit&&(s=new Yn("glyf",r.instructions),s.gZone=s.z0=s.z1=s.z2=a,s.contours=i,a.push(new vn(0,0),new vn(Math.round(r.advanceWidth*e),0)),exports.DEBUG&&(console.log("---EXEC COMPOSITE---"),s.step=-1),_o(s),a.length-=2)}return a};pp=function(r,t,e,n){for(var o=r.points||[],i=o.length,a=t.gZone=t.z0=t.z1=t.z2=[],s=t.contours=[],l,u=0;u<i;u++)l=o[u],a[u]=new vn(l.x*e,l.y*n,l.lastPointOfContour,l.onCurve);for(var c,p,f=0;f<i;f++)l=a[f],c||(c=l,s.push(f)),l.lastPointOfContour?(l.nextPointOnContour=c,c.prevPointOnContour=l,c=void 0):(p=a[f+1],l.nextPointOnContour=p,p.prevPointOnContour=l);if(!t.inhibitGridFit){if(exports.DEBUG){console.log("PROCESSING GLYPH",t.stack);for(var d=0;d<i;d++)console.log(d,a[d].x,a[d].y)}if(a.push(new vn(0,0),new vn(Math.round(r.advanceWidth*e),0)),_o(t),a.length-=2,exports.DEBUG){console.log("FINISHED GLYPH",t.stack);for(var h=0;h<i;h++)console.log(h,a[h].x,a[h].y)}}};_o=function(r){var t=r.prog;if(!!t){var e=t.length,n;for(r.ip=0;r.ip<e;r.ip++){if(exports.DEBUG&&r.step++,n=e0[t[r.ip]],!n)throw new Error("unknown instruction: 0x"+Number(t[r.ip]).toString(16));n(r)}}};function ac(r){for(var t=r.tZone=new Array(r.gZone.length),e=0;e<t.length;e++)t[e]=new vn(0,0)}function i0(r,t){var e=r.prog,n=r.ip,o=1,i;do if(i=e[++n],i===88)o++;else if(i===89)o--;else if(i===64)n+=e[n+1]+1;else if(i===65)n+=2*e[n+1]+1;else if(i>=176&&i<=183)n+=i-176+1;else if(i>=184&&i<=191)n+=(i-184+1)*2;else if(t&&o===1&&i===27)break;while(o>0);r.ip=n}function Zg(r,t){exports.DEBUG&&console.log(t.step,"SVTCA["+r.axis+"]"),t.fv=t.pv=t.dpv=r}function Qg(r,t){exports.DEBUG&&console.log(t.step,"SPVTCA["+r.axis+"]"),t.pv=t.dpv=r}function Jg(r,t){exports.DEBUG&&console.log(t.step,"SFVTCA["+r.axis+"]"),t.fv=r}function ey(r,t){var e=t.stack,n=e.pop(),o=e.pop(),i=t.z2[n],a=t.z1[o];exports.DEBUG&&console.log("SPVTL["+r+"]",n,o);var s,l;r?(s=i.y-a.y,l=a.x-i.x):(s=a.x-i.x,l=a.y-i.y),t.pv=t.dpv=rs(s,l)}function ty(r,t){var e=t.stack,n=e.pop(),o=e.pop(),i=t.z2[n],a=t.z1[o];exports.DEBUG&&console.log("SFVTL["+r+"]",n,o);var s,l;r?(s=i.y-a.y,l=a.x-i.x):(s=a.x-i.x,l=a.y-i.y),t.fv=rs(s,l)}function M_(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"SPVFS[]",e,n),r.pv=r.dpv=rs(n,e)}function E_(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"SPVFS[]",e,n),r.fv=rs(n,e)}function D_(r){var t=r.stack,e=r.pv;exports.DEBUG&&console.log(r.step,"GPV[]"),t.push(e.x*16384),t.push(e.y*16384)}function B_(r){var t=r.stack,e=r.fv;exports.DEBUG&&console.log(r.step,"GFV[]"),t.push(e.x*16384),t.push(e.y*16384)}function F_(r){r.fv=r.pv,exports.DEBUG&&console.log(r.step,"SFVTPV[]")}function R_(r){var t=r.stack,e=t.pop(),n=t.pop(),o=t.pop(),i=t.pop(),a=t.pop(),s=r.z0,l=r.z1,u=s[e],c=s[n],p=l[o],f=l[i],d=r.z2[a];exports.DEBUG&&console.log("ISECT[], ",e,n,o,i,a);var h=u.x,m=u.y,g=c.x,v=c.y,x=p.x,S=p.y,w=f.x,b=f.y,_=(h-g)*(S-b)-(m-v)*(x-w),T=h*v-m*g,y=x*b-S*w;d.x=(T*(x-w)-y*(h-g))/_,d.y=(T*(S-b)-y*(m-v))/_}function k_(r){r.rp0=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SRP0[]",r.rp0)}function G_(r){r.rp1=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SRP1[]",r.rp1)}function U_(r){r.rp2=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SRP2[]",r.rp2)}function V_(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZP0[]",t),r.zp0=t,t){case 0:r.tZone||ac(r),r.z0=r.tZone;break;case 1:r.z0=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function z_(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZP1[]",t),r.zp1=t,t){case 0:r.tZone||ac(r),r.z1=r.tZone;break;case 1:r.z1=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function j_(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZP2[]",t),r.zp2=t,t){case 0:r.tZone||ac(r),r.z2=r.tZone;break;case 1:r.z2=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function H_(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZPS[]",t),r.zp0=r.zp1=r.zp2=t,t){case 0:r.tZone||ac(r),r.z0=r.z1=r.z2=r.tZone;break;case 1:r.z0=r.z1=r.z2=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function W_(r){r.loop=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SLOOP[]",r.loop)}function q_(r){exports.DEBUG&&console.log(r.step,"RTG[]"),r.round=n0}function X_(r){exports.DEBUG&&console.log(r.step,"RTHG[]"),r.round=O_}function Y_(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SMD[]",t),r.minDis=t/64}function $_(r){exports.DEBUG&&console.log(r.step,"ELSE[]"),i0(r,!1)}function K_(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"JMPR[]",t),r.ip+=t-1}function Z_(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SCVTCI[]",t),r.cvCutIn=t/64}function Q_(r){var t=r.stack;exports.DEBUG&&console.log(r.step,"DUP[]"),t.push(t[t.length-1])}function Qu(r){exports.DEBUG&&console.log(r.step,"POP[]"),r.stack.pop()}function J_(r){exports.DEBUG&&console.log(r.step,"CLEAR[]"),r.stack.length=0}function e2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"SWAP[]"),t.push(e),t.push(n)}function t2(r){var t=r.stack;exports.DEBUG&&console.log(r.step,"DEPTH[]"),t.push(t.length)}function r2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"LOOPCALL[]",e,n);var o=r.ip,i=r.prog;r.prog=r.funcs[e];for(var a=0;a<n;a++)_o(r),exports.DEBUG&&console.log(++r.step,a+1<n?"next loopcall":"done loopcall",a);r.ip=o,r.prog=i}function n2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"CALL[]",t);var e=r.ip,n=r.prog;r.prog=r.funcs[t],_o(r),r.ip=e,r.prog=n,exports.DEBUG&&console.log(++r.step,"returning from",t)}function o2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"CINDEX[]",e),t.push(t[t.length-e])}function i2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"MINDEX[]",e),t.push(t.splice(t.length-e,1)[0])}function a2(r){if(r.env!=="fpgm")throw new Error("FDEF not allowed here");var t=r.stack,e=r.prog,n=r.ip,o=t.pop(),i=n;for(exports.DEBUG&&console.log(r.step,"FDEF[]",o);e[++n]!==45;);r.ip=n,r.funcs[o]=e.slice(i+1,n)}function ry(r,t){var e=t.stack.pop(),n=t.z0[e],o=t.fv,i=t.pv;exports.DEBUG&&console.log(t.step,"MDAP["+r+"]",e);var a=i.distance(n,Qa);r&&(a=t.round(a)),o.setRelative(n,Qa,a,i),o.touch(n),t.rp0=t.rp1=e}function ny(r,t){var e=t.z2,n=e.length-2,o,i,a;exports.DEBUG&&console.log(t.step,"IUP["+r.axis+"]");for(var s=0;s<n;s++)o=e[s],!r.touched(o)&&(i=o.prevTouched(r),i!==o&&(a=o.nextTouched(r),i===a&&r.setRelative(o,o,r.distance(i,i,!1,!0),r,!0),r.interpolate(o,i,a,r)))}function oy(r,t){for(var e=t.stack,n=r?t.rp1:t.rp2,o=(r?t.z0:t.z1)[n],i=t.fv,a=t.pv,s=t.loop,l=t.z2;s--;){var u=e.pop(),c=l[u],p=a.distance(o,o,!1,!0);i.setRelative(c,c,p,a),i.touch(c),exports.DEBUG&&console.log(t.step,(t.loop>1?"loop "+(t.loop-s)+": ":"")+"SHP["+(r?"rp1":"rp2")+"]",u)}t.loop=1}function iy(r,t){var e=t.stack,n=r?t.rp1:t.rp2,o=(r?t.z0:t.z1)[n],i=t.fv,a=t.pv,s=e.pop(),l=t.z2[t.contours[s]],u=l;exports.DEBUG&&console.log(t.step,"SHC["+r+"]",s);var c=a.distance(o,o,!1,!0);do u!==o&&i.setRelative(u,u,c,a),u=u.nextPointOnContour;while(u!==l)}function ay(r,t){var e=t.stack,n=r?t.rp1:t.rp2,o=(r?t.z0:t.z1)[n],i=t.fv,a=t.pv,s=e.pop();exports.DEBUG&&console.log(t.step,"SHZ["+r+"]",s);var l;switch(s){case 0:l=t.tZone;break;case 1:l=t.gZone;break;default:throw new Error("Invalid zone")}for(var u,c=a.distance(o,o,!1,!0),p=l.length-2,f=0;f<p;f++)u=l[f],i.setRelative(u,u,c,a)}function s2(r){for(var t=r.stack,e=r.loop,n=r.fv,o=t.pop()/64,i=r.z2;e--;){var a=t.pop(),s=i[a];exports.DEBUG&&console.log(r.step,(r.loop>1?"loop "+(r.loop-e)+": ":"")+"SHPIX[]",a,o),n.setRelative(s,s,o),n.touch(s)}r.loop=1}function l2(r){for(var t=r.stack,e=r.rp1,n=r.rp2,o=r.loop,i=r.z0[e],a=r.z1[n],s=r.fv,l=r.dpv,u=r.z2;o--;){var c=t.pop(),p=u[c];exports.DEBUG&&console.log(r.step,(r.loop>1?"loop "+(r.loop-o)+": ":"")+"IP[]",c,e,"<->",n),s.interpolate(p,i,a,l),s.touch(p)}r.loop=1}function sy(r,t){var e=t.stack,n=e.pop()/64,o=e.pop(),i=t.z1[o],a=t.z0[t.rp0],s=t.fv,l=t.pv;s.setRelative(i,a,n,l),s.touch(i),exports.DEBUG&&console.log(t.step,"MSIRP["+r+"]",n,o),t.rp1=t.rp0,t.rp2=o,r&&(t.rp0=o)}function c2(r){for(var t=r.stack,e=r.rp0,n=r.z0[e],o=r.loop,i=r.fv,a=r.pv,s=r.z1;o--;){var l=t.pop(),u=s[l];exports.DEBUG&&console.log(r.step,(r.loop>1?"loop "+(r.loop-o)+": ":"")+"ALIGNRP[]",l),i.setRelative(u,n,0,a),i.touch(u)}r.loop=1}function u2(r){exports.DEBUG&&console.log(r.step,"RTDG[]"),r.round=I_}function ly(r,t){var e=t.stack,n=e.pop(),o=e.pop(),i=t.z0[o],a=t.fv,s=t.pv,l=t.cvt[n];exports.DEBUG&&console.log(t.step,"MIAP["+r+"]",n,"(",l,")",o);var u=s.distance(i,Qa);r&&(Math.abs(u-l)<t.cvCutIn&&(u=l),u=t.round(u)),a.setRelative(i,Qa,u,s),t.zp0===0&&(i.xo=i.x,i.yo=i.y),a.touch(i),t.rp0=t.rp1=o}function p2(r){var t=r.prog,e=r.ip,n=r.stack,o=t[++e];exports.DEBUG&&console.log(r.step,"NPUSHB[]",o);for(var i=0;i<o;i++)n.push(t[++e]);r.ip=e}function f2(r){var t=r.ip,e=r.prog,n=r.stack,o=e[++t];exports.DEBUG&&console.log(r.step,"NPUSHW[]",o);for(var i=0;i<o;i++){var a=e[++t]<<8|e[++t];a&32768&&(a=-((a^65535)+1)),n.push(a)}r.ip=t}function d2(r){var t=r.stack,e=r.store;e||(e=r.store=[]);var n=t.pop(),o=t.pop();exports.DEBUG&&console.log(r.step,"WS",n,o),e[o]=n}function h2(r){var t=r.stack,e=r.store,n=t.pop();exports.DEBUG&&console.log(r.step,"RS",n);var o=e&&e[n]||0;t.push(o)}function m2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"WCVTP",e,n),r.cvt[n]=e/64}function g2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"RCVT",e),t.push(r.cvt[e]*64)}function cy(r,t){var e=t.stack,n=e.pop(),o=t.z2[n];exports.DEBUG&&console.log(t.step,"GC["+r+"]",n),e.push(t.dpv.distance(o,Qa,r,!1)*64)}function uy(r,t){var e=t.stack,n=e.pop(),o=e.pop(),i=t.z1[n],a=t.z0[o],s=t.dpv.distance(a,i,r,r);exports.DEBUG&&console.log(t.step,"MD["+r+"]",n,o,"->",s),t.stack.push(Math.round(s*64))}function y2(r){exports.DEBUG&&console.log(r.step,"MPPEM[]"),r.stack.push(r.ppem)}function v2(r){exports.DEBUG&&console.log(r.step,"FLIPON[]"),r.autoFlip=!0}function x2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"LT[]",e,n),t.push(n<e?1:0)}function b2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"LTEQ[]",e,n),t.push(n<=e?1:0)}function S2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"GT[]",e,n),t.push(n>e?1:0)}function w2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"GTEQ[]",e,n),t.push(n>=e?1:0)}function T2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"EQ[]",e,n),t.push(e===n?1:0)}function C2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"NEQ[]",e,n),t.push(e!==n?1:0)}function A2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"ODD[]",e),t.push(Math.trunc(e)%2?1:0)}function _2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"EVEN[]",e),t.push(Math.trunc(e)%2?0:1)}function I2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"IF[]",t),t||(i0(r,!0),exports.DEBUG&&console.log(r.step,"EIF[]"))}function O2(r){exports.DEBUG&&console.log(r.step,"EIF[]")}function L2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"AND[]",e,n),t.push(e&&n?1:0)}function N2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"OR[]",e,n),t.push(e||n?1:0)}function P2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"NOT[]",e),t.push(e?0:1)}function Ju(r,t){var e=t.stack,n=e.pop(),o=t.fv,i=t.pv,a=t.ppem,s=t.deltaBase+(r-1)*16,l=t.deltaShift,u=t.z0;exports.DEBUG&&console.log(t.step,"DELTAP["+r+"]",n,e);for(var c=0;c<n;c++){var p=e.pop(),f=e.pop(),d=s+((f&240)>>4);if(d===a){var h=(f&15)-8;h>=0&&h++,exports.DEBUG&&console.log(t.step,"DELTAPFIX",p,"by",h*l);var m=u[p];o.setRelative(m,m,h*l,i)}}}function M2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"SDB[]",e),r.deltaBase=e}function E2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"SDS[]",e),r.deltaShift=Math.pow(.5,e)}function D2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"ADD[]",e,n),t.push(n+e)}function B2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"SUB[]",e,n),t.push(n-e)}function F2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"DIV[]",e,n),t.push(n*64/e)}function R2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"MUL[]",e,n),t.push(n*e/64)}function k2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"ABS[]",e),t.push(Math.abs(e))}function G2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"NEG[]",e),t.push(-e)}function U2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"FLOOR[]",e),t.push(Math.floor(e/64)*64)}function V2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"CEILING[]",e),t.push(Math.ceil(e/64)*64)}function Zl(r,t){var e=t.stack,n=e.pop();exports.DEBUG&&console.log(t.step,"ROUND[]"),e.push(t.round(n/64)*64)}function z2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"WCVTF[]",e,n),r.cvt[n]=e*r.ppem/r.font.unitsPerEm}function ep(r,t){var e=t.stack,n=e.pop(),o=t.ppem,i=t.deltaBase+(r-1)*16,a=t.deltaShift;exports.DEBUG&&console.log(t.step,"DELTAC["+r+"]",n,e);for(var s=0;s<n;s++){var l=e.pop(),u=e.pop(),c=i+((u&240)>>4);if(c===o){var p=(u&15)-8;p>=0&&p++;var f=p*a;exports.DEBUG&&console.log(t.step,"DELTACFIX",l,"by",f),t.cvt[l]+=f}}}function j2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SROUND[]",t),r.round=o0;var e;switch(t&192){case 0:e=.5;break;case 64:e=1;break;case 128:e=2;break;default:throw new Error("invalid SROUND value")}switch(r.srPeriod=e,t&48){case 0:r.srPhase=0;break;case 16:r.srPhase=.25*e;break;case 32:r.srPhase=.5*e;break;case 48:r.srPhase=.75*e;break;default:throw new Error("invalid SROUND value")}t&=15,t===0?r.srThreshold=0:r.srThreshold=(t/8-.5)*e}function H2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"S45ROUND[]",t),r.round=o0;var e;switch(t&192){case 0:e=Math.sqrt(2)/2;break;case 64:e=Math.sqrt(2);break;case 128:e=2*Math.sqrt(2);break;default:throw new Error("invalid S45ROUND value")}switch(r.srPeriod=e,t&48){case 0:r.srPhase=0;break;case 16:r.srPhase=.25*e;break;case 32:r.srPhase=.5*e;break;case 48:r.srPhase=.75*e;break;default:throw new Error("invalid S45ROUND value")}t&=15,t===0?r.srThreshold=0:r.srThreshold=(t/8-.5)*e}function W2(r){exports.DEBUG&&console.log(r.step,"ROFF[]"),r.round=__}function q2(r){exports.DEBUG&&console.log(r.step,"RUTG[]"),r.round=L_}function X2(r){exports.DEBUG&&console.log(r.step,"RDTG[]"),r.round=N_}function Y2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SCANCTRL[]",t)}function py(r,t){var e=t.stack,n=e.pop(),o=e.pop(),i=t.z2[n],a=t.z1[o];exports.DEBUG&&console.log(t.step,"SDPVTL["+r+"]",n,o);var s,l;r?(s=i.y-a.y,l=a.x-i.x):(s=a.x-i.x,l=a.y-i.y),t.dpv=rs(s,l)}function $2(r){var t=r.stack,e=t.pop(),n=0;exports.DEBUG&&console.log(r.step,"GETINFO[]",e),e&1&&(n=35),e&32&&(n|=4096),t.push(n)}function K2(r){var t=r.stack,e=t.pop(),n=t.pop(),o=t.pop();exports.DEBUG&&console.log(r.step,"ROLL[]"),t.push(n),t.push(e),t.push(o)}function Z2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"MAX[]",e,n),t.push(Math.max(n,e))}function Q2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"MIN[]",e,n),t.push(Math.min(n,e))}function J2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SCANTYPE[]",t)}function eI(r){var t=r.stack.pop(),e=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"INSTCTRL[]",t,e),t){case 1:r.inhibitGridFit=!!e;return;case 2:r.ignoreCvt=!!e;return;default:throw new Error("invalid INSTCTRL[] selector")}}function Wn(r,t){var e=t.stack,n=t.prog,o=t.ip;exports.DEBUG&&console.log(t.step,"PUSHB["+r+"]");for(var i=0;i<r;i++)e.push(n[++o]);t.ip=o}function qn(r,t){var e=t.ip,n=t.prog,o=t.stack;exports.DEBUG&&console.log(t.ip,"PUSHW["+r+"]");for(var i=0;i<r;i++){var a=n[++e]<<8|n[++e];a&32768&&(a=-((a^65535)+1)),o.push(a)}t.ip=e}function ue(r,t,e,n,o,i){var a=i.stack,s=r&&a.pop(),l=a.pop(),u=i.rp0,c=i.z0[u],p=i.z1[l],f=i.minDis,d=i.fv,h=i.dpv,m,g,v,x;g=m=h.distance(p,c,!0,!0),v=g>=0?1:-1,g=Math.abs(g),r&&(x=i.cvt[s],n&&Math.abs(g-x)<i.cvCutIn&&(g=x)),e&&g<f&&(g=f),n&&(g=i.round(g)),d.setRelative(p,c,v*g,h),d.touch(p),exports.DEBUG&&console.log(i.step,(r?"MIRP[":"MDRP[")+(t?"M":"m")+(e?">":"_")+(n?"R":"_")+(o===0?"Gr":o===1?"Bl":o===2?"Wh":"")+"]",r?s+"("+i.cvt[s]+","+x+")":"",l,"(d =",m,"->",v*g,")"),i.rp1=i.rp0,i.rp2=l,t&&(i.rp0=l)}e0=[Zg.bind(void 0,yn),Zg.bind(void 0,rn),Qg.bind(void 0,yn),Qg.bind(void 0,rn),Jg.bind(void 0,yn),Jg.bind(void 0,rn),ey.bind(void 0,0),ey.bind(void 0,1),ty.bind(void 0,0),ty.bind(void 0,1),M_,E_,D_,B_,F_,R_,k_,G_,U_,V_,z_,j_,H_,W_,q_,X_,Y_,$_,K_,Z_,void 0,void 0,Q_,Qu,J_,e2,t2,o2,i2,void 0,void 0,void 0,r2,n2,a2,void 0,ry.bind(void 0,0),ry.bind(void 0,1),ny.bind(void 0,yn),ny.bind(void 0,rn),oy.bind(void 0,0),oy.bind(void 0,1),iy.bind(void 0,0),iy.bind(void 0,1),ay.bind(void 0,0),ay.bind(void 0,1),s2,l2,sy.bind(void 0,0),sy.bind(void 0,1),c2,u2,ly.bind(void 0,0),ly.bind(void 0,1),p2,f2,d2,h2,m2,g2,cy.bind(void 0,0),cy.bind(void 0,1),void 0,uy.bind(void 0,0),uy.bind(void 0,1),y2,void 0,v2,void 0,void 0,x2,b2,S2,w2,T2,C2,A2,_2,I2,O2,L2,N2,P2,Ju.bind(void 0,1),M2,E2,D2,B2,F2,R2,k2,G2,U2,V2,Zl.bind(void 0,0),Zl.bind(void 0,1),Zl.bind(void 0,2),Zl.bind(void 0,3),void 0,void 0,void 0,void 0,z2,Ju.bind(void 0,2),Ju.bind(void 0,3),ep.bind(void 0,1),ep.bind(void 0,2),ep.bind(void 0,3),j2,H2,void 0,void 0,W2,void 0,q2,X2,Qu,Qu,void 0,void 0,void 0,void 0,void 0,Y2,py.bind(void 0,0),py.bind(void 0,1),$2,void 0,K2,Z2,Q2,J2,eI,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,Wn.bind(void 0,1),Wn.bind(void 0,2),Wn.bind(void 0,3),Wn.bind(void 0,4),Wn.bind(void 0,5),Wn.bind(void 0,6),Wn.bind(void 0,7),Wn.bind(void 0,8),qn.bind(void 0,1),qn.bind(void 0,2),qn.bind(void 0,3),qn.bind(void 0,4),qn.bind(void 0,5),qn.bind(void 0,6),qn.bind(void 0,7),qn.bind(void 0,8),ue.bind(void 0,0,0,0,0,0),ue.bind(void 0,0,0,0,0,1),ue.bind(void 0,0,0,0,0,2),ue.bind(void 0,0,0,0,0,3),ue.bind(void 0,0,0,0,1,0),ue.bind(void 0,0,0,0,1,1),ue.bind(void 0,0,0,0,1,2),ue.bind(void 0,0,0,0,1,3),ue.bind(void 0,0,0,1,0,0),ue.bind(void 0,0,0,1,0,1),ue.bind(void 0,0,0,1,0,2),ue.bind(void 0,0,0,1,0,3),ue.bind(void 0,0,0,1,1,0),ue.bind(void 0,0,0,1,1,1),ue.bind(void 0,0,0,1,1,2),ue.bind(void 0,0,0,1,1,3),ue.bind(void 0,0,1,0,0,0),ue.bind(void 0,0,1,0,0,1),ue.bind(void 0,0,1,0,0,2),ue.bind(void 0,0,1,0,0,3),ue.bind(void 0,0,1,0,1,0),ue.bind(void 0,0,1,0,1,1),ue.bind(void 0,0,1,0,1,2),ue.bind(void 0,0,1,0,1,3),ue.bind(void 0,0,1,1,0,0),ue.bind(void 0,0,1,1,0,1),ue.bind(void 0,0,1,1,0,2),ue.bind(void 0,0,1,1,0,3),ue.bind(void 0,0,1,1,1,0),ue.bind(void 0,0,1,1,1,1),ue.bind(void 0,0,1,1,1,2),ue.bind(void 0,0,1,1,1,3),ue.bind(void 0,1,0,0,0,0),ue.bind(void 0,1,0,0,0,1),ue.bind(void 0,1,0,0,0,2),ue.bind(void 0,1,0,0,0,3),ue.bind(void 0,1,0,0,1,0),ue.bind(void 0,1,0,0,1,1),ue.bind(void 0,1,0,0,1,2),ue.bind(void 0,1,0,0,1,3),ue.bind(void 0,1,0,1,0,0),ue.bind(void 0,1,0,1,0,1),ue.bind(void 0,1,0,1,0,2),ue.bind(void 0,1,0,1,0,3),ue.bind(void 0,1,0,1,1,0),ue.bind(void 0,1,0,1,1,1),ue.bind(void 0,1,0,1,1,2),ue.bind(void 0,1,0,1,1,3),ue.bind(void 0,1,1,0,0,0),ue.bind(void 0,1,1,0,0,1),ue.bind(void 0,1,1,0,0,2),ue.bind(void 0,1,1,0,0,3),ue.bind(void 0,1,1,0,1,0),ue.bind(void 0,1,1,0,1,1),ue.bind(void 0,1,1,0,1,2),ue.bind(void 0,1,1,0,1,3),ue.bind(void 0,1,1,1,0,0),ue.bind(void 0,1,1,1,0,1),ue.bind(void 0,1,1,1,0,2),ue.bind(void 0,1,1,1,0,3),ue.bind(void 0,1,1,1,1,0),ue.bind(void 0,1,1,1,1,1),ue.bind(void 0,1,1,1,1,2),ue.bind(void 0,1,1,1,1,3)];function ki(r){this.char=r,this.state={},this.activeState=null}function bp(r,t,e){this.contextName=e,this.startIndex=r,this.endOffset=t}function tI(r,t,e){this.contextName=r,this.openRange=null,this.ranges=[],this.checkStart=t,this.checkEnd=e}function Cr(r,t){this.context=r,this.index=t,this.length=r.length,this.current=r[t],this.backtrack=r.slice(0,t),this.lookahead=r.slice(t+1)}function sc(r){this.eventId=r,this.subscribers=[]}function rI(r){var t=this,e=["start","end","next","newToken","contextStart","contextEnd","insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD","updateContextsRanges"];e.forEach(function(o){Object.defineProperty(t.events,o,{value:new sc(o)})}),r&&e.forEach(function(o){var i=r[o];typeof i=="function"&&t.events[o].subscribe(i)});var n=["insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD"];n.forEach(function(o){t.events[o].subscribe(t.updateContextsRanges)})}function Qe(r){this.tokens=[],this.registeredContexts={},this.contextCheckers=[],this.events={},this.registeredModifiers=[],rI.call(this,r)}ki.prototype.setState=function(r,t){return this.state[r]=t,this.activeState={key:r,value:this.state[r]},this.activeState};ki.prototype.getState=function(r){return this.state[r]||null};Qe.prototype.inboundIndex=function(r){return r>=0&&r<this.tokens.length};Qe.prototype.composeRUD=function(r){var t=this,e=!0,n=r.map(function(i){return t[i[0]].apply(t,i.slice(1).concat(e))}),o=function(i){return typeof i=="object"&&i.hasOwnProperty("FAIL")};if(n.every(o))return{FAIL:"composeRUD: one or more operations hasn't completed successfully",report:n.filter(o)};this.dispatch("composeRUD",[n.filter(function(i){return!o(i)})])};Qe.prototype.replaceRange=function(r,t,e,n){t=t!==null?t:this.tokens.length;var o=e.every(function(a){return a instanceof ki});if(!isNaN(r)&&this.inboundIndex(r)&&o){var i=this.tokens.splice.apply(this.tokens,[r,t].concat(e));return n||this.dispatch("replaceToken",[r,t,e]),[i,e]}else return{FAIL:"replaceRange: invalid tokens or startIndex."}};Qe.prototype.replaceToken=function(r,t,e){if(!isNaN(r)&&this.inboundIndex(r)&&t instanceof ki){var n=this.tokens.splice(r,1,t);return e||this.dispatch("replaceToken",[r,t]),[n[0],t]}else return{FAIL:"replaceToken: invalid token or index."}};Qe.prototype.removeRange=function(r,t,e){t=isNaN(t)?this.tokens.length:t;var n=this.tokens.splice(r,t);return e||this.dispatch("removeRange",[n,r,t]),n};Qe.prototype.removeToken=function(r,t){if(!isNaN(r)&&this.inboundIndex(r)){var e=this.tokens.splice(r,1);return t||this.dispatch("removeToken",[e,r]),e}else return{FAIL:"removeToken: invalid token index."}};Qe.prototype.insertToken=function(r,t,e){var n=r.every(function(o){return o instanceof ki});return n?(this.tokens.splice.apply(this.tokens,[t,0].concat(r)),e||this.dispatch("insertToken",[r,t]),r):{FAIL:"insertToken: invalid token(s)."}};Qe.prototype.registerModifier=function(r,t,e){this.events.newToken.subscribe(function(n,o){var i=[n,o],a=t===null||t.apply(this,i)===!0,s=[n,o];if(a){var l=e.apply(this,s);n.setState(r,l)}}),this.registeredModifiers.push(r)};sc.prototype.subscribe=function(r){return typeof r=="function"?this.subscribers.push(r)-1:{FAIL:"invalid '"+this.eventId+"' event handler"}};sc.prototype.unsubscribe=function(r){this.subscribers.splice(r,1)};Cr.prototype.setCurrentIndex=function(r){this.index=r,this.current=this.context[r],this.backtrack=this.context.slice(0,r),this.lookahead=this.context.slice(r+1)};Cr.prototype.get=function(r){switch(!0){case r===0:return this.current;case(r<0&&Math.abs(r)<=this.backtrack.length):return this.backtrack.slice(r)[0];case(r>0&&r<=this.lookahead.length):return this.lookahead[r-1];default:return null}};Qe.prototype.rangeToText=function(r){if(r instanceof bp)return this.getRangeTokens(r).map(function(t){return t.char}).join("")};Qe.prototype.getText=function(){return this.tokens.map(function(r){return r.char}).join("")};Qe.prototype.getContext=function(r){var t=this.registeredContexts[r];return t||null};Qe.prototype.on=function(r,t){var e=this.events[r];return e?e.subscribe(t):null};Qe.prototype.dispatch=function(r,t){var e=this,n=this.events[r];n instanceof sc&&n.subscribers.forEach(function(o){o.apply(e,t||[])})};Qe.prototype.registerContextChecker=function(r,t,e){if(this.getContext(r))return{FAIL:"context name '"+r+"' is already registered."};if(typeof t!="function")return{FAIL:"missing context start check."};if(typeof e!="function")return{FAIL:"missing context end check."};var n=new tI(r,t,e);return this.registeredContexts[r]=n,this.contextCheckers.push(n),n};Qe.prototype.getRangeTokens=function(r){var t=r.startIndex+r.endOffset;return[].concat(this.tokens.slice(r.startIndex,t))};Qe.prototype.getContextRanges=function(r){var t=this.getContext(r);return t?t.ranges:{FAIL:"context checker '"+r+"' is not registered."}};Qe.prototype.resetContextsRanges=function(){var r=this.registeredContexts;for(var t in r)if(r.hasOwnProperty(t)){var e=r[t];e.ranges=[]}};Qe.prototype.updateContextsRanges=function(){this.resetContextsRanges();for(var r=this.tokens.map(function(n){return n.char}),t=0;t<r.length;t++){var e=new Cr(r,t);this.runContextCheck(e)}this.dispatch("updateContextsRanges",[this.registeredContexts])};Qe.prototype.setEndOffset=function(r,t){var e=this.getContext(t).openRange.startIndex,n=new bp(e,r,t),o=this.getContext(t).ranges;return n.rangeId=t+"."+o.length,o.push(n),this.getContext(t).openRange=null,n};Qe.prototype.runContextCheck=function(r){var t=this,e=r.index;this.contextCheckers.forEach(function(n){var o=n.contextName,i=t.getContext(o).openRange;if(!i&&n.checkStart(r)&&(i=new bp(e,null,o),t.getContext(o).openRange=i,t.dispatch("contextStart",[o,e])),!!i&&n.checkEnd(r)){var a=e-i.startIndex+1,s=t.setEndOffset(a,o);t.dispatch("contextEnd",[o,s])}})};Qe.prototype.tokenize=function(r){this.tokens=[],this.resetContextsRanges();var t=Array.from(r);this.dispatch("start");for(var e=0;e<t.length;e++){var n=t[e],o=new Cr(t,e);this.dispatch("next",[o]),this.runContextCheck(o);var i=new ki(n);this.tokens.push(i),this.dispatch("newToken",[i,o])}return this.dispatch("end",[this.tokens]),this.tokens};function $n(r){return/[\u0600-\u065F\u066A-\u06D2\u06FA-\u06FF]/.test(r)}function a0(r){return/[\u0630\u0690\u0621\u0631\u0661\u0671\u0622\u0632\u0672\u0692\u06C2\u0623\u0673\u0693\u06C3\u0624\u0694\u06C4\u0625\u0675\u0695\u06C5\u06E5\u0676\u0696\u06C6\u0627\u0677\u0697\u06C7\u0648\u0688\u0698\u06C8\u0689\u0699\u06C9\u068A\u06CA\u066B\u068B\u06CB\u068C\u068D\u06CD\u06FD\u068E\u06EE\u06FE\u062F\u068F\u06CF\u06EF]/.test(r)}function Kn(r){return/[\u0600-\u0605\u060C-\u060E\u0610-\u061B\u061E\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED]/.test(r)}function Jl(r){return/[A-z]/.test(r)}function nI(r){return/\s/.test(r)}function tr(r){this.font=r,this.features={}}function Ao(r){this.id=r.id,this.tag=r.tag,this.substitution=r.substitution}function ns(r,t){if(!r)return-1;switch(t.format){case 1:return t.glyphs.indexOf(r);case 2:for(var e=t.ranges,n=0;n<e.length;n++){var o=e[n];if(r>=o.start&&r<=o.end){var i=r-o.start;return o.index+i}}break;default:return-1}return-1}function oI(r,t){var e=ns(r,t.coverage);return e===-1?null:r+t.deltaGlyphId}function iI(r,t){var e=ns(r,t.coverage);return e===-1?null:t.substitute[e]}function tp(r,t){for(var e=[],n=0;n<r.length;n++){var o=r[n],i=t.current;i=Array.isArray(i)?i[0]:i;var a=ns(i,o);a!==-1&&e.push(a)}return e.length!==r.length?-1:e}function aI(r,t){var e=t.inputCoverage.length+t.lookaheadCoverage.length+t.backtrackCoverage.length;if(r.context.length<e)return[];var n=tp(t.inputCoverage,r);if(n===-1)return[];var o=t.inputCoverage.length-1;if(r.lookahead.length<t.lookaheadCoverage.length)return[];for(var i=r.lookahead.slice(o);i.length&&Kn(i[0].char);)i.shift();var a=new Cr(i,0),s=tp(t.lookaheadCoverage,a),l=[].concat(r.backtrack);for(l.reverse();l.length&&Kn(l[0].char);)l.shift();if(l.length<t.backtrackCoverage.length)return[];var u=new Cr(l,0),c=tp(t.backtrackCoverage,u),p=n.length===t.inputCoverage.length&&s.length===t.lookaheadCoverage.length&&c.length===t.backtrackCoverage.length,f=[];if(p)for(var d=0;d<t.lookupRecords.length;d++)for(var h=t.lookupRecords[d],m=h.lookupListIndex,g=this.getLookupByIndex(m),v=0;v<g.subtables.length;v++){var x=g.subtables[v],S=this.getLookupMethod(g,x),w=this.getSubstitutionType(g,x);if(w==="12")for(var b=0;b<n.length;b++){var _=r.get(b),T=S(_);T&&f.push(T)}}return f}function sI(r,t){var e=r.current,n=ns(e,t.coverage);if(n===-1)return null;for(var o,i=t.ligatureSets[n],a=0;a<i.length;a++){o=i[a];for(var s=0;s<o.components.length;s++){var l=r.lookahead[s],u=o.components[s];if(l!==u)break;if(s===o.components.length-1)return o}}return null}function lI(r,t){var e=ns(r,t.coverage);return e===-1?null:t.sequences[e]}tr.prototype.getDefaultScriptFeaturesIndexes=function(){for(var r=this.font.tables.gsub.scripts,t=0;t<r.length;t++){var e=r[t];if(e.tag==="DFLT")return e.script.defaultLangSys.featureIndexes}return[]};tr.prototype.getScriptFeaturesIndexes=function(r){var t=this.font.tables;if(!t.gsub)return[];if(!r)return this.getDefaultScriptFeaturesIndexes();for(var e=this.font.tables.gsub.scripts,n=0;n<e.length;n++){var o=e[n];if(o.tag===r&&o.script.defaultLangSys)return o.script.defaultLangSys.featureIndexes;var i=o.langSysRecords;if(i)for(var a=0;a<i.length;a++){var s=i[a];if(s.tag===r){var l=s.langSys;return l.featureIndexes}}}return this.getDefaultScriptFeaturesIndexes()};tr.prototype.mapTagsToFeatures=function(r,t){for(var e={},n=0;n<r.length;n++){var o=r[n].tag,i=r[n].feature;e[o]=i}this.features[t].tags=e};tr.prototype.getScriptFeatures=function(r){var t=this.features[r];if(this.features.hasOwnProperty(r))return t;var e=this.getScriptFeaturesIndexes(r);if(!e)return null;var n=this.font.tables.gsub;return t=e.map(function(o){return n.features[o]}),this.features[r]=t,this.mapTagsToFeatures(t,r),t};tr.prototype.getSubstitutionType=function(r,t){var e=r.lookupType.toString(),n=t.substFormat.toString();return e+n};tr.prototype.getLookupMethod=function(r,t){var e=this,n=this.getSubstitutionType(r,t);switch(n){case"11":return function(o){return oI.apply(e,[o,t])};case"12":return function(o){return iI.apply(e,[o,t])};case"63":return function(o){return aI.apply(e,[o,t])};case"41":return function(o){return sI.apply(e,[o,t])};case"21":return function(o){return lI.apply(e,[o,t])};default:throw new Error("lookupType: "+r.lookupType+" - substFormat: "+t.substFormat+" is not yet supported")}};tr.prototype.lookupFeature=function(r){var t=r.contextParams,e=t.index,n=this.getFeature({tag:r.tag,script:r.script});if(!n)return new Error("font '"+this.font.names.fullName.en+"' doesn't support feature '"+r.tag+"' for script '"+r.script+"'.");for(var o=this.getFeatureLookups(n),i=[].concat(t.context),a=0;a<o.length;a++)for(var s=o[a],l=this.getLookupSubtables(s),u=0;u<l.length;u++){var c=l[u],p=this.getSubstitutionType(s,c),f=this.getLookupMethod(s,c),d=void 0;switch(p){case"11":d=f(t.current),d&&i.splice(e,1,new Ao({id:11,tag:r.tag,substitution:d}));break;case"12":d=f(t.current),d&&i.splice(e,1,new Ao({id:12,tag:r.tag,substitution:d}));break;case"63":d=f(t),Array.isArray(d)&&d.length&&i.splice(e,1,new Ao({id:63,tag:r.tag,substitution:d}));break;case"41":d=f(t),d&&i.splice(e,1,new Ao({id:41,tag:r.tag,substitution:d}));break;case"21":d=f(t.current),d&&i.splice(e,1,new Ao({id:21,tag:r.tag,substitution:d}));break}t=new Cr(i,e),!(Array.isArray(d)&&!d.length)&&(d=null)}return i.length?i:null};tr.prototype.supports=function(r){if(!r.script)return!1;this.getScriptFeatures(r.script);var t=this.features.hasOwnProperty(r.script);if(!r.tag)return t;var e=this.features[r.script].some(function(n){return n.tag===r.tag});return t&&e};tr.prototype.getLookupSubtables=function(r){return r.subtables||null};tr.prototype.getLookupByIndex=function(r){var t=this.font.tables.gsub.lookups;return t[r]||null};tr.prototype.getFeatureLookups=function(r){return r.lookupListIndexes.map(this.getLookupByIndex.bind(this))};tr.prototype.getFeature=function(t){if(!this.font)return{FAIL:"No font was found"};this.features.hasOwnProperty(t.script)||this.getScriptFeatures(t.script);var e=this.features[t.script];return e?e.tags[t.tag]?this.features[t.script].tags[t.tag]:null:{FAIL:"No feature for script "+t.script}};function cI(r){var t=r.current,e=r.get(-1);return e===null&&$n(t)||!$n(e)&&$n(t)}function uI(r){var t=r.get(1);return t===null||!$n(t)}var pI={startCheck:cI,endCheck:uI};function fI(r){var t=r.current,e=r.get(-1);return($n(t)||Kn(t))&&!$n(e)}function dI(r){var t=r.get(1);switch(!0){case t===null:return!0;case(!$n(t)&&!Kn(t)):var e=nI(t);if(!e)return!0;if(e){var n=!1;if(n=r.lookahead.some(function(o){return $n(o)||Kn(o)}),!n)return!0}break;default:return!1}}var hI={startCheck:fI,endCheck:dI};function mI(r,t,e){t[e].setState(r.tag,r.substitution)}function gI(r,t,e){t[e].setState(r.tag,r.substitution)}function yI(r,t,e){r.substitution.forEach(function(n,o){var i=t[e+o];i.setState(r.tag,n)})}function vI(r,t,e){var n=t[e];n.setState(r.tag,r.substitution.ligGlyph);for(var o=r.substitution.components.length,i=0;i<o;i++)n=t[e+i+1],n.setState("deleted",!0)}var fy={11:mI,12:gI,63:yI,41:vI};function Sp(r,t,e){r instanceof Ao&&fy[r.id]&&fy[r.id](r,t,e)}function xI(r){for(var t=[].concat(r.backtrack),e=t.length-1;e>=0;e--){var n=t[e],o=a0(n),i=Kn(n);if(!o&&!i)return!0;if(o)return!1}return!1}function bI(r){if(a0(r.current))return!1;for(var t=0;t<r.lookahead.length;t++){var e=r.lookahead[t],n=Kn(e);if(!n)return!0}return!1}function SI(r){var t=this,e="arab",n=this.featuresTags[e],o=this.tokenizer.getRangeTokens(r);if(o.length!==1){var i=new Cr(o.map(function(s){return s.getState("glyphIndex")}),0),a=new Cr(o.map(function(s){return s.char}),0);o.forEach(function(s,l){if(!Kn(s.char)){i.setCurrentIndex(l),a.setCurrentIndex(l);var u=0;xI(a)&&(u|=1),bI(a)&&(u|=2);var c;switch(u){case 1:c="fina";break;case 2:c="init";break;case 3:c="medi";break}if(n.indexOf(c)!==-1){var p=t.query.lookupFeature({tag:c,script:e,contextParams:i});if(p instanceof Error)return console.info(p.message);p.forEach(function(f,d){f instanceof Ao&&(Sp(f,o,d),i.context[d]=f.substitution)})}}})}}function dy(r,t){var e=r.map(function(n){return n.activeState.value});return new Cr(e,t||0)}function wI(r){var t=this,e="arab",n=this.tokenizer.getRangeTokens(r),o=dy(n);o.context.forEach(function(i,a){o.setCurrentIndex(a);var s=t.query.lookupFeature({tag:"rlig",script:e,contextParams:o});s.length&&(s.forEach(function(l){return Sp(l,n,a)}),o=dy(n))})}function TI(r){var t=r.current,e=r.get(-1);return e===null&&Jl(t)||!Jl(e)&&Jl(t)}function CI(r){var t=r.get(1);return t===null||!Jl(t)}var AI={startCheck:TI,endCheck:CI};function hy(r,t){var e=r.map(function(n){return n.activeState.value});return new Cr(e,t||0)}function _I(r){var t=this,e="latn",n=this.tokenizer.getRangeTokens(r),o=hy(n);o.context.forEach(function(i,a){o.setCurrentIndex(a);var s=t.query.lookupFeature({tag:"liga",script:e,contextParams:o});s.length&&(s.forEach(function(l){return Sp(l,n,a)}),o=hy(n))})}function Ir(r){this.baseDir=r||"ltr",this.tokenizer=new Qe,this.featuresTags={}}Ir.prototype.setText=function(r){this.text=r};Ir.prototype.contextChecks={latinWordCheck:AI,arabicWordCheck:pI,arabicSentenceCheck:hI};function rp(r){var t=this.contextChecks[r+"Check"];return this.tokenizer.registerContextChecker(r,t.startCheck,t.endCheck)}function II(){return rp.call(this,"latinWord"),rp.call(this,"arabicWord"),rp.call(this,"arabicSentence"),this.tokenizer.tokenize(this.text)}function OI(){var r=this,t=this.tokenizer.getContextRanges("arabicSentence");t.forEach(function(e){var n=r.tokenizer.getRangeTokens(e);r.tokenizer.replaceRange(e.startIndex,e.endOffset,n.reverse())})}Ir.prototype.registerFeatures=function(r,t){var e=this,n=t.filter(function(o){return e.query.supports({script:r,tag:o})});this.featuresTags.hasOwnProperty(r)?this.featuresTags[r]=this.featuresTags[r].concat(n):this.featuresTags[r]=n};Ir.prototype.applyFeatures=function(r,t){if(!r)throw new Error("No valid font was provided to apply features");this.query||(this.query=new tr(r));for(var e=0;e<t.length;e++){var n=t[e];!this.query.supports({script:n.script})||this.registerFeatures(n.script,n.tags)}};Ir.prototype.registerModifier=function(r,t,e){this.tokenizer.registerModifier(r,t,e)};function wp(){if(this.tokenizer.registeredModifiers.indexOf("glyphIndex")===-1)throw new Error("glyphIndex modifier is required to apply arabic presentation features.")}function LI(){var r=this,t="arab";if(!!this.featuresTags.hasOwnProperty(t)){wp.call(this);var e=this.tokenizer.getContextRanges("arabicWord");e.forEach(function(n){SI.call(r,n)})}}function NI(){var r=this,t="arab";if(!!this.featuresTags.hasOwnProperty(t)){var e=this.featuresTags[t];if(e.indexOf("rlig")!==-1){wp.call(this);var n=this.tokenizer.getContextRanges("arabicWord");n.forEach(function(o){wI.call(r,o)})}}}function PI(){var r=this,t="latn";if(!!this.featuresTags.hasOwnProperty(t)){var e=this.featuresTags[t];if(e.indexOf("liga")!==-1){wp.call(this);var n=this.tokenizer.getContextRanges("latinWord");n.forEach(function(o){_I.call(r,o)})}}}Ir.prototype.checkContextReady=function(r){return!!this.tokenizer.getContext(r)};Ir.prototype.applyFeaturesToContexts=function(){this.checkContextReady("arabicWord")&&(LI.call(this),NI.call(this)),this.checkContextReady("latinWord")&&PI.call(this),this.checkContextReady("arabicSentence")&&OI.call(this)};Ir.prototype.processText=function(r){(!this.text||this.text!==r)&&(this.setText(r),II.call(this),this.applyFeaturesToContexts())};Ir.prototype.getBidiText=function(r){return this.processText(r),this.tokenizer.getText()};Ir.prototype.getTextGlyphs=function(r){this.processText(r);for(var t=[],e=0;e<this.tokenizer.tokens.length;e++){var n=this.tokenizer.tokens[e];if(!n.state.deleted){var o=n.activeState.value;t.push(Array.isArray(o)?o[0]:o)}}return t};function Ue(r){r=r||{},r.tables=r.tables||{},r.empty||(Xa(r.familyName,"When creating a new Font object, familyName is required."),Xa(r.styleName,"When creating a new Font object, styleName is required."),Xa(r.unitsPerEm,"When creating a new Font object, unitsPerEm is required."),Xa(r.ascender,"When creating a new Font object, ascender is required."),Xa(r.descender<=0,"When creating a new Font object, negative descender value is required."),this.names={fontFamily:{en:r.familyName||" "},fontSubfamily:{en:r.styleName||" "},fullName:{en:r.fullName||r.familyName+" "+r.styleName},postScriptName:{en:r.postScriptName||(r.familyName+r.styleName).replace(/\s/g,"")},designer:{en:r.designer||" "},designerURL:{en:r.designerURL||" "},manufacturer:{en:r.manufacturer||" "},manufacturerURL:{en:r.manufacturerURL||" "},license:{en:r.license||" "},licenseURL:{en:r.licenseURL||" "},version:{en:r.version||"Version 0.1"},description:{en:r.description||" "},copyright:{en:r.copyright||" "},trademark:{en:r.trademark||" "}},this.unitsPerEm=r.unitsPerEm||1e3,this.ascender=r.ascender,this.descender=r.descender,this.createdTimestamp=r.createdTimestamp,this.tables=Object.assign(r.tables,{os2:Object.assign({usWeightClass:r.weightClass||this.usWeightClasses.MEDIUM,usWidthClass:r.widthClass||this.usWidthClasses.MEDIUM,fsSelection:r.fsSelection||this.fsSelectionValues.REGULAR},r.tables.os2)})),this.supported=!0,this.glyphs=new nn.GlyphSet(this,r.glyphs||[]),this.encoding=new Ay(this),this.position=new es(this),this.substitution=new er(this),this.tables=this.tables||{},this._push=null,this._hmtxTableData={},Object.defineProperty(this,"hinting",{get:function(){if(this._hinting)return this._hinting;if(this.outlinesFormat==="truetype")return this._hinting=new r0(this)}})}Ue.prototype.hasChar=function(r){return this.encoding.charToGlyphIndex(r)!==null};Ue.prototype.charToGlyphIndex=function(r){return this.encoding.charToGlyphIndex(r)};Ue.prototype.charToGlyph=function(r){var t=this.charToGlyphIndex(r),e=this.glyphs.get(t);return e||(e=this.glyphs.get(0)),e};Ue.prototype.updateFeatures=function(r){return this.defaultRenderOptions.features.map(function(t){return t.script==="latn"?{script:"latn",tags:t.tags.filter(function(e){return r[e]})}:t})};Ue.prototype.stringToGlyphs=function(r,t){var e=this,n=new Ir,o=function(p){return e.charToGlyphIndex(p.char)};n.registerModifier("glyphIndex",null,o);var i=t?this.updateFeatures(t.features):this.defaultRenderOptions.features;n.applyFeatures(this,i);for(var a=n.getTextGlyphs(r),s=a.length,l=new Array(s),u=this.glyphs.get(0),c=0;c<s;c+=1)l[c]=this.glyphs.get(a[c])||u;return l};Ue.prototype.nameToGlyphIndex=function(r){return this.glyphNames.nameToGlyphIndex(r)};Ue.prototype.nameToGlyph=function(r){var t=this.nameToGlyphIndex(r),e=this.glyphs.get(t);return e||(e=this.glyphs.get(0)),e};Ue.prototype.glyphIndexToName=function(r){return this.glyphNames.glyphIndexToName?this.glyphNames.glyphIndexToName(r):""};Ue.prototype.getKerningValue=function(r,t){r=r.index||r,t=t.index||t;var e=this.position.defaultKerningTables;return e?this.position.getKerningValue(e,r,t):this.kerningPairs[r+","+t]||0};Ue.prototype.defaultRenderOptions={kerning:!0,features:[{script:"arab",tags:["init","medi","fina","rlig"]},{script:"latn",tags:["liga","rlig"]}]};Ue.prototype.forEachGlyph=function(r,t,e,n,o,i){t=t!==void 0?t:0,e=e!==void 0?e:0,n=n!==void 0?n:72,o=Object.assign({},this.defaultRenderOptions,o);var a=1/this.unitsPerEm*n,s=this.stringToGlyphs(r,o),l;if(o.kerning){var u=o.script||this.position.getDefaultScriptName();l=this.position.getKerningTables(u,o.language)}for(var c=0;c<s.length;c+=1){var p=s[c];if(i.call(this,p,t,e,n,o),p.advanceWidth&&(t+=p.advanceWidth*a),o.kerning&&c<s.length-1){var f=l?this.position.getKerningValue(l,p.index,s[c+1].index):this.getKerningValue(p,s[c+1]);t+=f*a}o.letterSpacing?t+=o.letterSpacing*n:o.tracking&&(t+=o.tracking/1e3*n)}return t};Ue.prototype.getPath=function(r,t,e,n,o){var i=new dt;return this.forEachGlyph(r,t,e,n,o,function(a,s,l,u){var c=a.getPath(s,l,u,o,this);i.extend(c)}),i};Ue.prototype.getPaths=function(r,t,e,n,o){var i=[];return this.forEachGlyph(r,t,e,n,o,function(a,s,l,u){var c=a.getPath(s,l,u,o,this);i.push(c)}),i};Ue.prototype.getAdvanceWidth=function(r,t,e){return this.forEachGlyph(r,0,0,t,e,function(){})};Ue.prototype.draw=function(r,t,e,n,o,i){this.getPath(t,e,n,o,i).draw(r)};Ue.prototype.drawPoints=function(r,t,e,n,o,i){this.forEachGlyph(t,e,n,o,i,function(a,s,l,u){a.drawPoints(r,s,l,u)})};Ue.prototype.drawMetrics=function(r,t,e,n,o,i){this.forEachGlyph(t,e,n,o,i,function(a,s,l,u){a.drawMetrics(r,s,l,u)})};Ue.prototype.getEnglishName=function(r){var t=this.names[r];if(t)return t.en};Ue.prototype.validate=function(){var r=this;function t(n,o){}function e(n){var o=r.getEnglishName(n);o&&o.trim().length>0}e("fontFamily"),e("weightName"),e("manufacturer"),e("copyright"),e("version"),this.unitsPerEm>0};Ue.prototype.toTables=function(){return y_.fontToTable(this)};Ue.prototype.toBuffer=function(){return console.warn("Font.toBuffer is deprecated. Use Font.toArrayBuffer instead."),this.toArrayBuffer()};Ue.prototype.toArrayBuffer=function(){for(var r=this.toTables(),t=r.encode(),e=new ArrayBuffer(t.length),n=new Uint8Array(e),o=0;o<t.length;o++)n[o]=t[o];return e};Ue.prototype.download=function(r){var t=this.getEnglishName("fontFamily"),e=this.getEnglishName("fontSubfamily");r=r||t.replace(/\s/g,"")+"-"+e+".otf";var n=this.toArrayBuffer();if(x_())if(window.URL=window.URL||window.webkitURL,window.URL){var o=new DataView(n),i=new Blob([o],{type:"font/opentype"}),a=document.createElement("a");a.href=window.URL.createObjectURL(i),a.download=r;var s=document.createEvent("MouseEvents");s.initEvent("click",!0,!1),a.dispatchEvent(s)}else console.warn("Font file could not be downloaded. Try using a different browser.");else{var l=Xu(),u=S_(n);l.writeFileSync(r,u)}};Ue.prototype.fsSelectionValues={ITALIC:1,UNDERSCORE:2,NEGATIVE:4,OUTLINED:8,STRIKEOUT:16,BOLD:32,REGULAR:64,USER_TYPO_METRICS:128,WWS:256,OBLIQUE:512};Ue.prototype.usWidthClasses={ULTRA_CONDENSED:1,EXTRA_CONDENSED:2,CONDENSED:3,SEMI_CONDENSED:4,MEDIUM:5,SEMI_EXPANDED:6,EXPANDED:7,EXTRA_EXPANDED:8,ULTRA_EXPANDED:9};Ue.prototype.usWeightClasses={THIN:100,EXTRA_LIGHT:200,LIGHT:300,NORMAL:400,MEDIUM:500,SEMI_BOLD:600,BOLD:700,EXTRA_BOLD:800,BLACK:900};function s0(r,t){var e=JSON.stringify(r),n=256;for(var o in t){var i=parseInt(o);if(!(!i||i<256)){if(JSON.stringify(t[o])===e)return i;n<=i&&(n=i+1)}}return t[n]=r,n}function MI(r,t,e){var n=s0(t.name,e);return[{name:"tag_"+r,type:"TAG",value:t.tag},{name:"minValue_"+r,type:"FIXED",value:t.minValue<<16},{name:"defaultValue_"+r,type:"FIXED",value:t.defaultValue<<16},{name:"maxValue_"+r,type:"FIXED",value:t.maxValue<<16},{name:"flags_"+r,type:"USHORT",value:0},{name:"nameID_"+r,type:"USHORT",value:n}]}function EI(r,t,e){var n={},o=new pe.Parser(r,t);return n.tag=o.parseTag(),n.minValue=o.parseFixed(),n.defaultValue=o.parseFixed(),n.maxValue=o.parseFixed(),o.skip("uShort",1),n.name=e[o.parseUShort()]||{},n}function DI(r,t,e,n){for(var o=s0(t.name,n),i=[{name:"nameID_"+r,type:"USHORT",value:o},{name:"flags_"+r,type:"USHORT",value:0}],a=0;a<e.length;++a){var s=e[a].tag;i.push({name:"axis_"+r+" "+s,type:"FIXED",value:t.coordinates[s]<<16})}return i}function BI(r,t,e,n){var o={},i=new pe.Parser(r,t);o.name=n[i.parseUShort()]||{},i.skip("uShort",1),o.coordinates={};for(var a=0;a<e.length;++a)o.coordinates[e[a].tag]=i.parseFixed();return o}function FI(r,t){var e=new le.Table("fvar",[{name:"version",type:"ULONG",value:65536},{name:"offsetToData",type:"USHORT",value:0},{name:"countSizePairs",type:"USHORT",value:2},{name:"axisCount",type:"USHORT",value:r.axes.length},{name:"axisSize",type:"USHORT",value:20},{name:"instanceCount",type:"USHORT",value:r.instances.length},{name:"instanceSize",type:"USHORT",value:4+r.axes.length*4}]);e.offsetToData=e.sizeOf();for(var n=0;n<r.axes.length;n++)e.fields=e.fields.concat(MI(n,r.axes[n],t));for(var o=0;o<r.instances.length;o++)e.fields=e.fields.concat(DI(o,r.instances[o],r.axes,t));return e}function RI(r,t,e){var n=new pe.Parser(r,t),o=n.parseULong();xe.argument(o===65536,"Unsupported fvar table version.");var i=n.parseOffset16();n.skip("uShort",1);for(var a=n.parseUShort(),s=n.parseUShort(),l=n.parseUShort(),u=n.parseUShort(),c=[],p=0;p<a;p++)c.push(EI(r,t+i+p*s,e));for(var f=[],d=t+i+a*s,h=0;h<l;h++)f.push(BI(r,d+h*u,c,e));return{axes:c,instances:f}}var kI={make:FI,parse:RI},GI=function(){return{coverage:this.parsePointer(E.coverage),attachPoints:this.parseList(E.pointer(E.uShortList))}},UI=function(){var r=this.parseUShort();if(xe.argument(r===1||r===2||r===3,"Unsupported CaretValue table version."),r===1)return{coordinate:this.parseShort()};if(r===2)return{pointindex:this.parseShort()};if(r===3)return{coordinate:this.parseShort()}},VI=function(){return this.parseList(E.pointer(UI))},zI=function(){return{coverage:this.parsePointer(E.coverage),ligGlyphs:this.parseList(E.pointer(VI))}},jI=function(){return this.parseUShort(),this.parseList(E.pointer(E.coverage))};function HI(r,t){t=t||0;var e=new E(r,t),n=e.parseVersion(1);xe.argument(n===1||n===1.2||n===1.3,"Unsupported GDEF table version.");var o={version:n,classDef:e.parsePointer(E.classDef),attachList:e.parsePointer(GI),ligCaretList:e.parsePointer(zI),markAttachClassDef:e.parsePointer(E.classDef)};return n>=1.2&&(o.markGlyphSets=e.parsePointer(jI)),o}var WI={parse:HI},Ar=new Array(10);Ar[1]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();if(e===1)return{posFormat:1,coverage:this.parsePointer(E.coverage),value:this.parseValueRecord()};if(e===2)return{posFormat:2,coverage:this.parsePointer(E.coverage),values:this.parseValueRecordList()};xe.assert(!1,"0x"+t.toString(16)+": GPOS lookup type 1 format must be 1 or 2.")};Ar[2]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();xe.assert(e===1||e===2,"0x"+t.toString(16)+": GPOS lookup type 2 format must be 1 or 2.");var n=this.parsePointer(E.coverage),o=this.parseUShort(),i=this.parseUShort();if(e===1)return{posFormat:e,coverage:n,valueFormat1:o,valueFormat2:i,pairSets:this.parseList(E.pointer(E.list(function(){return{secondGlyph:this.parseUShort(),value1:this.parseValueRecord(o),value2:this.parseValueRecord(i)}})))};if(e===2){var a=this.parsePointer(E.classDef),s=this.parsePointer(E.classDef),l=this.parseUShort(),u=this.parseUShort();return{posFormat:e,coverage:n,valueFormat1:o,valueFormat2:i,classDef1:a,classDef2:s,class1Count:l,class2Count:u,classRecords:this.parseList(l,E.list(u,function(){return{value1:this.parseValueRecord(o),value2:this.parseValueRecord(i)}}))}}};Ar[3]=function(){return{error:"GPOS Lookup 3 not supported"}};Ar[4]=function(){return{error:"GPOS Lookup 4 not supported"}};Ar[5]=function(){return{error:"GPOS Lookup 5 not supported"}};Ar[6]=function(){return{error:"GPOS Lookup 6 not supported"}};Ar[7]=function(){return{error:"GPOS Lookup 7 not supported"}};Ar[8]=function(){return{error:"GPOS Lookup 8 not supported"}};Ar[9]=function(){return{error:"GPOS Lookup 9 not supported"}};function qI(r,t){t=t||0;var e=new E(r,t),n=e.parseVersion(1);return xe.argument(n===1||n===1.1,"Unsupported GPOS table version "+n),n===1?{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(Ar)}:{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(Ar),variations:e.parseFeatureVariationsList()}}var XI=new Array(10);function YI(r){return new le.Table("GPOS",[{name:"version",type:"ULONG",value:65536},{name:"scripts",type:"TABLE",value:new le.ScriptList(r.scripts)},{name:"features",type:"TABLE",value:new le.FeatureList(r.features)},{name:"lookups",type:"TABLE",value:new le.LookupList(r.lookups,XI)}])}var $I={parse:qI,make:YI};function KI(r){var t={};r.skip("uShort");var e=r.parseUShort();xe.argument(e===0,"Unsupported kern sub-table version."),r.skip("uShort",2);var n=r.parseUShort();r.skip("uShort",3);for(var o=0;o<n;o+=1){var i=r.parseUShort(),a=r.parseUShort(),s=r.parseShort();t[i+","+a]=s}return t}function ZI(r){var t={};r.skip("uShort");var e=r.parseULong();e>1&&console.warn("Only the first kern subtable is supported."),r.skip("uLong");var n=r.parseUShort(),o=n&255;if(r.skip("uShort"),o===0){var i=r.parseUShort();r.skip("uShort",3);for(var a=0;a<i;a+=1){var s=r.parseUShort(),l=r.parseUShort(),u=r.parseShort();t[s+","+l]=u}}return t}function QI(r,t){var e=new pe.Parser(r,t),n=e.parseUShort();if(n===0)return KI(e);if(n===1)return ZI(e);throw new Error("Unsupported kern table version ("+n+").")}var JI={parse:QI};function eO(r,t,e,n){for(var o=new pe.Parser(r,t),i=n?o.parseUShort:o.parseULong,a=[],s=0;s<e+1;s+=1){var l=i.call(o);n&&(l*=2),a.push(l)}return a}var tO={parse:eO};function rO(r,t){var e=Xu();e.readFile(r,function(n,o){if(n)return t(n.message);t(null,b_(o))})}function nO(r,t){var e=new XMLHttpRequest;e.open("get",r,!0),e.responseType="arraybuffer",e.onload=function(){return e.response?t(null,e.response):t("Font could not be loaded: "+e.statusText)},e.onerror=function(){t("Font could not be loaded")},e.send()}function my(r,t){for(var e=[],n=12,o=0;o<t;o+=1){var i=pe.getTag(r,n),a=pe.getULong(r,n+4),s=pe.getULong(r,n+8),l=pe.getULong(r,n+12);e.push({tag:i,checksum:a,offset:s,length:l,compression:!1}),n+=16}return e}function oO(r,t){for(var e=[],n=44,o=0;o<t;o+=1){var i=pe.getTag(r,n),a=pe.getULong(r,n+4),s=pe.getULong(r,n+8),l=pe.getULong(r,n+12),u=void 0;s<l?u="WOFF":u=!1,e.push({tag:i,offset:a,compression:u,compressedLength:s,length:l}),n+=20}return e}function ot(r,t){if(t.compression==="WOFF"){var e=new Uint8Array(r.buffer,t.offset+2,t.compressedLength-2),n=new Uint8Array(t.length);if(YC(e,n),n.byteLength!==t.length)throw new Error("Decompression error: "+t.tag+" decompressed length doesn't match recorded length");var o=new DataView(n.buffer,0);return{data:o,offset:0}}else return{data:r,offset:t.offset}}function Tp(r,t){t=t??{};var e,n,o=new Ue({empty:!0}),i=new DataView(r,0),a,s=[],l=pe.getTag(i,0);if(l===String.fromCharCode(0,1,0,0)||l==="true"||l==="typ1")o.outlinesFormat="truetype",a=pe.getUShort(i,4),s=my(i,a);else if(l==="OTTO")o.outlinesFormat="cff",a=pe.getUShort(i,4),s=my(i,a);else if(l==="wOFF"){var u=pe.getTag(i,4);if(u===String.fromCharCode(0,1,0,0))o.outlinesFormat="truetype";else if(u==="OTTO")o.outlinesFormat="cff";else throw new Error("Unsupported OpenType flavor "+l);a=pe.getUShort(i,12),s=oO(i,a)}else throw new Error("Unsupported OpenType signature "+l);for(var c,p,f,d,h,m,g,v,x,S,w,b,_=0;_<a;_+=1){var T=s[_],y=void 0;switch(T.tag){case"cmap":y=ot(i,T),o.tables.cmap=Cy.parse(y.data,y.offset),o.encoding=new _y(o.tables.cmap);break;case"cvt ":y=ot(i,T),b=new pe.Parser(y.data,y.offset),o.tables.cvt=b.parseShortList(T.length/2);break;case"fvar":p=T;break;case"fpgm":y=ot(i,T),b=new pe.Parser(y.data,y.offset),o.tables.fpgm=b.parseByteList(T.length);break;case"head":y=ot(i,T),o.tables.head=Fy.parse(y.data,y.offset),o.unitsPerEm=o.tables.head.unitsPerEm,e=o.tables.head.indexToLocFormat;break;case"hhea":y=ot(i,T),o.tables.hhea=Ry.parse(y.data,y.offset),o.ascender=o.tables.hhea.ascender,o.descender=o.tables.hhea.descender,o.numberOfHMetrics=o.tables.hhea.numberOfHMetrics;break;case"hmtx":g=T;break;case"ltag":y=ot(i,T),n=Gy.parse(y.data,y.offset);break;case"maxp":y=ot(i,T),o.tables.maxp=Uy.parse(y.data,y.offset),o.numGlyphs=o.tables.maxp.numGlyphs;break;case"name":S=T;break;case"OS/2":y=ot(i,T),o.tables.os2=up.parse(y.data,y.offset);break;case"post":y=ot(i,T),o.tables.post=qy.parse(y.data,y.offset),o.glyphNames=new gp(o.tables.post);break;case"prep":y=ot(i,T),b=new pe.Parser(y.data,y.offset),o.tables.prep=b.parseByteList(T.length);break;case"glyf":f=T;break;case"loca":x=T;break;case"CFF ":c=T;break;case"kern":v=T;break;case"GDEF":d=T;break;case"GPOS":h=T;break;case"GSUB":m=T;break;case"meta":w=T;break}}var I=ot(i,S);if(o.tables.name=Wy.parse(I.data,I.offset,n),o.names=o.tables.name,f&&x){var A=e===0,O=ot(i,x),C=tO.parse(O.data,O.offset,o.numGlyphs,A),N=ot(i,f);o.glyphs=Jy.parse(N.data,N.offset,C,o,t)}else if(c){var P=ot(i,c);By.parse(P.data,P.offset,o,t)}else throw new Error("Font doesn't contain TrueType or CFF outlines.");var G=ot(i,g);if(ky.parse(o,G.data,G.offset,o.numberOfHMetrics,o.numGlyphs,o.glyphs,t),mA(o,t),v){var $=ot(i,v);o.kerningPairs=JI.parse($.data,$.offset)}else o.kerningPairs={};if(d){var Y=ot(i,d);o.tables.gdef=WI.parse(Y.data,Y.offset)}if(h){var ie=ot(i,h);o.tables.gpos=$I.parse(ie.data,ie.offset),o.position.init()}if(m){var j=ot(i,m);o.tables.gsub=Xy.parse(j.data,j.offset)}if(p){var H=ot(i,p);o.tables.fvar=kI.parse(H.data,H.offset,o.names)}if(w){var V=ot(i,w);o.tables.meta=Yy.parse(V.data,V.offset),o.metas=o.tables.meta}return o}function l0(r,t,e){e=e??{};var n=typeof window>"u",o=n&&!e.isUrl?rO:nO;return new Promise(function(i,a){o(r,function(s,l){if(s){if(t)return t(s);a(s)}var u;try{u=Tp(l,e)}catch(c){if(t)return t(c,null);a(c)}if(t)return t(null,u);i(u)})})}var os=class{load(t,e,n=()=>{}){l0(t,(o,i)=>{o||!i?n(o??"Something went wrong"):e(i)})}parse(t){try{return Tp(t)}catch(e){console.error(e)}}};var iO="AIzaSyCiLGWdiRt3ErAKMH8t6fgppJ9AaQRafyY",is=null,c0=null,aO={"Spline Sans_300":"SplineSans-Light.ttf","Spline Sans_regular":"SplineSans-Regular.ttf","Spline Sans_500":"SplineSans-Medium.ttf","Spline Sans_600":"SplineSans-SemiBold.ttf","Spline Sans_700":"SplineSans-Bold.ttf","Spline Sans Mono_300":"SplineSansMono-Light.ttf","Spline Sans Mono_regular":"SplineSansMono-Regular.ttf","Spline Sans Mono_500":"SplineSansMono-Medium.ttf","Spline Sans Mono_600":"SplineSansMono-SemiBold.ttf","Spline Sans Mono_700":"SplineSansMono-Bold.ttf","Spline Sans Mono_300italic":"SplineSansMono-LightItalic.ttf","Spline Sans Mono_italic":"SplineSansMono-Italic.ttf","Spline Sans Mono_500italic":"SplineSansMono-MediumItalic.ttf","Spline Sans Mono_600italic":"SplineSansMono-SemiBoldItalic.ttf","Spline Sans Mono_700italic":"SplineSansMono-BoldItalic.ttf"};async function sO(){is=await(await fetch("https://www.googleapis.com/webfonts/v1/webfonts?key="+iO)).json(),c0=[],is?.items.forEach(t=>{let e=t.family;t.variants.forEach(n=>{c0?.push({key:e+"_"+n,name:e+" "+n})})})}function lO(r,t){return r.items.find(e=>e.family===t)}async function Cp(r){return await(await fetch(r)).arrayBuffer()}async function cO(r,t=!0){let e=aO[r];if(e!==void 0){let a="/_assets/_fonts/"+e;return{arr:await Cp(a),url:a,intercepted:!0}}await pO();let[n,o]=r.split("_"),i=lO(is,n);if(i!==void 0&&i.variants.includes(o)){let a=t?i.files[o].replace("http://","https://"):i.files[o];if(a)return{arr:await Cp(a),url:a,intercepted:!1}}return null}var uO=new os;async function u0(r,t){let e,n,o=!1;if(r.url)e=await Cp(r.url),n=r.url;else if(!r.data&&t){let i=await cO(t);i&&(e=i.arr,n=i.url,o=i.intercepted)}else r.data&&(e=r.data.buffer);if(e){let i=uO.parse(e);if(i)return{font:i,url:n,intercepted:o,arr:e}}return null}async function pO(){return is===null&&await sO(),is}var Ui=require("three");var Io=require("three"),p0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function fO(){let r=new Io.BufferGeometry;return r.setAttribute("position",new Io.BufferAttribute(new Float32Array([]),3)),r.setIndex(new Io.BufferAttribute(new Uint16Array([]),1)),r}var dO=12;var Gi=class extends Io.BufferGeometry{constructor(e,n){super();this.data=e;this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.update(e,n)}async update(e,n){this.data=e,this.userData={parameters:e};let o=n.getFont(e.font);o&&(this.font=o,await o.loadingPromise,await this.updateWithCurrentFont(e))}async updateWithCurrentFont(e){let n=this.font;if(!n||!n.isLoaded){console.warn("Cannot update text because its font is not loaded");return}this.data=e;let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:u,textTransform:c,subdivisions:p}=e;await n.loadingPromise;let f=c===2?u.toUpperCase():c===3?u.toLowerCase():u,d=hO(e,n,f),{shapes:h,charWidths:m,charCoords:g}=await n.generateShapes(d,e),v=o*.5,x=i*.5,S=h.map(b=>Ct.create({shape:new Le().fromShape(b),parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?ke.NONZERO:ke.ODD,subdivisions:p??dO}})),w=S.length?(0,p0.mergeBufferGeometries)(S):fO();w.translate(-v,x,0),this.dispose(),this.wrappedText=d,this.charCoords=g,this.charWidths=m,Object.entries(w.attributes).forEach(([b,_])=>{this.setAttribute(b,_)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=to(new Io.BufferGeometry,Gi.prototype);return e.copy(this),e}copy(e){return Object.entries(e.attributes).forEach(([n,o])=>{this.setAttribute(n,o)}),this.setIndex(e.index),this.data=e.data,this}async setText(e){this.font&&await this.font.loadingPromise,await this.updateWithCurrentFont({...this.data,text:e})}get text(){return this.data.text??""}};function hO(r,t,e){e=e??r.text;let n=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
1333
|
+
`?(n[n.length-1]+=o,o="",i===`
|
|
1334
|
+
`&&n.push("")):t.getTextWidth(n[n.length-1]+o,r)>r.width&&(n[n.length-1].length&&n.push(""),t.getTextWidth(n[n.length-1]+o,r)>r.width&&(o.length===1?(n[n.length-1]+=o,o=""):(n[n.length-1]+=o.slice(0,-1),o=o[o.length-1],n.push(""))));return n[n.length-1]+=o,n}var f0=new Ui.Vector3,d0=new Ui.Matrix4,h0=new Ui.Ray,lc=class extends St{constructor(e,n,o){super(new Gi(n.geometry,o),o.material(n.material));this.data=n;this.objectType="TextFrame";this.wrappedText=[""];this.charWidths=[];this.charCoords=[];this.castShadow=n.castShadow,this.receiveShadow=n.receiveShadow,this.name=n.name,this.uuid=e,this.updateState(n,o)}async updateGeometry(e,n){if(!n){console.warn("To update a Text Geometry you need to pass the SharedAssetsManager instance in order to get the font");return}let o=this.geometry.getAttribute("randomColor"),i={...this.data.geometry,...e.parameters};Object.assign(this.data,{geometry:i}),await this.geometry.update(i,n),Zr(this),o&&Qr(this);let{wrappedText:a,charCoords:s,charWidths:l}=this.geometry;this.wrappedText=a,this.charWidths=l,this.charCoords=s,this.resetBBoxNeedsUpdate()}updateState(e,n){this.data=e,this.material=n.material(e.material),this.fromState(e,n),this.updateGeometry({parameters:e.geometry},n)}get font(){return this.geometry.font}get initialOffsetY(){return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,this.data.geometry.height,this.fontScale,this.data.geometry.verticalAlign)??0}get fontScale(){return this.font?this.data.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){return this.data.geometry.fontSize*this.data.geometry.lineHeight}raycast(e,n){let{matrixWorld:o}=this;if(d0.copy(o).invert(),h0.copy(e.ray).applyMatrix4(d0),h0.intersectBox(this.singleBBox,f0)){let i=f0.applyMatrix4(o),a=e.ray.origin.distanceTo(i);n.push({distance:a,point:i.clone(),object:this})}}};var Dt=require("three");var v0=Fp(g0());var Ap;Ol.then(r=>{Ap=r});var x0=new Dt.Matrix4,mO=new Dt.Matrix4,gO=new Dt.Matrix4,Or=new Dt.Box3,Qn=new Dt.Vector3,yO=new Dt.Matrix4,vO=new Dt.Matrix4,Vi=class extends St{constructor(e,n,o,i){super(o??n,i);this.subdivPointer=e;this.originalGeometry=n;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Dt.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Dt.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,n,o){let{subdivPointer:i,originalGeometry:a,subdividedGeometry:s}=lr.build(n.geometry,void 0,void 0,!n.flatShading),l=o.material(n.material),u=new Vi(i,a,s||void 0,l);return n.geometry.phongAngle!==void 0&&(u.phongAngle=n.geometry.phongAngle),u.calcBoundingBox(),u.freeSubdivPointer(),u.uuid=e,u.fromState(n),u}buildFromStore(e,n){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=lr.build(e,n,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=a,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,Zr(this),Qr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){lr.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&lr.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=lr.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=lr.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,n){this.geometry=this.originalGeometry,St.prototype.raycast.call(this,e,n),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,n=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:a}=(0,v0.SVD)(n),s=x0.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),l=mO.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),u=gO.copy(l).transpose();this.shearScale=yO.makeScale(a[0],a[1],a[2]).multiply(u).premultiply(l),this.shearScaleInv=vO.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(s,u),a.every(c=>Math.abs(a[0]-c)<.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 Dt.Sphere);let n=e.attributes.position,o=e.boundingSphere.center;Or.setFromBufferAttribute(n),Or.getCenter(o),e.boundingSphere.radius=o.distanceTo(Or.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Or.getSize(Qn);let i={width:Qn.x,height:Qn.y,depth:Qn.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let n=this.originalGeometry;Or.min.set(e[0],e[2],e[4]),Or.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(Or.min.applyMatrix4(this.shearScaleInv),Or.max.applyMatrix4(this.shearScaleInv)),n.boundingSphere===null&&(n.boundingSphere=new Dt.Sphere);let o=n.boundingSphere.center;Or.getCenter(o),n.boundingSphere.radius=o.distanceTo(Or.max),isNaN(n.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Or.getSize(Qn);let i={width:Qn.x,height:Qn.y,depth:Qn.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(Ap.free_bvh(this.subdivPointer),Ap.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e,n){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,y0(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(y0(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 y0(r,t,e,n){let o=r.position.array,i=r.normal.array,a=x0.makeScale(t,e,n).invert().elements,s,l,u;for(var c=0,p=o.length;c<p;c+=3)o[c]*=t,o[c+1]*=e,o[c+2]*=n,s=i[c],l=i[c+1],u=i[c+2],i[c]=a[0]*s+a[4]*l+a[8]*u,i[c+1]=a[1]*s+a[5]*l+a[9]*u,i[c+2]=a[2]*s+a[6]*l+a[10]*u}var Jn=require("three");function b0(r,t){t.flatShading!==void 0&&(r.flatShading=t.flatShading,r.needsUpdate=!0),t.wireframe!==void 0&&(r.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?r.side=Jn.FrontSide:t.side===1?r.side=Jn.BackSide:r.side=Jn.DoubleSide)}function xO(r,t){if(Array.isArray(r.material))for(let e of r.material)b0(e,t);else{let e=r.material;b0(e,t)}r.objectType==="SubdivObject"&&t.flatShading!==void 0&&(r.material.flatShading=!1,r.smoothShading=!t.flatShading,r.updateMesh())}function S0(r,t,e){let n;if(t.geometry.type==="SubdivGeometry")n=Vi.createFromState(r,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new Jn.BufferGeometry:Ll(t.geometry,e),i="materials"in t?t.materials.map(a=>e.material(a)):e.material(t.material);ll.is2DParametricMesh(o.userData.type)?n=new Wl(o,i):o?.userData.type==="VectorGeometry"?n=new Ii(o,i):t.geometry.type==="NonParametricGeometry"?n=new ql(o,i):t.geometry.type==="BooleanGeometry"?(n=new Hl(void 0,i),n.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(n.phongAngle=t.geometry.phongAngle)):n=new Ei(o,i),n.uuid=r,n.fromState(t,e)}return xO(n,t),n}function w0(r,t,e){return t.type==="Mesh"?t.geometry.type==="TextGeometry"?new lc(r,t,e):S0(r,t,e):t.type==="Empty"?So.createFromState(r,t):t.type==="PointLight"?Ni.createFromState(r,t,e):t.type==="SpotLight"?Pi.createFromState(r,t,e):t.type==="DirectionalLight"?Li.createFromState(r,t,e):Ko.is(t.type)?gn.createFromState(r,t):(console.error(t),new So)}var Oo=class extends Qt{};var xn=require("three");function T0(r,t){let e=!1,n=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(r.layers.set(8),n.length>0&&r.layers.enable(3),e=!0,Qr(r),Zr(r)),n.length===0&&o.length===0&&r.layers.set(0),e}function C0(r,t){if(!t.layers)return!1;let e=!1,n=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return n.length>0&&(r.layers.set(3),o.length>0&&r.layers.enable(8),e=!0),n.length===0&&o.length===0&&r.layers.set(0),e}function A0(r){let t=!1;return r.traverseEntity(e=>{if(e instanceof xn.Mesh)if(Array.isArray(e.material))for(let n=0;n<e.material.length;n++)T0(e,e.material[n])&&(t=!0);else T0(e,e.material)&&(t=!0)}),t}function _0(r){let t=!1;return r.traverseEntity(e=>{if(e instanceof xn.Mesh)if(Array.isArray(e.material))for(let n=0;n<e.material.length;n++)C0(e,e.material[n])&&(t=!0);else C0(e,e.material)&&(t=!0)}),t}function I0(r){"material"in r&&SO(r.material),"geometry"in r&&r.geometry.dispose()}function SO(r){Rp(r).forEach(t=>{t instanceof Oo||t.dispose()})}var wO=new xn.Raycaster,TO=new xn.Matrix4,CO=new xn.Ray;function O0(r,t,e){let n=r.cloner;if(n)for(let o of n.children){let i=TO.copy(o.matrixWorld).invert(),a=CO.copy(t.ray).applyMatrix4(i),s=r.matrixWorld;a.applyMatrix4(s);let l=wO;l.set(a.origin,a.direction),l.near=t.near,l.far=t.far,l.intersectObject(r,!1).length>0&&e.push({object:r})}}var L0=new on.Vector3,_p=class extends El(on.Scene){constructor(e,n){super();this.objectType="Scene";this.backupFog=new on.Fog(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.bgColor=new pt(1,1,1,1);this.entityByUuid={};this.ambientLight=new on.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,n),this.matrixAutoUpdate=!1}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=_0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=A0(this),this.needsNormalDirty=!1),this._needsNormal}find(e){if(e===""||e===void 0)return;let n=this.entityByUuid[e];return n===void 0?this.getObjectByProperty("uuid",e):n}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,n){if(this.createChildrenObjects(e.objects,this,n),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(yt(e.backgroundColor,n)),this.updateFog(e.fog,n),this.updateAmbientLight(e.environment.ambientLight,n),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof gn&&this.switchActiveCamera(o)}this.traverse(o=>{jr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{I0(e)});for(let e of this.children)Hr(e)&&e.removeFromParent()}resetAfterClear(e,n){this.init(e,n)}createPersonalCamera(){let e=gn.createFromState(_p.PERSONAL_CAMERA_ID,{...cl.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let n=[],o=i=>{for(let a of i.children)Hr(a)&&!a.raycastLock&&a.visible&&((zr(a)||Pl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,n),O0(a,e,n)),o(a))};return o(this),n}traverseEntity(e){for(let n of this.children)Hr(n)&&n.traverseEntity(e)}traverseVisibleEntity(e){for(let n of this.children)Hr(n)&&n.visible&&n.traverseVisibleEntity(e)}updateFog(e,n){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=yt(e.color,n),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,n){Jm(this.ambientLight,e,n),e.groundColor!==void 0&&(this.ambientLight.groundColor=yt(e.groundColor,n)),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.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,n,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,n,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let n of e.children)this.unregisterObject(n)}createChildObject(e,n,o,i,a){let s=w0(e,n,a);return s&&(this.entityByUuid[e]=s,i.add(s),jr(i)&&zr(s)&&(s.prevBooleanObjectParent=i),this.createChildrenObjects(o,s,a)),s}getCenter(e){let n=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],u=this.find(s),c=l?u.recursiveBBox:u.singleBBox;n.push(...c.vertices)}let o=new on.Box3;return o.setFromPoints(n),o.getCenter(L0),L0}copyMatrixWorld(e,n){if(e===null){n.identity();return}let o=this.find(e);o?n.copy(o.matrixWorld):n.identity()}copyParentMatrixWorld(e,n){if(e===null){n.identity();return}let o=this.find(e)?.parent;o?n.copy(o.matrixWorld):n.identity()}traverseMaterial(e){this.traverseEntity(n=>{if(n instanceof St)if(Array.isArray(n.material))for(let o=0;o<n.material.length;o++)n.material[o]instanceof Qt&&e(n.material[o]);else n.material instanceof Qt&&e(n.material)})}updateCanvasSize(e,n){this.activeCamera.setViewplaneSize(e,n);let o,i;e>=n?(o=n/e,i=1):(o=1,i=e/n),this.traverseMaterial(a=>{a.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=i})})}},as=_p;as.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var ht=require("three"),uc=class{constructor(){this.type="ShapePath";this.color=new ht.Color;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new ht.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,n,o){return this.currentPath?.quadraticCurveTo(t,e,n,o),this}bezierCurveTo(t,e,n,o,i,a){return this.currentPath?.bezierCurveTo(t,e,n,o,i,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},n={loc:e.ORIGIN,t:0};function o(m,g,v,x){let S=m.x,w=g.x,b=v.x,_=x.x,T=m.y,y=g.y,I=v.y,A=x.y,O=(_-b)*(T-I)-(A-I)*(S-b),C=(w-S)*(T-I)-(y-T)*(S-b),N=(A-I)*(w-S)-(_-b)*(y-T),P=O/N,G=C/N;if(N===0&&O!==0||P<=0||P>=1||G<0||G>1)return null;if(O===0&&N===0){for(let $=0;$<2;$++)if(i($===0?v:x,m,g),n.loc===e.ORIGIN){let Y=$===0?v:x;return{x:Y.x,y:Y.y,t:n.t}}else if(n.loc===e.BETWEEN){let Y=+(S+n.t*(w-S)).toPrecision(10),ie=+(T+n.t*(y-T)).toPrecision(10);return{x:Y,y:ie,t:n.t}}return null}else{for(let ie=0;ie<2;ie++)if(i(ie===0?v:x,m,g),n.loc===e.ORIGIN){let j=ie===0?v:x;return{x:j.x,y:j.y,t:n.t}}let $=+(S+P*(w-S)).toPrecision(10),Y=+(T+P*(y-T)).toPrecision(10);return{x:$,y:Y,t:P}}}function i(m,g,v){let x=v.x-g.x,S=v.y-g.y,w=m.x-g.x,b=m.y-g.y,_=x*b-w*S;if(m.x===g.x&&m.y===g.y){n.loc=e.ORIGIN,n.t=0;return}if(m.x===v.x&&m.y===v.y){n.loc=e.DESTINATION,n.t=1;return}if(_<-Number.EPSILON){n.loc=e.LEFT;return}if(_>Number.EPSILON){n.loc=e.RIGHT;return}if(x*w<0||S*b<0){n.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+b*b)){n.loc=e.BEYOND;return}let T;x!==0?T=w/x:T=b/S,n.loc=e.BETWEEN,n.t=T}function a(m,g){let v=[],x=[];for(let S=1;S<m.length;S++){let w=m[S-1],b=m[S];for(let _=1;_<g.length;_++){let T=g[_-1],y=g[_],I=o(w,b,T,y);I!==null&&v.find(A=>A.t<=I.t+Number.EPSILON&&A.t>=I.t-Number.EPSILON)===void 0&&(v.push(I),x.push(new ht.Vector2(I.x,I.y)))}}return x}function s(m,g,v){let x=new ht.Vector2;g.getCenter(x);let S=[];return v.forEach(w=>{w.boundingBox.containsPoint(x)&&a(m,w.points).forEach(_=>{S.push({identifier:w.identifier,isCW:w.isCW,point:_})})}),S.sort((w,b)=>w.point.x-b.point.x),S}function l(m,g,v,x,S){(S==null||S==="")&&(S="nonzero");let w=new ht.Vector2;m.boundingBox.getCenter(w);let b=[new ht.Vector2(v,w.y),new ht.Vector2(x,w.y)],_=s(b,m.boundingBox,g);_.sort((C,N)=>C.point.x-N.point.x);let T=[],y=[];_.forEach(C=>{C.identifier===m.identifier?T.push(C):y.push(C)});let I=T[0].point.x,A=[],O=0;for(;O<y.length&&y[O].point.x<I;)A.length>0&&A[A.length-1]===y[O].identifier?A.pop():A.push(y[O].identifier),O++;if(A.push(m.identifier),S==="evenodd"){let C=A.length%2===0,N=A[A.length-2];return{identifier:m.identifier,isHole:C,for:N}}else if(S==="nonzero"){let C=!0,N=null,P=null;for(let G=0;G<A.length;G++){let $=A[G];g[$]&&(C?(P=g[$].isCW,C=!1,N=$):P!==g[$].isCW&&(P=g[$].isCW,C=!0))}return{identifier:m.identifier,isHole:C,for:N}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let u=0,c=999999999,p=-999999999,f=[];this.subPaths.forEach(m=>{let g=m.getPoints(),v=-999999999,x=999999999,S=-999999999,w=999999999;for(let b=0;b<g.length;b++){let _=g[b];_.y>v&&(v=_.y),_.y<x&&(x=_.y),_.x>S&&(S=_.x),_.x<w&&(w=_.x)}p<=S&&(p=S+1),c>=w&&(c=w-1),g.length&&f.push({curves:m.curves,points:g,isCW:ht.ShapeUtils.isClockWise(g),identifier:u++,boundingBox:new ht.Box2(new ht.Vector2(w,x),new ht.Vector2(S,v))})});let d=f.map(m=>l(m,f,c,p,this.userData?.style.fillRule)),h=[];return f.forEach(m=>{let g=d[m.identifier];if(g&&!g.isHole){let v=new ht.Shape;v.curves=m.curves,d.filter(S=>S?.isHole&&S.for===m.identifier).forEach(S=>{if(S){let w=f[S.identifier],b=new ht.Path;b.curves=w.curves,v.holes.push(b)}}),h.push(v)}}),h}};var E0=Fp(N0());var P0=new Map;function M0(r){if(typeof r=="string")return r;let t=P0.get(r);return t||(t={url:URL.createObjectURL(new Blob([r]))},P0.set(r,t)),t.url}var zi=class{constructor({src:t,volume:e,delay:n,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:M0(t),format:"wav"},this.sound=new E0.Howl(i),this.sound.on("end",this.onEnd),this._src=t,e!==void 0&&(this.volume=e),n!==void 0&&(this.delay=n),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,n){this.sound.on(t,e,n)}off(t,e,n){this.sound.off(t,e,n)}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()}};function ji(r){this.char=r,this.state={},this.activeState=null}function Ip(r,t,e){this.contextName=e,this.startIndex=r,this.endOffset=t}function AO(r,t,e){this.contextName=r,this.openRange=null,this.ranges=[],this.checkStart=t,this.checkEnd=e}function Bt(r,t){this.context=r,this.index=t,this.length=r.length,this.current=r[t],this.backtrack=r.slice(0,t),this.lookahead=r.slice(t+1)}function fc(r){this.eventId=r,this.subscribers=[]}function _O(r){let t=["start","end","next","newToken","contextStart","contextEnd","insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD","updateContextsRanges"];t.forEach(n=>{Object.defineProperty(this.events,n,{value:new fc(n)})}),r&&t.forEach(n=>{let o=r[n];typeof o=="function"&&this.events[n].subscribe(o)}),["insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD"].forEach(n=>{this.events[n].subscribe(this.updateContextsRanges)})}function Je(r){this.tokens=[],this.registeredContexts={},this.contextCheckers=[],this.events={},this.registeredModifiers=[],_O.call(this,r)}ji.prototype.setState=function(r,t){return this.state[r]=t,this.activeState={key:r,value:this.state[r]},this.activeState};ji.prototype.getState=function(r){return this.state[r]||null};Je.prototype.inboundIndex=function(r){return r>=0&&r<this.tokens.length};Je.prototype.composeRUD=function(r){let e=r.map(o=>this[o[0]].apply(this,o.slice(1).concat(!0))),n=o=>typeof o=="object"&&o.hasOwnProperty("FAIL");if(e.every(n))return{FAIL:"composeRUD: one or more operations hasn't completed successfully",report:e.filter(n)};this.dispatch("composeRUD",[e.filter(o=>!n(o))])};Je.prototype.replaceRange=function(r,t,e,n){t=t!==null?t:this.tokens.length;let o=e.every(i=>i instanceof ji);if(!isNaN(r)&&this.inboundIndex(r)&&o){let i=this.tokens.splice.apply(this.tokens,[r,t].concat(e));return n||this.dispatch("replaceToken",[r,t,e]),[i,e]}else return{FAIL:"replaceRange: invalid tokens or startIndex."}};Je.prototype.replaceToken=function(r,t,e){if(!isNaN(r)&&this.inboundIndex(r)&&t instanceof ji){let n=this.tokens.splice(r,1,t);return e||this.dispatch("replaceToken",[r,t]),[n[0],t]}else return{FAIL:"replaceToken: invalid token or index."}};Je.prototype.removeRange=function(r,t,e){t=isNaN(t)?this.tokens.length:t;let n=this.tokens.splice(r,t);return e||this.dispatch("removeRange",[n,r,t]),n};Je.prototype.removeToken=function(r,t){if(!isNaN(r)&&this.inboundIndex(r)){let e=this.tokens.splice(r,1);return t||this.dispatch("removeToken",[e,r]),e}else return{FAIL:"removeToken: invalid token index."}};Je.prototype.insertToken=function(r,t,e){return r.every(o=>o instanceof ji)?(this.tokens.splice.apply(this.tokens,[t,0].concat(r)),e||this.dispatch("insertToken",[r,t]),r):{FAIL:"insertToken: invalid token(s)."}};Je.prototype.registerModifier=function(r,t,e){this.events.newToken.subscribe(function(n,o){let i=[n,o],a=t===null||t.apply(this,i)===!0,s=[n,o];if(a){let l=e.apply(this,s);n.setState(r,l)}}),this.registeredModifiers.push(r)};fc.prototype.subscribe=function(r){return typeof r=="function"?this.subscribers.push(r)-1:{FAIL:`invalid '${this.eventId}' event handler`}};fc.prototype.unsubscribe=function(r){this.subscribers.splice(r,1)};Bt.prototype.setCurrentIndex=function(r){this.index=r,this.current=this.context[r],this.backtrack=this.context.slice(0,r),this.lookahead=this.context.slice(r+1)};Bt.prototype.get=function(r){switch(!0){case r===0:return this.current;case(r<0&&Math.abs(r)<=this.backtrack.length):return this.backtrack.slice(r)[0];case(r>0&&r<=this.lookahead.length):return this.lookahead[r-1];default:return null}};Je.prototype.rangeToText=function(r){if(r instanceof Ip)return this.getRangeTokens(r).map(t=>t.char).join("")};Je.prototype.getText=function(){return this.tokens.map(r=>r.char).join("")};Je.prototype.getContext=function(r){let t=this.registeredContexts[r];return t||null};Je.prototype.on=function(r,t){let e=this.events[r];return e?e.subscribe(t):null};Je.prototype.dispatch=function(r,t){let e=this.events[r];e instanceof fc&&e.subscribers.forEach(n=>{n.apply(this,t||[])})};Je.prototype.registerContextChecker=function(r,t,e){if(this.getContext(r))return{FAIL:`context name '${r}' is already registered.`};if(typeof t!="function")return{FAIL:"missing context start check."};if(typeof e!="function")return{FAIL:"missing context end check."};let n=new AO(r,t,e);return this.registeredContexts[r]=n,this.contextCheckers.push(n),n};Je.prototype.getRangeTokens=function(r){let t=r.startIndex+r.endOffset;return[].concat(this.tokens.slice(r.startIndex,t))};Je.prototype.getContextRanges=function(r){let t=this.getContext(r);return t?t.ranges:{FAIL:`context checker '${r}' is not registered.`}};Je.prototype.resetContextsRanges=function(){let r=this.registeredContexts;for(let t in r)if(r.hasOwnProperty(t)){let e=r[t];e.ranges=[]}};Je.prototype.updateContextsRanges=function(){this.resetContextsRanges();let r=this.tokens.map(t=>t.char);for(let t=0;t<r.length;t++){let e=new Bt(r,t);this.runContextCheck(e)}this.dispatch("updateContextsRanges",[this.registeredContexts])};Je.prototype.setEndOffset=function(r,t){let e=this.getContext(t).openRange.startIndex,n=new Ip(e,r,t),o=this.getContext(t).ranges;return n.rangeId=`${t}.${o.length}`,o.push(n),this.getContext(t).openRange=null,n};Je.prototype.runContextCheck=function(r){let t=r.index;this.contextCheckers.forEach(e=>{let n=e.contextName,o=this.getContext(n).openRange;if(!o&&e.checkStart(r)&&(o=new Ip(t,null,n),this.getContext(n).openRange=o,this.dispatch("contextStart",[n,t])),!!o&&e.checkEnd(r)){let i=t-o.startIndex+1,a=this.setEndOffset(i,n);this.dispatch("contextEnd",[n,a])}})};Je.prototype.tokenize=function(r){this.tokens=[],this.resetContextsRanges();let t=Array.from(r);this.dispatch("start");for(let e=0;e<t.length;e++){let n=t[e],o=new Bt(t,e);this.dispatch("next",[o]),this.runContextCheck(o);let i=new ji(n);this.tokens.push(i),this.dispatch("newToken",[i,o])}return this.dispatch("end",[this.tokens]),this.tokens};var D0=Je;function an(r){return/[\u0600-\u065F\u066A-\u06D2\u06FA-\u06FF]/.test(r)}function Op(r){return/[\u0630\u0690\u0621\u0631\u0661\u0671\u0622\u0632\u0672\u0692\u06C2\u0623\u0673\u0693\u06C3\u0624\u0694\u06C4\u0625\u0675\u0695\u06C5\u06E5\u0676\u0696\u06C6\u0627\u0677\u0697\u06C7\u0648\u0688\u0698\u06C8\u0689\u0699\u06C9\u068A\u06CA\u066B\u068B\u06CB\u068C\u068D\u06CD\u06FD\u068E\u06EE\u06FE\u062F\u068F\u06CF\u06EF]/.test(r)}function Lr(r){return/[\u0600-\u0605\u060C-\u060E\u0610-\u061B\u061E\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED]/.test(r)}function ss(r){return/[A-z]/.test(r)}function B0(r){return/\s/.test(r)}function rr(r){this.font=r,this.features={}}function bn(r){this.id=r.id,this.tag=r.tag,this.substitution=r.substitution}function ls(r,t){if(!r)return-1;switch(t.format){case 1:return t.glyphs.indexOf(r);case 2:let e=t.ranges;for(let n=0;n<e.length;n++){let o=e[n];if(r>=o.start&&r<=o.end){let i=r-o.start;return o.index+i}}break;default:return-1}return-1}function IO(r,t){return ls(r,t.coverage)===-1?null:r+t.deltaGlyphId}function OO(r,t){let e=ls(r,t.coverage);return e===-1?null:t.substitute[e]}function Lp(r,t){let e=[];for(let n=0;n<r.length;n++){let o=r[n],i=t.current;i=Array.isArray(i)?i[0]:i;let a=ls(i,o);a!==-1&&e.push(a)}return e.length!==r.length?-1:e}function LO(r,t){let e=t.inputCoverage.length+t.lookaheadCoverage.length+t.backtrackCoverage.length;if(r.context.length<e)return[];let n=Lp(t.inputCoverage,r);if(n===-1)return[];let o=t.inputCoverage.length-1;if(r.lookahead.length<t.lookaheadCoverage.length)return[];let i=r.lookahead.slice(o);for(;i.length&&Lr(i[0].char);)i.shift();let a=new Bt(i,0),s=Lp(t.lookaheadCoverage,a),l=[].concat(r.backtrack);for(l.reverse();l.length&&Lr(l[0].char);)l.shift();if(l.length<t.backtrackCoverage.length)return[];let u=new Bt(l,0),c=Lp(t.backtrackCoverage,u),p=n.length===t.inputCoverage.length&&s.length===t.lookaheadCoverage.length&&c.length===t.backtrackCoverage.length,f=[];if(p)for(let d=0;d<t.lookupRecords.length;d++){let m=t.lookupRecords[d].lookupListIndex,g=this.getLookupByIndex(m);for(let v=0;v<g.subtables.length;v++){let x=g.subtables[v],S=this.getLookupMethod(g,x);if(this.getSubstitutionType(g,x)==="12")for(let b=0;b<n.length;b++){let _=r.get(b),T=S(_);T&&f.push(T)}}}return f}function NO(r,t){let e=r.current,n=ls(e,t.coverage);if(n===-1)return null;let o,i=t.ligatureSets[n];for(let a=0;a<i.length;a++){o=i[a];for(let s=0;s<o.components.length;s++){let l=r.lookahead[s],u=o.components[s];if(l!==u)break;if(s===o.components.length-1)return o}}return null}function PO(r,t){let e=ls(r,t.coverage);return e===-1?null:t.sequences[e]}rr.prototype.getDefaultScriptFeaturesIndexes=function(){let r=this.font.tables.gsub.scripts;for(let t=0;t<r.length;t++){let e=r[t];if(e.tag==="DFLT")return e.script.defaultLangSys.featureIndexes}return[]};rr.prototype.getScriptFeaturesIndexes=function(r){if(!this.font.tables.gsub)return[];if(!r)return this.getDefaultScriptFeaturesIndexes();let e=this.font.tables.gsub.scripts;for(let n=0;n<e.length;n++){let o=e[n];if(o.tag===r&&o.script.defaultLangSys)return o.script.defaultLangSys.featureIndexes;{let i=o.langSysRecords;if(i)for(let a=0;a<i.length;a++){let s=i[a];if(s.tag===r)return s.langSys.featureIndexes}}}return this.getDefaultScriptFeaturesIndexes()};rr.prototype.mapTagsToFeatures=function(r,t){let e={};for(let n=0;n<r.length;n++){let o=r[n].tag,i=r[n].feature;e[o]=i}this.features[t].tags=e};rr.prototype.getScriptFeatures=function(r){let t=this.features[r];if(this.features.hasOwnProperty(r))return t;let e=this.getScriptFeaturesIndexes(r);if(!e)return null;let n=this.font.tables.gsub;return t=e.map(o=>n.features[o]),this.features[r]=t,this.mapTagsToFeatures(t,r),t};rr.prototype.getSubstitutionType=function(r,t){let e=r.lookupType.toString(),n=t.substFormat.toString();return e+n};rr.prototype.getLookupMethod=function(r,t){switch(this.getSubstitutionType(r,t)){case"11":return n=>IO.apply(this,[n,t]);case"12":return n=>OO.apply(this,[n,t]);case"63":return n=>LO.apply(this,[n,t]);case"41":return n=>NO.apply(this,[n,t]);case"21":return n=>PO.apply(this,[n,t]);default:throw new Error(`lookupType: ${r.lookupType} - substFormat: ${t.substFormat} is not yet supported`)}};rr.prototype.lookupFeature=function(r){let t=r.contextParams,e=t.index,n=this.getFeature({tag:r.tag,script:r.script});if(!n)return new Error(`font '${this.font.names.fullName.en}' doesn't support feature '${r.tag}' for script '${r.script}'.`);let o=this.getFeatureLookups(n),i=[].concat(t.context);for(let a=0;a<o.length;a++){let s=o[a],l=this.getLookupSubtables(s);for(let u=0;u<l.length;u++){let c=l[u],p=this.getSubstitutionType(s,c),f=this.getLookupMethod(s,c),d;switch(p){case"11":d=f(t.current),d&&i.splice(e,1,new bn({id:11,tag:r.tag,substitution:d}));break;case"12":d=f(t.current),d&&i.splice(e,1,new bn({id:12,tag:r.tag,substitution:d}));break;case"63":d=f(t),Array.isArray(d)&&d.length&&i.splice(e,1,new bn({id:63,tag:r.tag,substitution:d}));break;case"41":d=f(t),d&&i.splice(e,1,new bn({id:41,tag:r.tag,substitution:d}));break;case"21":d=f(t.current),d&&i.splice(e,1,new bn({id:21,tag:r.tag,substitution:d}));break}t=new Bt(i,e),!(Array.isArray(d)&&!d.length)&&(d=null)}}return i.length?i:null};rr.prototype.supports=function(r){if(!r.script)return!1;this.getScriptFeatures(r.script);let t=this.features.hasOwnProperty(r.script);if(!r.tag)return t;let e=this.features[r.script].some(n=>n.tag===r.tag);return t&&e};rr.prototype.getLookupSubtables=function(r){return r.subtables||null};rr.prototype.getLookupByIndex=function(r){return this.font.tables.gsub.lookups[r]||null};rr.prototype.getFeatureLookups=function(r){return r.lookupListIndexes.map(this.getLookupByIndex.bind(this))};rr.prototype.getFeature=function(t){if(!this.font)return{FAIL:"No font was found"};this.features.hasOwnProperty(t.script)||this.getScriptFeatures(t.script);let e=this.features[t.script];return e?e.tags[t.tag]?this.features[t.script].tags[t.tag]:null:{FAIL:`No feature for script ${t.script}`}};var F0=rr;function MO(r){let t=r.current,e=r.get(-1);return e===null&&an(t)||!an(e)&&an(t)}function EO(r){let t=r.get(1);return t===null||!an(t)}var R0={startCheck:MO,endCheck:EO};function DO(r){let t=r.current,e=r.get(-1);return(an(t)||Lr(t))&&!an(e)}function BO(r){let t=r.get(1);switch(!0){case t===null:return!0;case(!an(t)&&!Lr(t)):let e=B0(t);if(!e)return!0;if(e){let n=!1;if(n=r.lookahead.some(o=>an(o)||Lr(o)),!n)return!0}break;default:return!1}}var k0={startCheck:DO,endCheck:BO};function FO(r,t,e){t[e].setState(r.tag,r.substitution)}function RO(r,t,e){t[e].setState(r.tag,r.substitution)}function kO(r,t,e){r.substitution.forEach((n,o)=>{t[e+o].setState(r.tag,n)})}function GO(r,t,e){let n=t[e];n.setState(r.tag,r.substitution.ligGlyph);let o=r.substitution.components.length;for(let i=0;i<o;i++)n=t[e+i+1],n.setState("deleted",!0)}var G0={11:FO,12:RO,63:kO,41:GO};function UO(r,t,e){r instanceof bn&&G0[r.id]&&G0[r.id](r,t,e)}var Hi=UO;function VO(r){let t=[].concat(r.backtrack);for(let e=t.length-1;e>=0;e--){let n=t[e],o=Op(n),i=Lr(n);if(!o&&!i)return!0;if(o)return!1}return!1}function zO(r){if(Op(r.current))return!1;for(let t=0;t<r.lookahead.length;t++){let e=r.lookahead[t];if(!Lr(e))return!0}return!1}function jO(r){let t="arab",e=this.featuresTags[t],n=this.tokenizer.getRangeTokens(r);if(n.length===1)return;let o=new Bt(n.map(a=>a.getState("glyphIndex")),0),i=new Bt(n.map(a=>a.char),0);n.forEach((a,s)=>{if(Lr(a.char))return;o.setCurrentIndex(s),i.setCurrentIndex(s);let l=0;VO(i)&&(l|=1),zO(i)&&(l|=2);let u;switch(l){case 1:u="fina";break;case 2:u="init";break;case 3:u="medi";break}if(e.indexOf(u)===-1)return;let c=this.query.lookupFeature({tag:u,script:t,contextParams:o});if(c instanceof Error)return console.info(c.message);c.forEach((p,f)=>{p instanceof bn&&(Hi(p,n,f),o.context[f]=p.substitution)})})}var U0=jO;function V0(r,t){let e=r.map(n=>n.activeState.value);return new Bt(e,t||0)}function HO(r){let t="arab",e=this.tokenizer.getRangeTokens(r),n=V0(e);n.context.forEach((o,i)=>{n.setCurrentIndex(i);let a=this.query.lookupFeature({tag:"rlig",script:t,contextParams:n});a.length&&(a.forEach(s=>Hi(s,e,i)),n=V0(e))})}var z0=HO;function WO(r){let t=r.current,e=r.get(-1);return e===null&&ss(t)||!ss(e)&&ss(t)}function qO(r){let t=r.get(1);return t===null||!ss(t)}var j0={startCheck:WO,endCheck:qO};function H0(r,t){let e=r.map(n=>n.activeState.value);return new Bt(e,t||0)}function XO(r){let t="latn",e=this.tokenizer.getRangeTokens(r),n=H0(e);n.context.forEach((o,i)=>{n.setCurrentIndex(i);let a=this.query.lookupFeature({tag:"liga",script:t,contextParams:n});a.length&&(a.forEach(s=>Hi(s,e,i)),n=H0(e))})}var W0=XO;function Nr(r){this.baseDir=r||"ltr",this.tokenizer=new D0,this.featuresTags={}}Nr.prototype.setText=function(r){this.text=r};Nr.prototype.contextChecks={latinWordCheck:j0,arabicWordCheck:R0,arabicSentenceCheck:k0};function Np(r){let t=this.contextChecks[`${r}Check`];return this.tokenizer.registerContextChecker(r,t.startCheck,t.endCheck)}function YO(){return Np.call(this,"latinWord"),Np.call(this,"arabicWord"),Np.call(this,"arabicSentence"),this.tokenizer.tokenize(this.text)}function $O(){this.tokenizer.getContextRanges("arabicSentence").forEach(t=>{let e=this.tokenizer.getRangeTokens(t);this.tokenizer.replaceRange(t.startIndex,t.endOffset,e.reverse())})}Nr.prototype.registerFeatures=function(r,t){let e=t.filter(n=>this.query.supports({script:r,tag:n}));this.featuresTags.hasOwnProperty(r)?this.featuresTags[r]=this.featuresTags[r].concat(e):this.featuresTags[r]=e};Nr.prototype.applyFeatures=function(r,t){if(!r)throw new Error("No valid font was provided to apply features");this.query||(this.query=new F0(r));for(let e=0;e<t.length;e++){let n=t[e];!this.query.supports({script:n.script})||this.registerFeatures(n.script,n.tags)}};Nr.prototype.registerModifier=function(r,t,e){this.tokenizer.registerModifier(r,t,e)};function Pp(){if(this.tokenizer.registeredModifiers.indexOf("glyphIndex")===-1)throw new Error("glyphIndex modifier is required to apply arabic presentation features.")}function KO(){let r="arab";if(!this.featuresTags.hasOwnProperty(r))return;Pp.call(this),this.tokenizer.getContextRanges("arabicWord").forEach(e=>{U0.call(this,e)})}function ZO(){let r="arab";if(!this.featuresTags.hasOwnProperty(r)||this.featuresTags[r].indexOf("rlig")===-1)return;Pp.call(this),this.tokenizer.getContextRanges("arabicWord").forEach(n=>{z0.call(this,n)})}function QO(){let r="latn";if(!this.featuresTags.hasOwnProperty(r)||this.featuresTags[r].indexOf("liga")===-1)return;Pp.call(this),this.tokenizer.getContextRanges("latinWord").forEach(n=>{W0.call(this,n)})}Nr.prototype.checkContextReady=function(r){return!!this.tokenizer.getContext(r)};Nr.prototype.applyFeaturesToContexts=function(){this.checkContextReady("arabicWord")&&(KO.call(this),ZO.call(this)),this.checkContextReady("latinWord")&&QO.call(this),this.checkContextReady("arabicSentence")&&$O.call(this)};Nr.prototype.processText=function(r){(!this.text||this.text!==r)&&(this.setText(r),YO.call(this),this.applyFeaturesToContexts())};Nr.prototype.getBidiText=function(r){return this.processText(r),this.tokenizer.getText()};Nr.prototype.getTextGlyphs=function(r){this.processText(r);let t=[];for(let e=0;e<this.tokenizer.tokens.length;e++){let n=this.tokenizer.tokens[e];if(n.state.deleted)continue;let o=n.activeState.value;t.push(Array.isArray(o)?o[0]:o)}return t};var q0=Nr;function JO(r,t){return t.state.glyphIndex===r||t.state.fina===r||t.state.medi===r||t.state.init===r}var dc=class{constructor(t,e,n){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=u0(t,e).then(o=>{o&&(this._arrayBuffer=o.arr,this._url=o.url,this.font=o.font,this._intercepted=o.intercepted,this._isLoaded=!0,n())})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,n){let o=new q0,i=c=>t.charToGlyphIndex(c.char);o.registerModifier("glyphIndex",null,i),o.applyFeatures(t,t.defaultRenderOptions.features),o.getTextGlyphs(e);let a=o.tokenizer.tokens,s=[],l=0,u=n.length===a.length;for(let c=0;c<n.length;c++){let p=n[c].index,f=String.fromCharCode(n[c].unicode),d=a[l];if(JO(p,d)||u)s.push({char:f,index:p,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),l++;else{let h=d.char,m="",g=[d.state.glyphIndex],v=[],x=!1;for(;!x;)l++,m=e.charAt(l),h+=m,g.push(t.charToGlyphIndex(m)),v=t.stringToGlyphs(h),v.length===1&&v[0].index===p&&(x=!0),l>e.length&&(x=!0);s.push({char:f,index:p,replacements:g,replacementChars:Array.from(h)}),l++}}return s}async generateShapes(t,e){await this._loadingPromise;let n=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=t.map(v=>this.getTextWidth(v,e)),s=e.width,l=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign),u=this.getLineInitialOffsetY(i,t.length,e.height,o,e.verticalAlign),c=this.computeSpaceWidthForLine(t,0,e),p=this.getCharWidth(`
|
|
1335
|
+
`,e),f=[],d=t.map(v=>[]),h=t.map(v=>[]),m;for(let v=0;v<t.length;v++){let x=t[v],S={features:{liga:!0}},w=[];try{w=n.stringToGlyphs(x,S)}catch(_){console.warn(_)}l=this.getLineInitialOffsetX(a[v],s,e.horizontalAlign);let b=[];try{b=this.reverseLigaturesTable(n,x,w)}catch(_){console.warn(_)}c=this.computeSpaceWidthForLine(t,v,e);for(let _=0;_<w.length;_++){let T=w[_],y=T.index===0?`
|
|
1336
|
+
`:T.unicode?String.fromCharCode(T.unicode):void 0,I=b[_],A=0,O=0;_===0&&e.horizontalAlign===2&&T.leftSideBearing!==void 0&&(O=-T.leftSideBearing*o),m&&(A=n.getKerningValue(T,m)*o),l+=O+A;let C=0;if(y===`
|
|
1337
|
+
`)C=p;else if(y===" ")C=c;else{let N=this.createPath(T,o,l,u,e);N&&(C=N.offsetX-(A+O),f.push(N.path))}if(I.replacements.length===1)h[v].push([l,u]),d[v].push(C);else{let N=I.replacements.map(Y=>(n.glyphs.get(Y).advanceWidth??0)*o),P=N.reduce((Y,ie)=>Y+=ie,0),G=N.map(Y=>Y/P),$=l;for(let Y=0;Y<G.length;Y++){let ie=C*G[Y];h[v].push([$,u]),d[v].push(ie),$+=ie}}l+=C,m=T}u-=i}let g=[];for(let v=0,x=f.length;v<x;v++)g.push(...f[v].toShapes());return{shapes:g,charWidths:d,lineWidths:a,charCoords:h}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,n){return n===3?e*.5-t*.5:n===2?e-t:0}getLineInitialOffsetY(t,e,n,o,i){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,u=-this.ascender*o-l/2;return i===3?-(n-a-u):i===2?-(n*.5-a*.5-u):u}createPath(t,e,n,o,i){let a=t.getPath(n,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new uc,l=(t.advanceWidth??1)*e;if(t)for(let u of a.commands){let c=s.currentPath?.currentPoint;if(!(c&&u.type!=="Z"&&c.x===u.x&&-c.y===u.y))switch(u.type){case"M":s.moveTo(u.x,-u.y);break;case"L":s.lineTo(u.x,-u.y);break;case"Q":s.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":s.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,n){let o=this.getCharWidth(" ",n),i=t[e];if(i){let a=this.countSpaces(i.trimEnd());if(n.horizontalAlign===4&&e<t.length-1&&a){let s=n.width,l=this.getTextWidth(i,n);return(s-(l-a*o))/a}}return o}countSpaces(t){return(t.match(/ /g)||[]).length}};var cs=class{constructor(t,e={}){this.deletedMaterial=new Oo(Zt.defaultTwoLayerData("basic"),this);this.deletedImage=new bo(fl.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.onFontLoad=()=>{this._onFontLoad&&this._onFontLoad()};if(e.images)for(let[n,o]of Object.entries(e.images))this.addImage(n,o);if(e.audios)for(let[n,o]of Object.entries(e.audios))this.addAudio(n,o.data);this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}setOnFontLoad(t){this._onFontLoad=t}reset(t){for(let[e,n]of Object.entries(t.images))this.addImage(e,n);for(let[e,n]of Object.entries(t.colors))this.addColor(e,n);for(let[e,n]of Object.entries(t.materials))this.addMaterial(e,new Oo(n,this));for(let[e,n]of Object.entries(t.audios))this.addAudio(e,n.data);for(let[e,n]of Object.entries(t.fonts))this.addFont(e,n);this.penumbraSize=t.penumbraSize}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 Qt(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new bo(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 _i(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 zn(e.r,e.g,e.b,e.a):this.colors[t]=new zn(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let n=this.colors[t];return this.colors[t].r=e.r??n.r,this.colors[t].g=e.g??n.g,this.colors[t].b=e.b??n.b,this.colors[t].a=e.a??n.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 n=this.getColor(t);n?e=n:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new pt(0,0,0,0))}else return"a"in t?new pt(t.r,t.g,t.b,t.a):new pt(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 zi)return e;{let n=new zi({src:e});return this.audios[t]=n,n}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}addFont(t,e){this.fonts[t]=new dc(e,t,this.onFontLoad)}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof zi&&e.dispose()}),this.audios={}}},W9=new cs(pl.emptyData());var X0=require("three/examples/jsm/loaders/DRACOLoader.js");var eo;function eL(){return eo||(eo=new X0.DRACOLoader,eo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),eo.decoderPending}async function tL(r){if(eo){let t={attributeIDs:eo.defaultAttributeIDs,attributeTypes:eo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await eo.decodeGeometry(new Int8Array(r).buffer,t)}catch(n){console.error(n)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([n,o])=>({name:n,itemSize:o.itemSize,array:o.array}))}}return null}async function Y0(r,t){let[e,n]=Oc(ol.deserialize(new Uint8Array(r)));Gh(e);let o=[];e.scene.objects.traverse((i,a)=>{a.type==="Mesh"&&a.geometry.type==="NonParametricGeometry"&&a.geometry.data.draco!==void 0&&o.push(a)}),o.length&&await eL();for(let i of o){let a=await tL(Ut(i.geometry.data.draco));if(a){a.index&&(i.geometry.data.index={array:a.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};a.attributes.forEach(({name:l,array:u,itemSize:c})=>{s[l]={array:u,itemSize:c,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return t&&t(e),n.result().data}var rL=require("three"),nL=require("three/examples/jsm/utils/BufferGeometryUtils.js");function $0(r){let t;if(!!r.index)for(let e=0;e<r.index.array.length;e+=3)t=r.index.array[e],r.index.array[e]=r.index.array[e+2],r.index.array[e+2]=t}var us=require("three");function K0(r){let t=new Set;return r.traverse(e=>{if(zr(e))if(Xe(e.material))e.material.forEach(n=>{let o=n;t.has(o)||t.add(o)});else{let n=e.material;t.has(n)||t.add(n)}}),t.forEach(e=>{if(e instanceof Array)return;let n=e.onBeforeCompile.bind(e);if(oL(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new us.Color,specularColor:new us.Color});let o=0;e.onBeforeCompile=(i,a)=>{n&&n(i,a),i.uniforms=Object.assign({},us.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else iL(e)||(e.onBeforeCompile=(o,i)=>{n&&n(o,i),e.transparent=!1})}),r}function oL(r){return r.getLayersOfType("transmission").length>0}function iL(r){let t=0;return r.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let n=e.uniforms["f"+e.id+"_alpha"];n&&(t+=(1-t)*n.value)}}),t<1}function Z0(r){return r.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),r}function Q0(r){let t=[],e=(n,o=0)=>{let i=o>0?n+o:n;return t.includes(i)?e(n,o+1):i};return r.traverse(n=>{if(t.includes(n.name)){let o=n.name,i=e(n.name);if(n.name=i,n.isMesh){let a=n;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}t.push(n.name)}),r}var J0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function ev(r){let t=[];return r.traverse(e=>{e instanceof po&&t.push(e)}),t.forEach(e=>{let n=e.object,i=e.children.map(s=>{s.updateMatrix();let l=s.geometry.clone().applyMatrix4(s.matrix);return s.matrix.determinant()<0&&$0(l),l}),a=(0,J0.mergeBufferGeometries)(e.parameters.hideBase?i:[n.geometry,...i]);n.geometry=a,n.remove(e),n.cloner=void 0}),r}function tv(r){return r.traverse(t=>{t.matrixAutoUpdate=!0}),r}function rv(r){Object.values(r.shared.materials).forEach(t=>{Mp(t)}),r.scene.objects.traverse((t,e)=>{"material"in e?Mp(e.material):"materials"in e&&e.materials.forEach(n=>{Mp(n)})})}function Mp(r){if(typeof r=="string")return;let t=[];r.layers.forEach((e,n)=>{e.type==="outline"&&t.push(n)}),t.reverse().forEach(e=>{r.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var nv="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",hc=class extends mc.Loader{load(t,e,n,o=console.error){let i=new mc.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(nv+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(nv),i.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},n,o)}async parse(t){let e=await Y0(t,rv),n=new cs(e.shared);Object.values(n.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new as(e.scene,n);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let a=o.find(i);a&&Qm(a)&&Object.assign(a,{makeDefault:!0})}return o=ev(o),o=K0(o),o=Z0(o),o=Q0(o),o=tv(o),o}};
|