@splinetool/loader 1.0.2 → 1.0.3

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.
@@ -12,19 +12,19 @@ var jS=Object.create;var Pl=Object.defineProperty;var US=Object.getOwnPropertyDe
12
12
  `+t.join(`
13
13
  `)+`
14
14
  ----------`);var d=new Function("compile",t.join(`
15
- `));return d(iD.bind(void 0,n))}Qv.exports=aD});var Jv=Qt((Kce,Zv)=>{"use strict";var sD=Kv();function lD(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}function cD(n){var t=new lD;t.pre=n.pre,t.body=n.body,t.post=n.post;var e=n.args.slice(0);t.argTypes=e;for(var r=0;r<e.length;++r){var o=e[r];if(o==="array"||typeof o=="object"&&o.blockIndices){if(t.argTypes[r]="array",t.arrayArgs.push(r),t.arrayBlockIndices.push(o.blockIndices?o.blockIndices:0),t.shimArgs.push("array"+r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array args");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array args")}else if(o==="scalar")t.scalarArgs.push(r),t.shimArgs.push("scalar"+r);else if(o==="index"){if(t.indexArgs.push(r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array index");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array index");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array index")}else if(o==="shape"){if(t.shapeArgs.push(r),r<t.pre.args.length&&t.pre.args[r].lvalue)throw new Error("cwise: pre() block may not write to array shape");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array shape");if(r<t.post.args.length&&t.post.args[r].lvalue)throw new Error("cwise: post() block may not write to array shape")}else if(typeof o=="object"&&o.offset)t.argTypes[r]="offset",t.offsetArgs.push({array:o.array,offset:o.offset}),t.offsetArgIndex.push(r);else throw new Error("cwise: Unknown argument type "+e[r])}if(t.arrayArgs.length<=0)throw new Error("cwise: No array arguments specified");if(t.pre.args.length>e.length)throw new Error("cwise: Too many arguments in pre() block");if(t.body.args.length>e.length)throw new Error("cwise: Too many arguments in body() block");if(t.post.args.length>e.length)throw new Error("cwise: Too many arguments in post() block");return t.debug=!!n.printCode||!!n.debug,t.funcName=n.funcName||"cwise",t.blockSize=n.blockSize||64,sD(t)}Zv.exports=cD});var hs=Qt(Te=>{"use strict";var ir=Jv(),rd={body:"",args:[],thisVars:[],localVars:[]};function oh(n){if(!n)return rd;for(var t=0;t<n.args.length;++t){var e=n.args[t];t===0?n.args[t]={name:e,lvalue:!0,rvalue:!!n.rvalue,count:n.count||1}:n.args[t]={name:e,lvalue:!1,rvalue:!0,count:1}}return n.thisVars||(n.thisVars=[]),n.localVars||(n.localVars=[]),n}function uD(n){return ir({args:n.args,pre:oh(n.pre),body:oh(n.body),post:oh(n.proc),funcName:n.funcName})}function nt(n){for(var t=[],e=0;e<n.args.length;++e)t.push("a"+e);var r=new Function("P",["return function ",n.funcName,"_ndarrayops(",t.join(","),") {P(",t.join(","),");return a0}"].join(""));return r(uD(n))}var eS={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var n in eS){var t=eS[n];Te[n]=nt({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"eq"]=nt({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:n+"eq"}),Te[n+"s"]=nt({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"seq"]=nt({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:n+"seq"})}})();var tS={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var n in tS){var t=tS[n];Te[n]=nt({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:n}),Te[n+"eq"]=nt({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:n+"eq"})}})();var rS={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};(function(){for(var n in rS){var t=rS[n];Te[n]=nt({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"s"]=nt({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"eq"]=nt({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:n+"eq"}),Te[n+"seq"]=nt({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:n+"seq"})}})();var oS=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];(function(){for(var n=0;n<oS.length;++n){var t=oS[n];Te[t]=nt({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:t}),Te[t+"eq"]=nt({args:["array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"})}})();var nS=["max","min","atan2","pow"];(function(){for(var n=0;n<nS.length;++n){var t=nS[n];Te[t]=nt({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t}),Te[t+"s"]=nt({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t+"s"}),Te[t+"eq"]=nt({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"}),Te[t+"seq"]=nt({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"seq"})}})();var iS=["atan2","pow"];(function(){for(var n=0;n<iS.length;++n){var t=iS[n];Te[t+"op"]=nt({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"op"}),Te[t+"ops"]=nt({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"ops"}),Te[t+"opeq"]=nt({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opeq"}),Te[t+"opseq"]=nt({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opseq"})}})();Te.any=ir({args:["array"],pre:rd,body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"if(a){return true}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return false"},funcName:"any"});Te.all=ir({args:["array"],pre:rd,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1}],body:"if(!x){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"all"});Te.sum=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s+=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"sum"});Te.prod=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=1"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s*=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"prod"});Te.norm2squared=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm2squared"});Te.norm2=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return Math.sqrt(this_s)"},funcName:"norm2"});Te.norminf=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:4}],body:"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"});Te.norm1=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"});Te.sup=ir({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Te.inf=ir({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Te.argmin=ir({args:["index","array","shape"],pre:{body:"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Te.argmax=ir({args:["index","array","shape"],pre:{body:"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Te.random=nt({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"});Te.assign=nt({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"});Te.assigns=nt({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"});Te.equals=ir({args:["array","array"],pre:rd,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})});var NS=Qt((zpe,IS)=>{IS.exports=function(t,e){for(var r=t.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(r[i]),s=Number(o[i]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});import{FileLoader as YD,Loader as XD}from"three";function Ol(n){for(let t of Object.keys(n))n[t]===void 0&&delete n[t];return n}function jt(n,t){return Object.setPrototypeOf(n,t),n}function Cl(n){return Array.isArray(n)?n:[n]}function Tl(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var QS=typeof global=="object"&&global&&global.Object===Object&&global,Ml=QS;var KS=typeof self=="object"&&self&&self.Object===Object&&self,ZS=Ml||KS||Function("return this")(),ft=ZS;var JS=ft.Symbol,At=JS;var fh=Object.prototype,e1=fh.hasOwnProperty,t1=fh.toString,ys=At?At.toStringTag:void 0;function r1(n){var t=e1.call(n,ys),e=n[ys];try{n[ys]=void 0;var r=!0}catch{}var o=t1.call(n);return r&&(t?n[ys]=e:delete n[ys]),o}var hh=r1;var o1=Object.prototype,n1=o1.toString;function i1(n){return n1.call(n)}var mh=i1;var a1="[object Null]",s1="[object Undefined]",yh=At?At.toStringTag:void 0;function l1(n){return n==null?n===void 0?s1:a1:yh&&yh in Object(n)?hh(n):mh(n)}var sr=l1;function c1(n){return n!=null&&typeof n=="object"}var Et=c1;var u1="[object Symbol]";function d1(n){return typeof n=="symbol"||Et(n)&&sr(n)==u1}var mi=d1;function p1(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Il=p1;var f1=Array.isArray,it=f1;var h1=1/0,gh=At?At.prototype:void 0,xh=gh?gh.toString:void 0;function bh(n){if(typeof n=="string")return n;if(it(n))return Il(n,bh)+"";if(mi(n))return xh?xh.call(n):"";var t=n+"";return t=="0"&&1/n==-h1?"-0":t}var vh=bh;function m1(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var lr=m1;function y1(n){return n}var Sh=y1;var g1="[object AsyncFunction]",x1="[object Function]",b1="[object GeneratorFunction]",v1="[object Proxy]";function S1(n){if(!lr(n))return!1;var t=sr(n);return t==x1||t==b1||t==g1||t==v1}var Nl=S1;var w1=ft["__core-js_shared__"],Dl=w1;var wh=function(){var n=/[^.]+$/.exec(Dl&&Dl.keys&&Dl.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function _1(n){return!!wh&&wh in n}var _h=_1;var A1=Function.prototype,P1=A1.toString;function O1(n){if(n!=null){try{return P1.call(n)}catch{}try{return n+""}catch{}}return""}var wo=O1;var C1=/[\\^$.*+?()[\]{}|]/g,T1=/^\[object .+?Constructor\]$/,M1=Function.prototype,I1=Object.prototype,N1=M1.toString,D1=I1.hasOwnProperty,E1=RegExp("^"+N1.call(D1).replace(C1,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function B1(n){if(!lr(n)||_h(n))return!1;var t=Nl(n)?E1:T1;return t.test(wo(n))}var Ah=B1;function L1(n,t){return n?.[t]}var Ph=L1;function R1(n,t){var e=Ph(n,t);return Ah(e)?e:void 0}var Kt=R1;var V1=Kt(ft,"WeakMap"),El=V1;var Oh=Object.create,z1=function(){function n(){}return function(t){if(!lr(t))return{};if(Oh)return Oh(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Ch=z1;function G1(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var Th=G1;function k1(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Mh=k1;var F1=800,j1=16,U1=Date.now;function H1(n){var t=0,e=0;return function(){var r=U1(),o=j1-(r-e);if(e=r,o>0){if(++t>=F1)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Ih=H1;function q1(n){return function(){return n}}var Nh=q1;var W1=function(){try{var n=Kt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),yi=W1;var $1=yi?function(n,t){return yi(n,"toString",{configurable:!0,enumerable:!1,value:Nh(t),writable:!0})}:Sh,Dh=$1;var Y1=Ih(Dh),Eh=Y1;function X1(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Bh=X1;var Q1=9007199254740991,K1=/^(?:0|[1-9]\d*)$/;function Z1(n,t){var e=typeof n;return t=t??Q1,!!t&&(e=="number"||e!="symbol"&&K1.test(n))&&n>-1&&n%1==0&&n<t}var gi=Z1;function J1(n,t,e){t=="__proto__"&&yi?yi(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Bl=J1;function ew(n,t){return n===t||n!==n&&t!==t}var xi=ew;var tw=Object.prototype,rw=tw.hasOwnProperty;function ow(n,t,e){var r=n[t];(!(rw.call(n,t)&&xi(r,e))||e===void 0&&!(t in n))&&Bl(n,t,e)}var bi=ow;function nw(n,t,e,r){var o=!e;e||(e={});for(var i=-1,a=t.length;++i<a;){var s=t[i],l=r?r(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?Bl(e,s,l):bi(e,s,l)}return e}var $r=nw;var Lh=Math.max;function iw(n,t,e){return t=Lh(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Lh(r.length-t,0),a=Array(i);++o<i;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),Th(n,this,s)}}var Rh=iw;var aw=9007199254740991;function sw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=aw}var vi=sw;function lw(n){return n!=null&&vi(n.length)&&!Nl(n)}var Ll=lw;var cw=Object.prototype;function uw(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||cw;return n===e}var Si=uw;function dw(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Vh=dw;var pw="[object Arguments]";function fw(n){return Et(n)&&sr(n)==pw}var ld=fw;var zh=Object.prototype,hw=zh.hasOwnProperty,mw=zh.propertyIsEnumerable,yw=ld(function(){return arguments}())?ld:function(n){return Et(n)&&hw.call(n,"callee")&&!mw.call(n,"callee")},wi=yw;function gw(){return!1}var Gh=gw;var jh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,kh=jh&&typeof module=="object"&&module&&!module.nodeType&&module,xw=kh&&kh.exports===jh,Fh=xw?ft.Buffer:void 0,bw=Fh?Fh.isBuffer:void 0,vw=bw||Gh,Bn=vw;var Sw="[object Arguments]",ww="[object Array]",_w="[object Boolean]",Aw="[object Date]",Pw="[object Error]",Ow="[object Function]",Cw="[object Map]",Tw="[object Number]",Mw="[object Object]",Iw="[object RegExp]",Nw="[object Set]",Dw="[object String]",Ew="[object WeakMap]",Bw="[object ArrayBuffer]",Lw="[object DataView]",Rw="[object Float32Array]",Vw="[object Float64Array]",zw="[object Int8Array]",Gw="[object Int16Array]",kw="[object Int32Array]",Fw="[object Uint8Array]",jw="[object Uint8ClampedArray]",Uw="[object Uint16Array]",Hw="[object Uint32Array]",Qe={};Qe[Rw]=Qe[Vw]=Qe[zw]=Qe[Gw]=Qe[kw]=Qe[Fw]=Qe[jw]=Qe[Uw]=Qe[Hw]=!0;Qe[Sw]=Qe[ww]=Qe[Bw]=Qe[_w]=Qe[Lw]=Qe[Aw]=Qe[Pw]=Qe[Ow]=Qe[Cw]=Qe[Tw]=Qe[Mw]=Qe[Iw]=Qe[Nw]=Qe[Dw]=Qe[Ew]=!1;function qw(n){return Et(n)&&vi(n.length)&&!!Qe[sr(n)]}var Uh=qw;function Ww(n){return function(t){return n(t)}}var _i=Ww;var Hh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,gs=Hh&&typeof module=="object"&&module&&!module.nodeType&&module,$w=gs&&gs.exports===Hh,cd=$w&&Ml.process,Yw=function(){try{var n=gs&&gs.require&&gs.require("util").types;return n||cd&&cd.binding&&cd.binding("util")}catch{}}(),_o=Yw;var qh=_o&&_o.isTypedArray,Xw=qh?_i(qh):Uh,Rl=Xw;var Qw=Object.prototype,Kw=Qw.hasOwnProperty;function Zw(n,t){var e=it(n),r=!e&&wi(n),o=!e&&!r&&Bn(n),i=!e&&!r&&!o&&Rl(n),a=e||r||o||i,s=a?Vh(n.length,String):[],l=s.length;for(var u in n)(t||Kw.call(n,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||gi(u,l)))&&s.push(u);return s}var Vl=Zw;function Jw(n,t){return function(e){return n(t(e))}}var zl=Jw;var e2=zl(Object.keys,Object),Wh=e2;var t2=Object.prototype,r2=t2.hasOwnProperty;function o2(n){if(!Si(n))return Wh(n);var t=[];for(var e in Object(n))r2.call(n,e)&&e!="constructor"&&t.push(e);return t}var $h=o2;function n2(n){return Ll(n)?Vl(n):$h(n)}var Ai=n2;function i2(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Yh=i2;var a2=Object.prototype,s2=a2.hasOwnProperty;function l2(n){if(!lr(n))return Yh(n);var t=Si(n),e=[];for(var r in n)r=="constructor"&&(t||!s2.call(n,r))||e.push(r);return e}var Xh=l2;function c2(n){return Ll(n)?Vl(n,!0):Xh(n)}var Pi=c2;var u2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,d2=/^\w*$/;function p2(n,t){if(it(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||mi(n)?!0:d2.test(n)||!u2.test(n)||t!=null&&n in Object(t)}var Qh=p2;var f2=Kt(Object,"create"),Ao=f2;function h2(){this.__data__=Ao?Ao(null):{},this.size=0}var Kh=h2;function m2(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Zh=m2;var y2="__lodash_hash_undefined__",g2=Object.prototype,x2=g2.hasOwnProperty;function b2(n){var t=this.__data__;if(Ao){var e=t[n];return e===y2?void 0:e}return x2.call(t,n)?t[n]:void 0}var Jh=b2;var v2=Object.prototype,S2=v2.hasOwnProperty;function w2(n){var t=this.__data__;return Ao?t[n]!==void 0:S2.call(t,n)}var em=w2;var _2="__lodash_hash_undefined__";function A2(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Ao&&t===void 0?_2:t,this}var tm=A2;function Oi(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])}}Oi.prototype.clear=Kh;Oi.prototype.delete=Zh;Oi.prototype.get=Jh;Oi.prototype.has=em;Oi.prototype.set=tm;var ud=Oi;function P2(){this.__data__=[],this.size=0}var rm=P2;function O2(n,t){for(var e=n.length;e--;)if(xi(n[e][0],t))return e;return-1}var Qo=O2;var C2=Array.prototype,T2=C2.splice;function M2(n){var t=this.__data__,e=Qo(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():T2.call(t,e,1),--this.size,!0}var om=M2;function I2(n){var t=this.__data__,e=Qo(t,n);return e<0?void 0:t[e][1]}var nm=I2;function N2(n){return Qo(this.__data__,n)>-1}var im=N2;function D2(n,t){var e=this.__data__,r=Qo(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var am=D2;function Ci(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Ci.prototype.clear=rm;Ci.prototype.delete=om;Ci.prototype.get=nm;Ci.prototype.has=im;Ci.prototype.set=am;var Ko=Ci;var E2=Kt(ft,"Map"),Zo=E2;function B2(){this.size=0,this.__data__={hash:new ud,map:new(Zo||Ko),string:new ud}}var sm=B2;function L2(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var lm=L2;function R2(n,t){var e=n.__data__;return lm(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Jo=R2;function V2(n){var t=Jo(this,n).delete(n);return this.size-=t?1:0,t}var cm=V2;function z2(n){return Jo(this,n).get(n)}var um=z2;function G2(n){return Jo(this,n).has(n)}var dm=G2;function k2(n,t){var e=Jo(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var pm=k2;function Ti(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Ti.prototype.clear=sm;Ti.prototype.delete=cm;Ti.prototype.get=um;Ti.prototype.has=dm;Ti.prototype.set=pm;var Ln=Ti;var F2="Expected a function";function dd(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(F2);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,r);return e.cache=i.set(o,a)||i,a};return e.cache=new(dd.Cache||Ln),e}dd.Cache=Ln;var fm=dd;var j2=500;function U2(n){var t=fm(n,function(r){return e.size===j2&&e.clear(),r}),e=t.cache;return t}var hm=U2;var H2=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,q2=/\\(\\)?/g,W2=hm(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(H2,function(e,r,o,i){t.push(o?i.replace(q2,"$1"):r||e)}),t}),mm=W2;function $2(n){return n==null?"":vh(n)}var ym=$2;function Y2(n,t){return it(n)?n:Qh(n,t)?[n]:mm(ym(n))}var mr=Y2;var X2=1/0;function Q2(n){if(typeof n=="string"||mi(n))return n;var t=n+"";return t=="0"&&1/n==-X2?"-0":t}var en=Q2;function K2(n,t){t=mr(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[en(t[e++])];return e&&e==r?n:void 0}var Gl=K2;function Z2(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Mi=Z2;var gm=At?At.isConcatSpreadable:void 0;function J2(n){return it(n)||wi(n)||!!(gm&&n&&n[gm])}var xm=J2;function bm(n,t,e,r,o){var i=-1,a=n.length;for(e||(e=xm),o||(o=[]);++i<a;){var s=n[i];t>0&&e(s)?t>1?bm(s,t-1,e,r,o):Mi(o,s):r||(o[o.length]=s)}return o}var vm=bm;function e_(n){var t=n==null?0:n.length;return t?vm(n,1):[]}var Sm=e_;function t_(n){return Eh(Rh(n,void 0,Sm),n+"")}var kl=t_;var r_=zl(Object.getPrototypeOf,Object),Ii=r_;var o_="[object Object]",n_=Function.prototype,i_=Object.prototype,wm=n_.toString,a_=i_.hasOwnProperty,s_=wm.call(Object);function l_(n){if(!Et(n)||sr(n)!=o_)return!1;var t=Ii(n);if(t===null)return!0;var e=a_.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&wm.call(e)==s_}var _m=l_;function c_(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var Am=c_;function u_(){this.__data__=new Ko,this.size=0}var Pm=u_;function d_(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Om=d_;function p_(n){return this.__data__.get(n)}var Cm=p_;function f_(n){return this.__data__.has(n)}var Tm=f_;var h_=200;function m_(n,t){var e=this.__data__;if(e instanceof Ko){var r=e.__data__;if(!Zo||r.length<h_-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Ln(r)}return e.set(n,t),this.size=e.size,this}var Mm=m_;function Ni(n){var t=this.__data__=new Ko(n);this.size=t.size}Ni.prototype.clear=Pm;Ni.prototype.delete=Om;Ni.prototype.get=Cm;Ni.prototype.has=Tm;Ni.prototype.set=Mm;var Di=Ni;function y_(n,t){return n&&$r(t,Ai(t),n)}var Im=y_;function g_(n,t){return n&&$r(t,Pi(t),n)}var Nm=g_;var Lm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Dm=Lm&&typeof module=="object"&&module&&!module.nodeType&&module,x_=Dm&&Dm.exports===Lm,Em=x_?ft.Buffer:void 0,Bm=Em?Em.allocUnsafe:void 0;function b_(n,t){if(t)return n.slice();var e=n.length,r=Bm?Bm(e):new n.constructor(e);return n.copy(r),r}var Rm=b_;function v_(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var a=n[e];t(a,e,n)&&(i[o++]=a)}return i}var Vm=v_;function S_(){return[]}var Fl=S_;var w_=Object.prototype,__=w_.propertyIsEnumerable,zm=Object.getOwnPropertySymbols,A_=zm?function(n){return n==null?[]:(n=Object(n),Vm(zm(n),function(t){return __.call(n,t)}))}:Fl,Ei=A_;function P_(n,t){return $r(n,Ei(n),t)}var Gm=P_;var O_=Object.getOwnPropertySymbols,C_=O_?function(n){for(var t=[];n;)Mi(t,Ei(n)),n=Ii(n);return t}:Fl,jl=C_;function T_(n,t){return $r(n,jl(n),t)}var km=T_;function M_(n,t,e){var r=t(n);return it(n)?r:Mi(r,e(n))}var Ul=M_;function I_(n){return Ul(n,Ai,Ei)}var xs=I_;function N_(n){return Ul(n,Pi,jl)}var Hl=N_;var D_=Kt(ft,"DataView"),ql=D_;var E_=Kt(ft,"Promise"),Wl=E_;var B_=Kt(ft,"Set"),$l=B_;var Fm="[object Map]",L_="[object Object]",jm="[object Promise]",Um="[object Set]",Hm="[object WeakMap]",qm="[object DataView]",R_=wo(ql),V_=wo(Zo),z_=wo(Wl),G_=wo($l),k_=wo(El),Rn=sr;(ql&&Rn(new ql(new ArrayBuffer(1)))!=qm||Zo&&Rn(new Zo)!=Fm||Wl&&Rn(Wl.resolve())!=jm||$l&&Rn(new $l)!=Um||El&&Rn(new El)!=Hm)&&(Rn=function(n){var t=sr(n),e=t==L_?n.constructor:void 0,r=e?wo(e):"";if(r)switch(r){case R_:return qm;case V_:return Fm;case z_:return jm;case G_:return Um;case k_:return Hm}return t});var Po=Rn;var F_=Object.prototype,j_=F_.hasOwnProperty;function U_(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&j_.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Wm=U_;var H_=ft.Uint8Array,Bi=H_;function q_(n){var t=new n.constructor(n.byteLength);return new Bi(t).set(new Bi(n)),t}var Li=q_;function W_(n,t){var e=t?Li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $m=W_;var $_=/\w*$/;function Y_(n){var t=new n.constructor(n.source,$_.exec(n));return t.lastIndex=n.lastIndex,t}var Ym=Y_;var Xm=At?At.prototype:void 0,Qm=Xm?Xm.valueOf:void 0;function X_(n){return Qm?Object(Qm.call(n)):{}}var Km=X_;function Q_(n,t){var e=t?Li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Zm=Q_;var K_="[object Boolean]",Z_="[object Date]",J_="[object Map]",eA="[object Number]",tA="[object RegExp]",rA="[object Set]",oA="[object String]",nA="[object Symbol]",iA="[object ArrayBuffer]",aA="[object DataView]",sA="[object Float32Array]",lA="[object Float64Array]",cA="[object Int8Array]",uA="[object Int16Array]",dA="[object Int32Array]",pA="[object Uint8Array]",fA="[object Uint8ClampedArray]",hA="[object Uint16Array]",mA="[object Uint32Array]";function yA(n,t,e){var r=n.constructor;switch(t){case iA:return Li(n);case K_:case Z_:return new r(+n);case aA:return $m(n,e);case sA:case lA:case cA:case uA:case dA:case pA:case fA:case hA:case mA:return Zm(n,e);case J_:return new r;case eA:case oA:return new r(n);case tA:return Ym(n);case rA:return new r;case nA:return Km(n)}}var Jm=yA;function gA(n){return typeof n.constructor=="function"&&!Si(n)?Ch(Ii(n)):{}}var ey=gA;var xA="[object Map]";function bA(n){return Et(n)&&Po(n)==xA}var ty=bA;var ry=_o&&_o.isMap,vA=ry?_i(ry):ty,oy=vA;var SA="[object Set]";function wA(n){return Et(n)&&Po(n)==SA}var ny=wA;var iy=_o&&_o.isSet,_A=iy?_i(iy):ny,ay=_A;var AA=1,PA=2,OA=4,sy="[object Arguments]",CA="[object Array]",TA="[object Boolean]",MA="[object Date]",IA="[object Error]",ly="[object Function]",NA="[object GeneratorFunction]",DA="[object Map]",EA="[object Number]",cy="[object Object]",BA="[object RegExp]",LA="[object Set]",RA="[object String]",VA="[object Symbol]",zA="[object WeakMap]",GA="[object ArrayBuffer]",kA="[object DataView]",FA="[object Float32Array]",jA="[object Float64Array]",UA="[object Int8Array]",HA="[object Int16Array]",qA="[object Int32Array]",WA="[object Uint8Array]",$A="[object Uint8ClampedArray]",YA="[object Uint16Array]",XA="[object Uint32Array]",Ye={};Ye[sy]=Ye[CA]=Ye[GA]=Ye[kA]=Ye[TA]=Ye[MA]=Ye[FA]=Ye[jA]=Ye[UA]=Ye[HA]=Ye[qA]=Ye[DA]=Ye[EA]=Ye[cy]=Ye[BA]=Ye[LA]=Ye[RA]=Ye[VA]=Ye[WA]=Ye[$A]=Ye[YA]=Ye[XA]=!0;Ye[IA]=Ye[ly]=Ye[zA]=!1;function Yl(n,t,e,r,o,i){var a,s=t&AA,l=t&PA,u=t&OA;if(e&&(a=o?e(n,r,o,i):e(n)),a!==void 0)return a;if(!lr(n))return n;var c=it(n);if(c){if(a=Wm(n),!s)return Mh(n,a)}else{var d=Po(n),p=d==ly||d==NA;if(Bn(n))return Rm(n,s);if(d==cy||d==sy||p&&!o){if(a=l||p?{}:ey(n),!s)return l?km(n,Nm(a,n)):Gm(n,Im(a,n))}else{if(!Ye[d])return o?n:{};a=Jm(n,d,s)}}i||(i=new Di);var f=i.get(n);if(f)return f;i.set(n,a),ay(n)?n.forEach(function(y){a.add(Yl(y,t,e,y,n,i))}):oy(n)&&n.forEach(function(y,g){a.set(g,Yl(y,t,e,g,n,i))});var h=u?l?Hl:xs:l?Pi:Ai,m=c?void 0:h(n);return Bh(m||n,function(y,g){m&&(g=y,y=n[g]),bi(a,g,Yl(y,t,e,g,n,i))}),a}var Xl=Yl;var QA=1,KA=4;function ZA(n){return Xl(n,QA|KA)}var Oo=ZA;var JA="__lodash_hash_undefined__";function eP(n){return this.__data__.set(n,JA),this}var uy=eP;function tP(n){return this.__data__.has(n)}var dy=tP;function Ql(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new Ln;++t<e;)this.add(n[t])}Ql.prototype.add=Ql.prototype.push=uy;Ql.prototype.has=dy;var py=Ql;function rP(n,t){for(var e=-1,r=n==null?0:n.length;++e<r;)if(t(n[e],e,n))return!0;return!1}var fy=rP;function oP(n,t){return n.has(t)}var hy=oP;var nP=1,iP=2;function aP(n,t,e,r,o,i){var a=e&nP,s=n.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var u=i.get(n),c=i.get(t);if(u&&c)return u==t&&c==n;var d=-1,p=!0,f=e&iP?new py:void 0;for(i.set(n,t),i.set(t,n);++d<s;){var h=n[d],m=t[d];if(r)var y=a?r(m,h,d,t,n,i):r(h,m,d,n,t,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!fy(t,function(g,b){if(!hy(f,b)&&(h===g||o(h,g,e,r,i)))return f.push(b)})){p=!1;break}}else if(!(h===m||o(h,m,e,r,i))){p=!1;break}}return i.delete(n),i.delete(t),p}var Kl=aP;function sP(n){var t=-1,e=Array(n.size);return n.forEach(function(r,o){e[++t]=[o,r]}),e}var my=sP;function lP(n){var t=-1,e=Array(n.size);return n.forEach(function(r){e[++t]=r}),e}var yy=lP;var cP=1,uP=2,dP="[object Boolean]",pP="[object Date]",fP="[object Error]",hP="[object Map]",mP="[object Number]",yP="[object RegExp]",gP="[object Set]",xP="[object String]",bP="[object Symbol]",vP="[object ArrayBuffer]",SP="[object DataView]",gy=At?At.prototype:void 0,pd=gy?gy.valueOf:void 0;function wP(n,t,e,r,o,i,a){switch(e){case SP:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case vP:return!(n.byteLength!=t.byteLength||!i(new Bi(n),new Bi(t)));case dP:case pP:case mP:return xi(+n,+t);case fP:return n.name==t.name&&n.message==t.message;case yP:case xP:return n==t+"";case hP:var s=my;case gP:var l=r&cP;if(s||(s=yy),n.size!=t.size&&!l)return!1;var u=a.get(n);if(u)return u==t;r|=uP,a.set(n,t);var c=Kl(s(n),s(t),r,o,i,a);return a.delete(n),c;case bP:if(pd)return pd.call(n)==pd.call(t)}return!1}var xy=wP;var _P=1,AP=Object.prototype,PP=AP.hasOwnProperty;function OP(n,t,e,r,o,i){var a=e&_P,s=xs(n),l=s.length,u=xs(t),c=u.length;if(l!=c&&!a)return!1;for(var d=l;d--;){var p=s[d];if(!(a?p in t:PP.call(t,p)))return!1}var f=i.get(n),h=i.get(t);if(f&&h)return f==t&&h==n;var m=!0;i.set(n,t),i.set(t,n);for(var y=a;++d<l;){p=s[d];var g=n[p],b=t[p];if(r)var S=a?r(b,g,p,t,n,i):r(g,b,p,n,t,i);if(!(S===void 0?g===b||o(g,b,e,r,i):S)){m=!1;break}y||(y=p=="constructor")}if(m&&!y){var w=n.constructor,v=t.constructor;w!=v&&"constructor"in n&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof v=="function"&&v instanceof v)&&(m=!1)}return i.delete(n),i.delete(t),m}var by=OP;var CP=1,vy="[object Arguments]",Sy="[object Array]",Zl="[object Object]",TP=Object.prototype,wy=TP.hasOwnProperty;function MP(n,t,e,r,o,i){var a=it(n),s=it(t),l=a?Sy:Po(n),u=s?Sy:Po(t);l=l==vy?Zl:l,u=u==vy?Zl:u;var c=l==Zl,d=u==Zl,p=l==u;if(p&&Bn(n)){if(!Bn(t))return!1;a=!0,c=!1}if(p&&!c)return i||(i=new Di),a||Rl(n)?Kl(n,t,e,r,o,i):xy(n,t,l,e,r,o,i);if(!(e&CP)){var f=c&&wy.call(n,"__wrapped__"),h=d&&wy.call(t,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?t.value():t;return i||(i=new Di),o(m,y,e,r,i)}}return p?(i||(i=new Di),by(n,t,e,r,o,i)):!1}var _y=MP;function Ay(n,t,e,r,o){return n===t?!0:n==null||t==null||!Et(n)&&!Et(t)?n!==n&&t!==t:_y(n,t,e,r,Ay,o)}var Py=Ay;function IP(n,t){return n!=null&&t in Object(n)}var Oy=IP;function NP(n,t,e){t=mr(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var a=en(t[r]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&vi(o)&&gi(a,o)&&(it(n)||wi(n)))}var Cy=NP;function DP(n,t){return n!=null&&Cy(n,t,Oy)}var Ty=DP;function EP(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var My=EP;function BP(n,t){return t.length<2?n:Gl(n,Am(t,0,-1))}var Iy=BP;function LP(n,t){return Py(n,t)}var fd=LP;function RP(n,t){return t=mr(t,n),n=Iy(n,t),n==null||delete n[en(My(t))]}var Ny=RP;function VP(n){return _m(n)?void 0:n}var Dy=VP;var zP=1,GP=2,kP=4,FP=kl(function(n,t){var e={};if(n==null)return e;var r=!1;t=Il(t,function(i){return i=mr(i,n),r||(r=i.length>1),i}),$r(n,Hl(n),e),r&&(e=Xl(e,zP|GP|kP,Dy));for(var o=t.length;o--;)Ny(e,t[o]);return e}),Ri=FP;function jP(n,t,e,r){if(!lr(n))return n;t=mr(t,n);for(var o=-1,i=t.length,a=i-1,s=n;s!=null&&++o<i;){var l=en(t[o]),u=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var c=s[l];u=r?r(c,l,s):void 0,u===void 0&&(u=lr(c)?c:gi(t[o+1])?[]:{})}bi(s,l,u),s=s[l]}return n}var Ey=jP;function UP(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],s=Gl(n,a);e(s,a)&&Ey(i,mr(a,n),s)}return i}var By=UP;function HP(n,t){return By(n,t,function(e,r){return Ty(n,r)})}var Ly=HP;var qP=kl(function(n,t){return n==null?{}:Ly(n,t)}),Mr=qP;var ce=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,ce.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:a}=t,s={...e,[i]:a};return Object.setPrototypeOf(s,ce.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,ce.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function bs(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"&&bs(r)}return Object.freeze(n)}function Ry(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var Vi=class extends Error{};function Jl(n){let t={...n};return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Yr(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(a)}return r}function zi(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Vy(){return typeof process<"u"}function zy(n,t){for(let e of n)t(e.id,e.data)!==!0&&zy(e.children,t)}function Gy(n,t){if(t(n.id,n.data)!==!0)for(let e of n.children)Gy(e,t)}var He=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,He.prototype)}deepFreeze(){let e=0;for(;e<this.length;)bs(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Gy(o,r)}}traverse(e){zy(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(i,a)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(c=>c.id===l);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:s}}Object.setPrototypeOf(i,He.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,u=this.childrenArray(l),c={fi:o,id:i,data:a,children:s};return u=[...u,c],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(c),{data:this.modifyArrayBy(l,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(u=>u.id===r);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new Vi("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),u=l.findIndex(f=>f.id===i);l=[...l];let c=l.splice(u,1)[0],d=this.modifyArrayBy(a,l);a=r,l=d.childrenArray(a);let p=c.fi;return c={...c,fi:o},l=[...l,c],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(c),d=d.modifyArrayBy(a,l),{data:d,actual:e,reverse:{type:9,parent:s,fi:p,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Ry(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),a=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return Yr(0,o,o);{let a=i[0].fi;return Yr(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return Yr(l,l+o,o)}else return Yr(a.fi,s.fi,o)}}};var Gi;(t=>{function n(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let u=parseInt(l);if(isNaN(u))throw new Error("wrong index");i[l]=a[u],a[u]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let u=o[l];u===void 0?delete a[l]:a[l]=u,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(Gi||(Gi={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)bs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let r=e;return Vy()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:i}=e,a=this,s={fi:r,id:o,data:i};return a=[...a,s],a.sort((u,c)=>u.fi-c.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(l=>l.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let a=i.findIndex(c=>c.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:r};return i[a]=l,i.sort((c,d)=>c.fi-d.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Yr(0,r,r);{let i=o[0].fi;return Yr(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Yr(s,s+r,r)}else return Yr(i.fi,a.fi,r)}}};function ki(n){return n&&typeof n=="object"&&n instanceof qe}var qe=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!ki(r))return null;o+=1}r=r?Jl(r):new qe;for(let[l,u]of Object.entries(t.props)){let c=r[l];i[l]=c,u===void 0?delete r[l]:r[l]=u}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=Jl(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let u=Jl(l);u[t.path[o-1]]=r,r=u}else{let u=new qe;u[t.path[o-1]]=r,r=u}}o-=1}let a=Object.setPrototypeOf(r,qe.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},Xr;(r=>{function n(o,i){return vs(o,i)??o}r.apply=n;function t(o,i){return md(o,i)}r.merge=t;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=Ze.zoomOnce(l,s[a]),l===void 0)return i;if(!ki(l))return;a+=1}if(l===void 0)return i;if(!!ki(l))if(i.type===0){let u={...i.props};for(let c of Object.keys(l))delete u[c];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=hd([i],l);return u?(console.log(u),u):i}else return i}r.filterOp=e})(Xr||(Xr={}));function hd(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=vs(o.data,t[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=hd(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return r}function WP(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=vs(o.data,t[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function vs(n,t){if(!ki(t))return t;if(n instanceof He){let e=hd(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return WP(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let a=vs(o,t[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else{if(n instanceof qe)return md(n,t);if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let a=vs(i,t[o]);r=r||a!==void 0,a===void 0&&(a=i),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function md(n,t){if(n===void 0)return t;if(t===void 0)return n;if(!ki(t))return t;if(!ki(n))return Xr.apply(n,t);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new qe;for(let o of e){let i=md(n===void 0?void 0:n[o],t===void 0?void 0:t[o]);r[o]=i}return r}function ky(n,t){let e={cur:[],result:[],len:0};return n=Ss(n,t,e)??n,[n,e.result]}function ec(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function tc(n){n&&(n.len-=1)}function $P(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Fy(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Ss(i.data,t,ec(e,a));tc(e),r=r||l!==void 0,l===void 0&&(l=i.data);let u=Fy(i.children,t,e);return u!==void 0?r=!0:u=i.children,{...i,id:a,data:l,children:u}});if(r)return o}function YP(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Ss(i.data,t,ec(e,a));return tc(e),r=r||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Ss(n,t,e){if(n instanceof He){let r=Fy(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof he)return YP(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,a)=>{let s=Ss(i,t,ec(e,a));return tc(e),r=r||s!==void 0,s===void 0&&(s=i),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!zi(n)){let r={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=t[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=Ss(a,t,ec(e,i));tc(e),o=o||l!==void 0,l===void 0&&(l=a),r[i]=l}else r[i]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(typeof n=="string"){let r=t[n];return r!==void 0&&$P(e),r}else return}}var Fi;(t=>{function n(e,r){let o=Ze.zoom(r,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}t.replaceProps=n})(Fi||(Fi={}));var Je;(s=>{function n(l,u){return{...l,path:l.path.slice(u)}}s.drop=n;function t(l,u){return e(l,u)?.data??l}s.applySimple=t;function e(l,u){let c=u.path;for(var d=[];;){let p;if(l instanceof qe&&u.type===0&&(p=l.runOp({...u,path:c.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===c.length&&(l instanceof He||l instanceof he||l instanceof ce?p=l.runOp(u):p=Gi.runOp(l,u)),p!==void 0)if(p!==null){let m=p.data;for(let y=d.length-1;y>=0;y--){let g=c[y],b=d[y];if(b instanceof He){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof he){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof ce){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof qe){let S={...b,[g]:m};m=Object.setPrototypeOf(S,qe.prototype)}else if(typeof b=="object")if(Array.isArray(b)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let S=m;m=[...b],m[g]=S}else m={...b,[g]:m};else return null}return{data:m,actual:{...p.actual,path:c},reverse:{...p.reverse,path:c}}}else return null;let f=c[d.length],h;if(l instanceof He){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof he){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)d.push(l),l=h;else return null}}s.apply=e;function r(l,u){for(let c=0;c<l.length&&c<u.length;c++)if(l[c]!==u[c])return!0;return!1}s.pathDisjoint=r;function o(l,u){if(l.length!==u.length)return!1;for(let c=0;c<l.length;c++)if(l[c]!==u[c])return!1;return!0}s.pathEq=o;function i(l,u){return r(l.path,u.path)}s.commutative=i;function a(l,u){return l.type===0&&u.type===0&&o(l.path,u.path)?Object.keys(l.props).every(c=>u.props[c]!==void 0):!1}s.subsumed=a})(Je||(Je={}));var ws;(l=>{function n(){return[]}l.empty=n;function t(u,c){let d=[];for(let p of u){let[f,...h]=p.path;f===c&&d.push({...p,path:h})}return d}l.removePrefix=t;function e(u,c){return u.map(d=>({...d,path:[c,...d.path]}))}l.addPrefix=e;function r(u,c){return[...u,...c]}l.concat=r;function o(u,c){return[...u.filter(p=>!c.some(f=>Je.subsumed(p,f))),...c]}l.compress=o;function i(u,c){return u.every(d=>c.every(p=>Je.commutative(d,p)))}l.commutative=i;function a(u,c){for(let d of c){let p=s(u,d);p!==null&&(u=p.data)}return u}l.applyAll=a;function s(u,c){var d=u;let p=[],f=[];for(let h of c)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,g;if(h.type===3?(m=Ze.zoom(d,[...h.path,h.id]),g=Je.apply(d,{...h,type:2})):(m=Ze.zoom(d,[...h.path,h.id,"value"]),g=Je.apply(d,h)),g!==null){d=g.data;let[b,S]=ky(d,{[h.id]:m});d=b;for(let w=0;w<S.length;w++){let v=S[w],_=v.pop();if(typeof _=="number"){let A=[_];for(let T=w+1;T<S.length;T++){let C=S[T],P=C[C.length-1];if(typeof P=="number"&&Ze.equal(v,C.slice(0,C.length-1)))A.push(P),S.splice(T,1);else break}let x=Ze.zoom(d,v);y=x.map((T,C)=>A.includes(C)?h.id:T),m=x,_=v.pop()}else{if(_==="alphaOverride"||_==="alpha"){m/=100;let A=m,x=Ze.zoom(d,v.slice(0,v.length-2)),T=x.layers.map(C=>C.id===v[v.length-1]?{...C,data:{...C.data,[_]:A}}:C);Object.setPrototypeOf(T,Object.getPrototypeOf(x.layers)),x.layers=T}y=h.id}p.push({type:0,path:v,props:{[_]:m}}),f.push({type:0,path:v,props:{[_]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let m=Je.apply(d,h);m!==null&&(p.push(m.actual),d=m.data,f.push(m.reverse))}}catch(m){if(m instanceof Vi)return null;throw m}return{data:d,actual:p,reverse:f.reverse()}}l.apply=s})(ws||(ws={}));var jy=Symbol(),XP=Symbol(),oc=Symbol(),Vn=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof rc);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[oc];r&&r(),delete this._children[t]}}}},gd=class extends Vn{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,Gi.runOp(this._current,t),t.path)}},xd=class extends Vn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,ce.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Uy={get(n,t){if(t===oc)return()=>{n._parent=null};if(t===jy)return n._current;if(t===XP)return n;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],a=nc(n,t,i);return a!==i?(r===void 0&&(r={},n._children=r),r[t]=a,a):i},has(n,t){return t in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},QP={...Uy,set(n,t,e){let r={type:0,props:{[t]:et(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},KP={...Uy,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},ji=class extends Vn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=nc(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Ui=class extends Vn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id,i=this._current[r].fi;t(this.data(this._current[r].id),o,i)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=nc(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function yd(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&Ze.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var rc=class extends Vn{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){yd(this.ts,e,t),yd(this.actual,r,t),yd(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function nc(n,t,e){return e instanceof He?new ji(n,t,e):e instanceof he?new Ui(n,t,e):e instanceof ce?new Proxy(new xd(n,t,e),KP):e!==null&&typeof e=="object"?zi(e)?e:new Proxy(new gd(n,t,e),QP):e}function bd(n){let t=new rc(n);return[nc(t,"",n),t]}function tn(n,t){let[e,r]=bd(n);return t(e),r.result()}function et(n){return n instanceof ji||n instanceof Ui?n._current:n!==null&&typeof n=="object"?n[jy]:n}var Ze;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function t(i,a,s){let l=r(s,i);if(l!==void 0&&typeof l=="object"&&l!==null){let u={...a};return Object.keys(l).forEach(c=>{delete u[c]}),u}else return a}o.removeOverridden=t;function e(i,a){if((i instanceof He||i instanceof ji)&&typeof a=="string")return i.data(a);if((i instanceof he||i instanceof Ui)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function r(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=r})(Ze||(Ze={}));function Hy(n,t){let e=[];if(t.length===n.length)for(var r=0;r<n.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}function Oe(n,t){let e=[];if(t.length<=n.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}var ic=class{},_s=class extends ic{constructor(e){super();this.id=e}},As=class extends ic{constructor(e){super();this.data=e}};var Sd;try{Sd=new TextDecoder}catch{}var re,on,E=0;var Zy=[],wd=Zy,_d=0,Zt={},Ve,rn,yr=0,Qr=0,cr,Co,Ut=[],Ge,qy={useRecords:!1,mapsAsObjects:!0},Ps=class{},Pd=new Ps;Pd.name="MessagePack 0xC1";var Hi=!1,Kr=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(re)return og(()=>(sc(),this?this.unpack(t,e):Kr.prototype.unpack.call(qy,t,e)));on=e>-1?e:t.length,E=0,_d=0,Qr=0,rn=null,wd=Zy,cr=null,re=t;try{Ge=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw re=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Kr){if(Zt=this,this.structures)return Ve=this.structures,ac();(!Ve||Ve.length>0)&&(Ve=[])}else Zt=qy,(!Ve||Ve.length>0)&&(Ve=[]);return ac()}unpackMultiple(t,e){let r,o=0;try{Hi=!0;let i=t.length,a=this?this.unpack(t,i):uc.unpack(t,i);if(e){for(e(a);E<i;)if(o=E,e(ac())===!1)return}else{for(r=[a];E<i;)o=E,r.push(ac());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Hi=!1,sc()}}_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 ac(){try{if(!Zt.trusted&&!Hi){let t=Ve.sharedLength||0;t<Ve.length&&(Ve.length=t)}let n=at();if(E==on)Ve.restoreStructures&&Wy(),Ve=null,re=null,Co&&(Co=null);else if(E>on){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Hi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ve.restoreStructures&&Wy(),sc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Wy(){for(let n in Ve.restoreStructures)Ve[n]=Ve.restoreStructures[n];Ve.restoreStructures=null}function at(){let n=re[E++];if(n<160)if(n<128){if(n<64)return n;{let t=Ve[n&63]||Zt.getStructures&&Jy()[n&63];return t?(t.read||(t.read=Od(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,Zt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[tg()]=at();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(at(),at());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=at();return t}else if(n<192){let t=n-160;if(Qr>=E)return rn.slice(E-yr,(E+=t)-yr);if(Qr==0&&on<140){let e=t<16?Cd(t):eg(t);if(e!=null)return e}return Ad(t)}else{let t;switch(n){case 192:return null;case 193:return cr?(t=at(),t>0?cr[1].slice(cr.position1,cr.position1+=t):cr[0].slice(cr.position0,cr.position0-=t)):Pd;case 194:return!1;case 195:return!0;case 196:return vd(re[E++]);case 197:return t=Ge.getUint16(E),E+=2,vd(t);case 198:return t=Ge.getUint32(E),E+=4,vd(t);case 199:return zn(re[E++]);case 200:return t=Ge.getUint16(E),E+=2,zn(t);case 201:return t=Ge.getUint32(E),E+=4,zn(t);case 202:if(t=Ge.getFloat32(E),Zt.useFloat32>2){let e=cc[(re[E]&127)<<1|re[E+1]>>7];return E+=4,(e*t+(t>0?.5:-.5)>>0)/e}return E+=4,t;case 203:return t=Ge.getFloat64(E),E+=8,t;case 204:return re[E++];case 205:return t=Ge.getUint16(E),E+=2,t;case 206:return t=Ge.getUint32(E),E+=4,t;case 207:return Zt.int64AsNumber?(t=Ge.getUint32(E)*4294967296,t+=Ge.getUint32(E+4)):t=Ge.getBigUint64(E),E+=8,t;case 208:return Ge.getInt8(E++);case 209:return t=Ge.getInt16(E),E+=2,t;case 210:return t=Ge.getInt32(E),E+=4,t;case 211:return Zt.int64AsNumber?(t=Ge.getInt32(E)*4294967296,t+=Ge.getUint32(E+4)):t=Ge.getBigInt64(E),E+=8,t;case 212:if(t=re[E++],t==114)return Ky(re[E++]&63);{let e=Ut[t];if(e)return e.read?(E++,e.read(at())):e.noBuffer?(E++,e()):e(re.subarray(E,++E));throw new Error("Unknown extension "+t)}case 213:return t=re[E],t==114?(E++,Ky(re[E++]&63,re[E++])):zn(2);case 214:return zn(4);case 215:return zn(8);case 216:return zn(16);case 217:return t=re[E++],Qr>=E?rn.slice(E-yr,(E+=t)-yr):JP(t);case 218:return t=Ge.getUint16(E),E+=2,Qr>=E?rn.slice(E-yr,(E+=t)-yr):eO(t);case 219:return t=Ge.getUint32(E),E+=4,Qr>=E?rn.slice(E-yr,(E+=t)-yr):tO(t);case 220:return t=Ge.getUint16(E),E+=2,Yy(t);case 221:return t=Ge.getUint32(E),E+=4,Yy(t);case 222:return t=Ge.getUint16(E),E+=2,Xy(t);case 223:return t=Ge.getUint32(E),E+=4,Xy(t);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var ZP=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Od(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>ZP.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(at);return n.highByte===0&&(n.read=$y(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let a=n[o];r[a]=at()}return r}return e.count=0,n.highByte===0?$y(t,e):e}var $y=(n,t)=>function(){let e=re[E++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=Ve[r]||Jy()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Od(o,n)),o.read()};function Jy(){let n=og(()=>(re=null,Zt.getStructures()));return Ve=Zt._mergeStructures(n,Ve)}var Ad=lc,JP=lc,eO=lc,tO=lc;function lc(n){let t;if(n<16&&(t=Cd(n)))return t;if(n>64&&Sd)return Sd.decode(re.subarray(E,E+=n));let e=E+n,r=[];for(t="";E<e;){let o=re[E++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=re[E++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=re[E++]&63,a=re[E++]&63;r.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=re[E++]&63,a=re[E++]&63,s=re[E++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Pt.apply(String,r),r.length=0)}return r.length>0&&(t+=Pt.apply(String,r)),t}function Yy(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=at();return t}function Xy(n){if(Zt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[tg()]=at();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(at(),at());return t}}var Pt=String.fromCharCode;function eg(n){let t=E,e=new Array(n);for(let r=0;r<n;r++){let o=re[E++];if((o&128)>0){E=t;return}e[r]=o}return Pt.apply(String,e)}function Cd(n){if(n<4)if(n<2){if(n===0)return"";{let t=re[E++];if((t&128)>1){E-=1;return}return Pt(t)}}else{let t=re[E++],e=re[E++];if((t&128)>0||(e&128)>0){E-=2;return}if(n<3)return Pt(t,e);let r=re[E++];if((r&128)>0){E-=3;return}return Pt(t,e,r)}else{let t=re[E++],e=re[E++],r=re[E++],o=re[E++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){E-=4;return}if(n<6){if(n===4)return Pt(t,e,r,o);{let i=re[E++];if((i&128)>0){E-=5;return}return Pt(t,e,r,o,i)}}else if(n<8){let i=re[E++],a=re[E++];if((i&128)>0||(a&128)>0){E-=6;return}if(n<7)return Pt(t,e,r,o,i,a);let s=re[E++];if((s&128)>0){E-=7;return}return Pt(t,e,r,o,i,a,s)}else{let i=re[E++],a=re[E++],s=re[E++],l=re[E++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){E-=8;return}if(n<10){if(n===8)return Pt(t,e,r,o,i,a,s,l);{let u=re[E++];if((u&128)>0){E-=9;return}return Pt(t,e,r,o,i,a,s,l,u)}}else if(n<12){let u=re[E++],c=re[E++];if((u&128)>0||(c&128)>0){E-=10;return}if(n<11)return Pt(t,e,r,o,i,a,s,l,u,c);let d=re[E++];if((d&128)>0){E-=11;return}return Pt(t,e,r,o,i,a,s,l,u,c,d)}else{let u=re[E++],c=re[E++],d=re[E++],p=re[E++];if((u&128)>0||(c&128)>0||(d&128)>0||(p&128)>0){E-=12;return}if(n<14){if(n===12)return Pt(t,e,r,o,i,a,s,l,u,c,d,p);{let f=re[E++];if((f&128)>0){E-=13;return}return Pt(t,e,r,o,i,a,s,l,u,c,d,p,f)}}else{let f=re[E++],h=re[E++];if((f&128)>0||(h&128)>0){E-=14;return}if(n<15)return Pt(t,e,r,o,i,a,s,l,u,c,d,p,f,h);let m=re[E++];if((m&128)>0){E-=15;return}return Pt(t,e,r,o,i,a,s,l,u,c,d,p,f,h,m)}}}}}function vd(n){return Zt.copyBuffers?Uint8Array.prototype.slice.call(re,E,E+=n):re.subarray(E,E+=n)}function zn(n){let t=re[E++];if(Ut[t])return Ut[t](re.subarray(E,E+=n));throw new Error("Unknown extension type "+t)}var Qy=new Array(4096);function tg(){let n=re[E++];if(n>=160&&n<192){if(n=n-160,Qr>=E)return rn.slice(E-yr,(E+=n)-yr);if(!(Qr==0&&on<180))return Ad(n)}else return E--,at();let t=(n<<5^(n>1?Ge.getUint16(E):n>0?re[E]:0))&4095,e=Qy[t],r=E,o=E+n-3,i,a=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ge.getUint32(r),i!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=re[r++],i!=e[a++]){r=1879048192;break}if(r===o)return E=r,e.string;o-=3,r=E}for(e=[],Qy[t]=e,e.bytes=n;r<o;)i=Ge.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=re[r++],e.push(i);let s=n<16?Cd(n):eg(n);return s!=null?e.string=s:e.string=Ad(n)}var Ky=(n,t)=>{var e=at();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=Ve[n];return o&&o.isShared&&((Ve.restoreStructures||(Ve.restoreStructures=[]))[n]=o),Ve[n]=e,e.read=Od(e,r),e.read()},rg=typeof self=="object"?self:global;Ut[0]=()=>{};Ut[0].noBuffer=!0;Ut[101]=()=>{let n=at();return(rg[n[0]]||Error)(n[1])};Ut[105]=n=>{let t=Ge.getUint32(E-4);Co||(Co=new Map);let e=re[E],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Co.set(t,o);let i=at();return o.used?Object.assign(r,i):(o.target=i,i)};Ut[112]=n=>{let t=Ge.getUint32(E-4),e=Co.get(t);return e.used=!0,e.target};Ut[115]=()=>new Set(at());var Td=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Ut[116]=n=>{let t=n[0],e=Td[t];if(!e)throw new Error("Could not find typed array for code "+t);return new rg[e](Uint8Array.prototype.slice.call(n,1).buffer)};Ut[120]=()=>{let n=at();return new RegExp(n[0],n[1])};Ut[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=E;E+=t-4,cr=[at(),at()],cr.position0=0,cr.position1=0;let r=E;E=e;try{return at()}finally{E=r}};Ut[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function og(n){let t=on,e=E,r=_d,o=yr,i=Qr,a=rn,s=wd,l=Co,u=cr,c=new Uint8Array(re.slice(0,on)),d=Ve,p=Ve.slice(0,Ve.length),f=Zt,h=Hi,m=n();return on=t,E=e,_d=r,yr=o,Qr=i,rn=a,wd=s,Co=l,cr=u,re=c,Hi=h,Ve=d,Ve.splice(0,Ve.length,...p),Zt=f,Ge=new DataView(re.buffer,re.byteOffset,re.byteLength),m}function sc(){re=null,Co=null,Ve=null}function ng(n){n.unpack?Ut[n.type]=n.unpack:Ut[n.type]=n}var cc=new Array(147);for(let n=0;n<256;n++)cc[n]=+("1e"+Math.floor(45.15-n*.30103));var uc=new Kr({useRecords:!1}),rO=uc.unpack,oO=uc.unpackMultiple,nO=uc.unpack,dc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},iO=new Float32Array(1),hj=new Uint8Array(iO.buffer,0,4);var pc;try{pc=new TextEncoder}catch{}var fc,Id,hc=typeof Buffer<"u",Md=hc?Buffer.allocUnsafeSlow:Uint8Array,lg=hc?Buffer:Uint8Array,ig=hc?4294967296:2144337920,U,ut,R=0,Zr,Jr=null,aO=/[\u0080-\uFFFF]/,Os=Symbol("record-id"),Gn=class extends Kr{constructor(t){super(t),this.offset=0;let e,r,o,i,a,s,l=0,u=lg.prototype.utf8Write?function(x,T,C){return U.utf8Write(x,T,C)}:pc&&pc.encodeInto?function(x,T){return pc.encodeInto(x,U.subarray(T)).written}:!1,c=this;t||(t={});let d=t&&t.sequential,p=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=p?32:64),d&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,g=f+h+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],S=0,w=0;this.pack=this.encode=function(x,T){if(U||(U=new Md(8192),ut=new DataView(U.buffer,0,8192),R=0),Zr=U.length-10,Zr-R<2048?(U=new Md(U.length),ut=new DataView(U.buffer,0,U.length),Zr=U.length-10,R=0):R=R+7&2147483640,r=R,s=c.structuredClone?new Map:null,c.bundleStrings?(Jr=["",""],U[R++]=214,U[R++]=98,Jr.position=R-r,R+=4):Jr=null,o=c.structures,o){o.uninitialized&&(o=c._mergeStructures(c.getStructures()));let C=o.sharedLength||0;if(C>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let P=0;P<C;P++){let O=o[P];if(!O)continue;let M,I=o.transitions;for(let N=0,B=O.length;N<B;N++){let D=O[N];M=I[D],M||(M=I[D]=Object.create(null)),I=M}I[Os]=P+64}l=C}d||(o.nextId=C+64)}i&&(i=!1),a=o||[];try{if(v(x),Jr){ut.setUint32(Jr.position+r,R-Jr.position-r);let C=Jr;Jr=null,v(C[0]),v(C[1])}if(c.offset=R,s&&s.idsToInsert){R+=s.idsToInsert.length*6,R>Zr&&A(R),c.offset=R;let C=lO(U.subarray(r,R),s.idsToInsert);return s=null,C}return T&ug?(U.start=r,U.end=R,U):U.subarray(r,R)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,b.length>0&&(b=[]);else if(b.length>0&&!d){for(let C=0,P=b.length;C<P;C++)b[C][Os]=0;b=[]}if(i&&c.saveStructures){let C=o.sharedLength||f;o.length>C&&(o=o.slice(0,C));let P=U.subarray(r,R);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(x)):(l=C,P)}}T&mO&&(R=r)}};let v=x=>{R>Zr&&(U=A(R));var T=typeof x,C;if(T==="string"){let P=x.length;if(Jr&&P>=8&&P<4096){let I=aO.test(x);Jr[I?0:1]+=x,U[R++]=193,v(I?-P:P);return}let O;P<32?O=1:P<256?O=2:P<65536?O=3:O=5;let M=P*3;if(R+M>Zr&&(U=A(R+M)),P<64||!u){let I,N,B,D=R+O;for(I=0;I<P;I++)N=x.charCodeAt(I),N<128?U[D++]=N:N<2048?(U[D++]=N>>6|192,U[D++]=N&63|128):(N&64512)===55296&&((B=x.charCodeAt(I+1))&64512)===56320?(N=65536+((N&1023)<<10)+(B&1023),I++,U[D++]=N>>18|240,U[D++]=N>>12&63|128,U[D++]=N>>6&63|128,U[D++]=N&63|128):(U[D++]=N>>12|224,U[D++]=N>>6&63|128,U[D++]=N&63|128);C=D-R-O}else C=u(x,R+O,M);C<32?U[R++]=160|C:C<256?(O<2&&U.copyWithin(R+2,R+1,R+1+C),U[R++]=217,U[R++]=C):C<65536?(O<3&&U.copyWithin(R+3,R+2,R+2+C),U[R++]=218,U[R++]=C>>8,U[R++]=C&255):(O<5&&U.copyWithin(R+5,R+3,R+3+C),U[R++]=219,ut.setUint32(R,C),R+=4),R+=C}else if(T==="number")if(x>>>0===x)x<64?U[R++]=x:x<256?(U[R++]=204,U[R++]=x):x<65536?(U[R++]=205,U[R++]=x>>8,U[R++]=x&255):(U[R++]=206,ut.setUint32(R,x),R+=4);else if(x>>0===x)x>=-32?U[R++]=256+x:x>=-128?(U[R++]=208,U[R++]=x+256):x>=-32768?(U[R++]=209,ut.setInt16(R,x),R+=2):(U[R++]=210,ut.setInt32(R,x),R+=4);else{let P;if((P=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){U[R++]=202,ut.setFloat32(R,x);let O;if(P<4||(O=x*cc[(U[R]&127)<<1|U[R+1]>>7])>>0===O){R+=4;return}else R--}U[R++]=203,ut.setFloat64(R,x),R+=8}else if(T==="object")if(!x)U[R++]=192;else{if(s){let O=s.get(x);if(O){if(!O.id){let M=s.idsToInsert||(s.idsToInsert=[]);O.id=M.push(O)}U[R++]=214,U[R++]=112,ut.setUint32(R,O.id),R+=4;return}else s.set(x,{offset:R-r})}let P=x.constructor;if(P===Object)_(x,!0);else if(P===Array){C=x.length,C<16?U[R++]=144|C:C<65536?(U[R++]=220,U[R++]=C>>8,U[R++]=C&255):(U[R++]=221,ut.setUint32(R,C),R+=4);for(let O=0;O<C;O++)v(x[O])}else if(P===Map){C=x.size,C<16?U[R++]=128|C:C<65536?(U[R++]=222,U[R++]=C>>8,U[R++]=C&255):(U[R++]=223,ut.setUint32(R,C),R+=4);for(let[O,M]of x)v(O),v(M)}else{for(let O=0,M=fc.length;O<M;O++){let I=Id[O];if(x instanceof I){let N=fc[O];if(N.write){N.type&&(U[R++]=212,U[R++]=N.type,U[R++]=0),v(N.write.call(this,x));return}let B=U,D=ut,G=R;U=null;let L;try{L=N.pack.call(this,x,V=>(U=B,B=null,R+=V,R>Zr&&A(R),{target:U,targetView:ut,position:R-V}),v)}finally{B&&(U=B,ut=D,R=G,Zr=U.length-10)}L&&(L.length+R>Zr&&A(L.length+R),R=sO(L,U,R,N.type));return}}_(x,!x.hasOwnProperty)}}else if(T==="boolean")U[R++]=x?195:194;else if(T==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))U[R++]=211,ut.setBigInt64(R,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)U[R++]=207,ut.setBigUint64(R,x);else if(this.largeBigIntToFloat)U[R++]=203,ut.setFloat64(R,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");R+=8}else if(T==="undefined")this.encodeUndefinedAsNil?U[R++]=192:(U[R++]=212,U[R++]=0,U[R++]=0);else if(T==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+T)},_=this.useRecords===!1?this.variableMapSize?x=>{let T=Object.keys(x),C=T.length;C<16?U[R++]=128|C:C<65536?(U[R++]=222,U[R++]=C>>8,U[R++]=C&255):(U[R++]=223,ut.setUint32(R,C),R+=4);let P;for(let O=0;O<C;O++)v(P=T[O]),v(x[P])}:(x,T)=>{U[R++]=222;let C=R-r;R+=2;let P=0;for(let O in x)(T||x.hasOwnProperty(O))&&(v(O),v(x[O]),P++);U[C+++r]=P>>8,U[C+r]=P&255}:x=>{let T=Object.keys(x),C,P=a.transitions||(a.transitions=Object.create(null)),O=0;for(let I=0,N=T.length;I<N;I++){let B=T[I];C=P[B],C||(C=P[B]=Object.create(null),O++),P=C}let M=P[Os];if(M)M>=96&&m?(U[R++]=((M-=96)&31)+96,U[R++]=M>>5):U[R++]=M;else{M=a.nextId,M||(M=64),M<y&&this.shouldShareStructure&&!this.shouldShareStructure(T)?(M=a.nextOwnId,M<g||(M=y),a.nextOwnId=M+1):(M>=g&&(M=y),a.nextId=M+1);let I=T.highByte=M>=96&&m?M-96>>5:-1;P[Os]=M,a[M-64]=T,M<y?(T.isShared=!0,a.sharedLength=M-63,i=!0,I>=0?(U[R++]=(M&31)+96,U[R++]=I):U[R++]=M):(I>=0?(U[R++]=213,U[R++]=114,U[R++]=(M&31)+96,U[R++]=I):(U[R++]=212,U[R++]=114,U[R++]=M),O&&(S+=w*O),b.length>=h&&(b.shift()[Os]=0),b.push(P),v(T))}for(let I=0,N=T.length;I<N;I++)v(x[T[I]])},A=x=>{let T;if(x>16777216){if(x-r>ig)throw new Error("Packed buffer would be larger than maximum buffer size");T=Math.min(ig,Math.round(Math.max((x-r)*(x>67108864?1.25:2),4194304)/4096)*4096)}else T=(Math.max(x-r<<2,U.length-1)>>12)+1<<12;let C=new Md(T);return ut=new DataView(C.buffer,0,T),U.copy?U.copy(C,0,r,x):C.set(U.slice(r,x)),R-=r,r=0,Zr=C.length-10,U=C}}useBuffer(t){U=t,ut=new DataView(U.buffer,U.byteOffset,U.byteLength),R=0}};Id=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ps];fc=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:a}=t(6);o[a++]=214,o[a++]=255,i.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:a}=t(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?ag(n,16,t):sg(hc?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==lg&&this.structuredClone?ag(n,Td.indexOf(e.name),t):sg(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function ag(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function sg(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function sO(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function lO(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,a)=>i.offset>a.offset?1:-1);e=t.pop();){let i=e.offset,a=e.id;n.copyWithin(i+r,i,o),r-=6;let s=i+r;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function nn(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");Id.unshift(n.Class),fc.unshift(n)}ng(n)}var cg=new Gn({useRecords:!1}),cO=cg.pack,uO=cg.pack;var{NEVER:dO,ALWAYS:pO,DECIMAL_ROUND:fO,DECIMAL_FIT:hO}=dc,ug=512,mO=1024;var dg=new Gn({structuredClone:!0});nn({Class:ce.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,ce.prototype),n}});nn({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});nn({Class:He.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,He.prototype),n}});nn({Class:_s.prototype.constructor,type:4,write(n){return n.id},read(n){return new _s(n)}});nn({Class:As.prototype.constructor,type:5,write(n){return n.data},read(n){return new As(n)}});nn({Class:qe.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,qe.prototype),n}});function yO(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function Nd(n){if(zi(n))return n;if(Array.isArray(n))return n.map(Nd);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=Nd(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var mc;(r=>{function n(o){return dg.pack(o)}r.serialize=n;function t(o){return dg.unpack(o)}r.deserialize=t;function e(o){return yO(n(Nd(o))).toString()}r.checksum=e})(mc||(mc={}));var ln="personal camera",cn="a218fcc3-276b-49b9-b485-49037fd14f5f",yg=2960946,dt=5526619;var Cs;(d=>{function n(p,f){return p[0]===f[0]&&p[1]===f[1]}d.isEqual=n;function t(p,f,h){return[p[0]+(f[0]-p[0])*h,p[1]+(f[1]-p[1])*h]}d.lerp=t;function e(p,f){return[p[0]+f[0],p[1]+f[1]]}d.add=e;function r(p,f){return[p[0]-f[0],p[1]-f[1]]}d.sub=r;function o(p,f){return Math.pow(f[0]-p[0],2)+Math.pow(f[1]-p[1],2)}d.distanceSquared=o;function i(p,f){return Math.sqrt(o(p,f))}d.distance=i;function a(p,f){return p[0]*f[0]+p[1]*f[1]}d.dot=a;function s(p,f){return[p[0]*f,p[1]*f]}d.scalarMultiply=s;function l(p,f,h){let m=d.sub(f,p),y=d.sub(h,p),g=d.dot(m,y)/d.dot(m,m),b=d.scalarMultiply(m,g);return d.add(p,b)}d.projectionOnto=l;function u(p,f,h){return i(p,l(p,f,h))}d.projectionOntoDistance=u;function c(p,f){return[(p[0]+f[0])*.5,(p[1]+f[1])*.5]}d.center=c})(Cs||(Cs={}));var an;(s=>{function n(l,u){return l[0]===u[0]&&l[1]===u[1]&&l[2]===u[2]}s.isEqual=n;function t(l,u){return[l[0]+u[0],l[1]+u[1],l[2]+u[2]]}s.add=t;function e(l,u){return[l[0]-u[0],l[1]-u[1],l[2]-u[2]]}s.sub=e;function r(l,u){return[l[0]/u[0],l[1]/u[1],l[2]/u[2]]}s.div=r;function o(l,u){return[l[0]*u[0],l[1]*u[1],l[2]*u[2]]}s.mul=o;function i(l,u){return Math.hypot(l[0]-u[0],l[1]-u[1],l[2]-u[2])}s.dist=i;function a(l,u,c){return[l[0]+(u[0]-l[0])*c,l[1]+(u[1]-l[1])*c,l[2]+(u[2]-l[2])*c]}s.lerp=a})(an||(an={}));var pg;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(pg||(pg={}));var sn;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,a){let s=a.slice(0);for(var l=0,u=a.length;l<u;l+=3){let c=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/c,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/c,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/c}return s}o.applyMatrix4=r})(sn||(sn={}));var Ot;(c=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}c.isRGB=n,c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}c.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}c.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}c.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}c.toHex=s;function l(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}c.equals=l;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}c.lerp=u})(Ot||(Ot={}));var we;(l=>{l.white={...Ot.white,a:1},l.transparent={...Ot.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}l.from0to1=e;function r(u,c){return{...Ot.fromHex(u),a:c}}l.fromHexAndA=r;function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:u.a}}l.toRgb255a1=o;function i(u,c){return Ot.equals(u,c)&&u.a===c.a}l.equals=i;function a(u,c,d){return{r:u.r+(c.r-u.r)*d,g:u.g+(c.g-u.g)*d,b:u.b+(c.b-u.b)*d,a:u.a+(c.a-u.a)*d}}l.lerp=a;function s({r:u,g:c,b:d,a:p}=l.white){return`rgba(${u*255}, ${c*255}, ${d*255}, ${p})`}l.toStyle=s})(we||(we={}));var yc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(yc||(yc={}));var fg;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(fg||(fg={}));var hg;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(hg||(hg={}));var mg;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(mg||(mg={}));function Dd(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var Ir;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Ir||(Ir={}));var un;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(un||(un={}));var eo;(e=>{function n(r,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(r[0],r[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[r[0]+r[0]*o,0,0]},grid:{count:[2,2,2],size:r.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function t(r,o){let i={...r};if(gO.forEach(a=>{Object.assign(i,{[a]:o[a]??r[a]})}),i.radial={...r.radial},o.radial){let a=r.radial,s=o.radial;xO.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...r.linear},o.linear){let a=r.linear,s=o.linear;bO.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...r.grid},o.grid){let a=r.grid,s=o.grid;vO.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...r.toObject},o.toObject){let a=r.toObject,s=o.toObject;SO.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...r.randomnessObject},o.randomnessObject){let a=r.randomnessObject,s=o.randomnessObject;wO.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=t})(eo||(eo={}));var gc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}r.toOps=e})(gc||(gc={}));var gO=["count"],xO=["radius","start","end","position","scale","rotation"],bO=["position","scale","rotation"],vO=["count","size"],SO=["count","position","scale","rotation"],wO=["strength","scale","rotation","position","movement","seed","freqScale"];var xc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(xc||(xc={}));var bc;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:we.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:we.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:we.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(bc||(bc={}));var qi;(r=>(r.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},r.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},r.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:r.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeLoopDelayStart:"end",emitTimeDuration:1,...r.defaultCollisionData}))(qi||(qi={}));var dn;(t=>t.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(dn||(dn={}));var Ed;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Ed||(Ed={}));var Bd;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Bd||(Bd={}));var vc;(t=>t.defaultData={...Bd.defaultData,...Ed.defaultData})(vc||(vc={}));var gg;(t=>{function n(e,r){let o=[];if("material"in e){let i=typeof e.material=="string"?r.materials[e.material]??r.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?r.materials[i]??r.lib.materials[i]?.asset:i;a&&o.push(a)}return o}t.getMaterialData=n})(gg||(gg={}));var Wi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Wi||(Wi={}));var xg;(t=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}t.is=n})(xg||(xg={}));function vg(n){return n.type!=="displace"}var bg;(t=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=n})(bg||(bg={}));var Sg=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],wg=["wrapping","image","video","name"],ht;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let u=i.texture;u&&Object.assign(u,s)}}o.patch=n;function t(i,a){return i==="light"&&a?e(a):r(i)}o.defaultData=t;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function r(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:Wi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...a,type:"color",color:Ot.fromHex(dt)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Ot.fromHex(6710886),a:1},colorB:{...Ot.fromHex(6710886),a:1},colorC:{...Ot.fromHex(16777215),a:1},colorD:{...Ot.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:we.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:we.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:we.fromHexAndA(0,1),contourColor:we.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Ot.fromHex(0),a:1},colorB:{...Ot.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(ht||(ht={}));var Bt;(u=>{function n(c){return!c.layers.some(p=>p.data.type==="texture"&&p.data.projection!==0||p.data.type==="depth"&&!p.data.isWorldSpace||p.data.type==="noise"||p.data.type==="displace")}u.isMergable=n;function t(c){let d="";return c.layers.forEach(p=>{Object.entries(p.data).forEach(([f,h])=>{d+=`${f}${h}`,Array.isArray(h)?h.forEach(m=>d+=`${m}`):typeof h=="object"?Object.values(h).forEach(m=>{typeof m=="number"?d+=`${m.toFixed(4)}`:d+=`${m}`}):d+=`${h}`})}),d}u.getHash=t;function e(){return{layers:new he}}u.defaultEmptyData=e;function r(c="layer1",d="layer2"){return i("phong",c,d)}u.defaultData=r;function o(c,d){return{...c,name:d}}u.withName=o;function i(c,d="layer1",p="layer2"){let f=new he;return f.push({fi:0,data:ht.defaultData("light",c),id:d}),f.push({fi:1,data:ht.defaultData("color"),id:p}),{layers:f}}u.defaultTwoLayerData=i;function a(c){let d=ht.defaultData("texture");c&&Object.assign(d.texture,{image:c});let p=new he;return p.push({fi:0,data:d,id:"layer1"}),p.push({fi:1,data:{...ht.defaultData("transmission"),alpha:1},id:"layer2"}),p.push({fi:2,data:{...ht.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:p}}u.defaultUIObjectMaterial=a;function s(c,d="phong",p="layer1",f="layer2"){let h=ht.defaultData("texture");Object.assign(h.texture,{image:c});let m=new he;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:ht.defaultData("light",d),id:f}),{layers:m}}u.defaultTwoLayerTextureData=s;function l(c,d="phong",p="layer1",f="layer2"){let h=ht.defaultData("video");Object.assign(h.texture,{video:c});let m=new he;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:ht.defaultData("light",d),id:f}),{layers:m}}u.defaultTwoLayerVideoTextureData=l})(Bt||(Bt={}));var $i;(t=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})($i||($i={}));var Yi;(t=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=n})(Yi||(Yi={}));var Ld={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Sc;(t=>{function n(e,r){let o={...e};return _O.forEach(i=>{Object.assign(o,{[i]:r[i]??e[i]})}),o}t.merge=n})(Sc||(Sc={}));var wc={shape:Ld,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},_O=["depth","offset","angle","twist","startScale","endScale"];var Ts;(e=>{function n(r){return r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"||r==="UIGeometry"}e.is2DParametricMesh=n;function t(r){return r==="PolygonGeometry"||r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"||r==="PathGeometry"||r==="VectorGeometry"||r==="ConeGeometry"||r==="CubeGeometry"||r==="CylinderGeometry"||r==="DodecahedronGeometry"||r==="HelixGeometry"||r==="IcosahedronGeometry"||r==="LatheGeometry"||r==="PyramidGeometry"||r==="SphereGeometry"||r==="PlaneGeometry"||r==="BackdropGeometry"||r==="TorusGeometry"||r==="TorusKnotGeometry"||r==="BooleanGeometry"||r==="TextGeometry"}e.isParametricMesh=t})(Ts||(Ts={}));var _c;(t=>{function n(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Sc.merge(o.extrusion,r.extrusion))),o}t.merge=n})(_c||(_c={}));var pn;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="UIGeometry")return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:Yi.defaultData(),extrusion:wc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:$i.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}t.defaultData=n})(pn||(pn={}));var Ac;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:Ot.white,near:.1,far:2e3})(Ac||(Ac={}));var Pc;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(Pc||(Pc={}));var Rd;(t=>t.defaultData={softShadowQuality:"low"})(Rd||(Rd={}));var Vd;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Vd||(Vd={}));var zd;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(zd||(zd={}));var Ms;(t=>t.defaultData={usePhysics:!1,gravity:-10})(Ms||(Ms={}));var Gd;(t=>t.defaultData={playCamera:ln,gameControlObject:null})(Gd||(Gd={}));var Oc;(t=>t.defaultData={backgroundColor:we.fromHexAndA(yg,1),postprocessing:Pc.defaultData,fog:Ac.defaultData,globalPhysics:Ms.defaultData,ambient:Vd.defaultData,ao:zd.defaultData,shadow:Rd.defaultData,publish:Gd.defaultData})(Oc||(Oc={}));var Cc;(t=>t.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceIntensity:.5,forceDambing:.95})(Cc||(Cc={}));var _g;(e=>{function n(r){return r==="Component"||r==="Instance"}e.isComponentRelated=n;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(_g||(_g={}));var Xi;(o=>{o.identity={...yc.identity,hiddenMatrix:sn.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,a){return Ol({position:an.isEqual(i.position,a.position)?void 0:a.position,rotation:an.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:an.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:sn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(Xi||(Xi={}));var gt;(t=>t.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,physics:dn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Xi.identity,cloner:null})(gt||(gt={}));var Tc;(t=>t.defaultData={type:"Empty",...gt.defaultData})(Tc||(Tc={}));var Ag;(t=>t.defaultData={type:"ParticleCollider",...Cc.defaultData,...gt.defaultData})(Ag||(Ag={}));var Pg;(t=>t.defaultData={type:"Component",...gt.defaultData})(Pg||(Pg={}));var Og;(t=>t.defaultData={type:"Particle",...gt.defaultData,...qi.defaultData})(Og||(Og={}));var kn;(t=>t.defaultData={type:"Mesh",...gt.defaultData,...vc.defaultData})(kn||(kn={}));var Fn;(t=>t.defaultData={...gt.defaultData,...Xi.identity,position:[0,0,un.DefaultTargetOffset],...un.defaultData})(Fn||(Fn={}));var Mc;(e=>{function n(r){return{...gt.defaultData,...bc.defaultData(r)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Mc||(Mc={}));var Qi;(e=>{function n(r,o,i=0){for(;i<o.length;){let a=r?r[o[i]]:void 0;if(o.length===i+1)return a;if(a)r=a.descendants,i+=1;else return}}e.resolveWithDes=n;function t(r,o,i=0){let a=n(r,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(Qi||(Qi={}));var to;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...gt.defaultData,...s,component:a,overrides:new qe,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=r;function o(a){let s=Xi.fromObject(a.data);return r(a.id,s)}i.fromComponentData=o})(to||(to={}));var To;(e=>{e.defaultData={type:"Page",...gt.defaultData,physics:{...dn.defaultData,fusedBody:!1},...Oc.defaultData,camera:Fn.defaultData};function t(r){return r.uiScene!==void 0}e.isUIPage=t})(To||(To={}));var Ic;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:sn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:dn.defaultData,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...un.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...gt.defaultData,...kn.defaultData,geometry:pn.defaultData("RectangleGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...gt.defaultData,...kn.defaultData,geometry:pn.defaultData("BooleanGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...gt.defaultData,...kn.defaultData,geometry:pn.defaultData("TextGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")}))(Ic||(Ic={}));var jn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new qe}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new qe})))):Ir.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function t(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=tn(s.material,l=>{if(typeof l!="string")for(let[u,c]of Object.entries(a.material.layers)){let d=l.layers.data(u);d&&ht.patch(d,c)}}).data),s.materials&&a.materials&&(s.materials=tn(s.materials,l=>{for(let u=0;u<s.materials.length;u++){let c=a.materials[u];if(typeof c!="string")for(let[d,p]of Object.entries(c.layers)){let f=l[u]?.layers?.data(d);f&&ht.patch(f,p)}}}).data),s}function e(i,a){let s,l=[],u={orthographic:0,perspective:0,geometry:0};function c(d,p){for(let[f,h]of Object.entries(p.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...d,"layers",f,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};l.push(g)}}}for(let[d,p]of Object.entries(a))if(d!=="name")if(d==="cloner")l.push(...gc.toOps(p,["cloner"]));else if(d==="pathSnapping")l.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")c(["material"],p);else if(d==="materials")for(let[f,h]of Object.entries(p))c(["materials",f],h);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};l.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[d]=p;return l}o.toOps=e;function r(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Xi.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),Ir.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:_c.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:eo.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:eo.merge(s.cloner,a.cloner)});else if(xc.is(i.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=Ot.clone(l.color))}return s}o.patch=r})(jn||(jn={}));var Ki;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Ki||(Ki={}));var Nr;(t=>t.defaultData={orbitControls:Ki.defaultData,playPage:cn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,i=0;return r<5?i=-30:r<10&&(i=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(Nr||(Nr={}));var kd;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(kd||(kd={}));var Fd;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Fd||(Fd={}));var Mo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...kd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Fd.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Mo||(Mo={}));var Cg;(e=>{function n(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function t(r,o,i){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Zi.getComponentData(r,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=t})(Cg||(Cg={}));var Io;(l=>{l.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function t(u={withLight:!0,withSquare:!0}){let c=[],d=Ic.defaultMeshObject;u.withLight===!0&&c.push({fi:-1,data:Mc.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),u.withSquare===!0&&c.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:d,children:[]});let p=new He;return p.push({fi:1,id:cn,data:{...To.defaultData,name:"Scene 1"},children:c}),p}l.defaultData={objects:t(),publish:Nr.defaultData,styles:Mo.defaultData()},l.emptyDataWithoutPage=function(){return{objects:new He,publish:Nr.defaultData,styles:Mo.defaultData()}},l.emptyDataWithPage=function(u){return{objects:t(u),publish:Nr.defaultData,styles:Mo.defaultData()}},l.emptyData=function(){return{objects:new He,publish:{...Nr.defaultData},styles:Mo.defaultData()}};function a(u){return{...l.defaultData,objects:jt(u,He.prototype)}}l.withObjs=a;function s(u,c){return a([{id:u,data:c,children:[],fi:0}])}l.withObj=s})(Io||(Io={}));var Ji;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Ji||(Ji={}));var ea;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ea||(ea={}));var Nc;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function t(a){return typeof a=="number"}i.isNumber=t;function e(a){return typeof a=="boolean"}i.isBoolean=e;function r(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=r;function o(a){return i.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(Nc||(Nc={}));var jd;(t=>t.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(jd||(jd={}));var Tg;(t=>t.all=[...jd.all,"components"])(Tg||(Tg={}));var Mg;(t=>{function n(){return{images:new ce,videos:new ce,colors:new ce,audios:new ce,particles:new ce,fonts:new ce,materials:new ce,components:new ce,variables:new ce}}t.defaultData=n})(Mg||(Mg={}));var No;(t=>{function n(){return{images:new ce,videos:new ce,colors:new ce,audios:new ce,particles:new ce,fonts:new ce,materials:new ce,components:new ce,variables:new ce}}t.defaultData=n})(No||(No={}));var xr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},jt(a,ce.prototype)}i.defaultColors=n;function t(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...ea.emptyImage,name:"AI generated image"}),jt(s,ce.prototype)}i.defaultImages=t;function e(){return{catelogs:new ce,materials:new ce,images:new ce,videos:new ce,colors:new ce,audios:new ce,particles:new ce,fonts:new ce,variables:new he,lib:No.defaultData()}}i.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),u=Math.floor((a-l*3600)/60),c=Math.round(a-l*3600-u*60);return{textValue:[l,u,c]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),u=Math.round(a-l*60);return{textValue:[l,u]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(xr||(xr={}));import{MathUtils as Bc}from"three";var Dc;(t=>t.list=["idle","move","jump","run"])(Dc||(Dc={}));var Ec;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new he,move:new he,jump:new he,run:new he},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:we.fromHexAndA(3728051,1)}}))(Ec||(Ec={}));function Ig(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Mr(et(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...et(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Do(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function Eo(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,i)=>{o===void 0&&(r.materials[i]=Bt.defaultData(),o=r.materials[i]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Bt.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Bt.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&t(o.material)})})}function AO(n){Object.assign(n.scene.publish,{orbitControls:{...Ki.defaultData,...et(n.scene.publish.orbitControls)}})}function PO(n){Object.assign(n.scene.publish.settings,{video:{...Nr.defaultData.settings.video,...et(n.scene.publish.settings.video)}})}function OO(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((Sg.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(i))(wg.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(a=>{t(a)})})})}function CO(n){n.scene.publish.withBackground=!0}function TO(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function MO(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function IO(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function NO(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.unproxy().parent(t);if(r){let o=et(n.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=et(e).booleanExclude!==!0)}})}function DO(n){n.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function EO(n){function t(r){Object.setPrototypeOf(r,qe.prototype),r.texture&&Object.setPrototypeOf(r.texture,qe.prototype)}function e(r){Object.setPrototypeOf(r,qe.prototype);for(let o in r)t(r[o])}n.scene.objects.traverse((r,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=et(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],u=et(l).layers;e(u),l.layers=u}})})}function Ng(n){n.layers===void 0&&Object.assign(n,Bt.defaultTwoLayerData("lambert"))}function Ud(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...et(t),colors:e,steps:r};Object.assign(t,o)}})}function BO(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Dg(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Ud(r)}):"material"in e&&typeof e.material!="string"&&Ud(e.material)}),Object.values(n.shared.materials).forEach(t=>Ud(t))}function LO(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function RO(n){n.shared.audios=jt({},ce.prototype)}function VO(n){n.shared.videos=jt({},ce.prototype)}function zO(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function GO(n){Object.entries(et(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(et(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function kO(n){n.scene.publish.settings.web.preload=!1}function Eg(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function Bg(n){n.layers&&n.layers.forEach(t=>{vg(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function FO(n){n.shared.fonts=jt({},ce.prototype)}function jO(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function UO(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=Bt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=jO(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...gt.defaultData,...kn.defaultData,flatShading:!1,wireframe:!1,geometry:{...pn.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:et(o.states),events:et(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=et(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function HO(n){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new he,move:new he,jump:new he}});else{let i=new he;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Bc.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},c={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(c,Mr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(c,{control1:{...a.control1},control2:{...a.control2}});let d={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},p={state:a.state,...d,...c},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:Bc.generateUUID(),data:u},{fi:1,id:Bc.generateUUID(),data:p})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function qO(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let a=new he,s=[];if(e.events.forEach((l,u,c)=>{if(l.type==="Audio"&&l.trigger===i){let d;s.push(u),l.interaction==="play"?d={...Mr(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(d={...Mr(l,"interaction","delay","object","playAudio"),type:"Audio"}),d&&a.push({fi:c,id:u,data:d})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(u=>u.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Bc.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Lg(n){let t=n.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=ht.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function Rg(n){Do(n,Lg),Eo(n,Lg)}function WO(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function $O(n){n.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function YO(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Bt.defaultTwoLayerData("phong"))})}function XO(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((t,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function QO(n){n.scene.objects.traverse((t,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function KO(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function ZO(n){let{video:t}=n.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function JO(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function eC(n){let t=n.scene.environment.usePhysics;n.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function tC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=Ec.defaultDataThirdPerson.navmesh)})})}function rC(n){n.scene.styles||(n.scene.styles=Mo.defaultData())}function Vg(n){n.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function oC(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Eo(n,Vg),Do(n,Vg)}function nC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new he})})})}function iC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function zg(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function Gg(n,t){if(t<1&&(Eo(n,Ig),Do(n,Ig),n.schema=1),t<2&&(AO(n),n.schema=2),t<3&&(OO(n),n.schema=3),t<4&&(CO(n),n.schema=4),t<5&&(TO(n),n.schema=5),t<6&&(MO(n),n.schema=6),t<7&&(IO(n),n.schema=7),t<8&&(n.schema=8),t<9&&(Dg(n),n.schema=9),t<10&&(BO(n),n.schema=10),t<11&&(LO(n),n.schema=11),t<12&&(Dg(n),n.schema=12),t<13&&(RO(n),n.schema=13),t<14&&(zO(n),n.schema=14),t<15&&(GO(n),n.schema=15),t<16&&(kO(n),n.schema=16),t<17&&(Eo(n,Eg),Do(n,Eg),n.schema=17),t<18&&(Eo(n,Ng),Do(n,Ng),n.schema=18),t<19&&(PO(n),n.schema=19),t<20&&(FO(n),UO(n),n.schema=20),t<21&&(HO(n),qO(n),n.schema=21),t<22&&(Rg(n),n.schema=22),t<23&&(WO(n),n.schema=23),t<24&&($O(n),n.schema=24),(t<25||n.shared.videos===void 0)&&(VO(n),t<25&&(n.schema=25)),t<26&&(NO(n),n.schema=26),t<27&&(DO(n),n.schema=27),t<28&&(Rg(n),n.schema=28),t<29&&(EO(n),n.schema=29),t<30&&(YO(n),n.schema=30),t<31&&(XO(n),n.schema=31),t<33&&(QO(n),n.schema=33),t<34&&(KO(n),n.schema=34),t<35&&(ZO(n),n.schema=35),t<36&&(JO(n),n.schema=36),t<37&&(eC(n),n.schema=37),t<38&&(Eo(n,Bg),Do(n,Bg),n.schema=38),t<39&&(tC(n),n.schema=39),t<40&&(rC(n),n.schema=40),t<41&&(oC(n),n.schema=41),t<42&&(nC(n),n.schema=42),t<43&&(iC(n),n.schema=43),t<99){Eo(n,zg),Do(n,zg),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=ln);let e=et(n.scene.objects),r=n.scene.objects;n.scene.publish.playPage=cn,r.insertBefore(null,null,[{id:cn,data:{...To.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Mr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Mr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ms.defaultData,...Mr(n.scene.environment,"usePhysics","gravity")},camera:et(n.scene.ownerCamera)??To.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Io.TRASH_CAN_ID&&r.move(cn,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,dn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function kg(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function aC(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}function sC(n){Array.isArray(et(n.events))&&n.events?.forEach(t=>{"disabled"in t||(t.disabled=!1),(t.type==="MouseDown"||t.type==="MouseUp"||t.type==="MousePress")&&(t.mode=t.mode||"Object")})}var ta=180/Math.PI;function Fg(n){n.rotation=n.rotation.slice(0,3).map(t=>t*ta)}function jg(n){Fg(n),n.type==="Page"&&Fg(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*ta))});let t=n.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*ta),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*ta),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=ta,t.extrusion.twist*=ta),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(et(n.events))&&n.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function lC(n){n.shared.variables=jt({},ce.prototype)}function cC(n){let t=et(n.shared.variables);n.shared.variables=jt(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),he.prototype)}var ro=111;function Ug(n,t){t(n.data);for(let e of n.children)Ug(e,t)}function uC(n){let t=n.schema??104;t!==ro&&t<105&&(Ug(n.asset,jg),n.schema=105)}function dC(n){n.shared.particles=jt({},ce.prototype),n.shared.lib=No.defaultData()}function pC(n){n.scene.objects.traverse((t,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function Lc(n){let t=n.schema??0;if(t!==ro){console.warn("updating from ",t,"to ",ro),Gg(n,t),t<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Nr.defaultData.joystickSizeAndXYOffset),n.schema=100),t<101&&(Eo(n,kg),Do(n,kg),n.schema=101),t<102&&(aC(n),n.schema=102),t<104&&(n.shared.catelogs=new ce,n.shared.lib=No.defaultData(),n.schema=104),t<105&&(lC(n),n.scene.objects.traverse((e,r)=>{jg(r)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))uC(e);t<106&&(cC(n),n.schema=106),t<107&&(n.shared.lib.variables=No.defaultData().variables,n.schema=107),t<109&&(dC(n),n.schema=109),t<110&&(pC(n),n.schema=110),t<111&&(n.scene.objects.traverse((e,r)=>{sC(r)}),n.schema=111)}}var Zi;(l=>{l.defaultData={schema:ro,scene:Io.defaultData,frames:new ce().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Ji.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors()}},l.emptyDataForImports=function(u){let c=Io.emptyDataWithPage(u);return{schema:ro,scene:c,frames:new ce().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Ji.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors(),images:xr.defaultImages(u)}}},l.emptyData=function(){return{schema:ro,scene:Io.emptyDataWithPage(),frames:new ce().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Ji.defaultData),shared:xr.emptyData()}},l.clipboard2dData=function(){return{schema:ro,scene:Io.emptyData(),frames:new ce,shared:xr.emptyData()}},l.collabHelper={...ws,updateSchema(u){return(u.schema??0)<ro?tn(u,Lc):(u.schema??0)-ro}};function i(u){let c=l.collabHelper.updateSchema(u);return typeof c=="number"?c===0?u:null:c.data}l.updateSchemaDirectly=i;function a(u){return{...u,shared:{...u.shared,lib:No.defaultData()}}}l.withoutLib=a;function s(u,c){let d=u.scene.objects.get(c);if(d&&d.data.type==="Component")return d;{let p=u.shared.lib.components[c];if(p)return p.asset}}l.getComponentData=s})(Zi||(Zi={}));var Hg;(t=>{function n(e){return!0}t.is=n})(Hg||(Hg={}));var Rc;(r=>{r.defaultData={position:[0,0],scale:[1,1],rotation:0};function t(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale}}r.merge=t;function e(o,i){return Ol({position:Cs.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:Cs.isEqual(o.scale,i.scale)?void 0:i.scale})}r.diff=e})(Rc||(Rc={}));var Hd;(t=>t.defaultData={horizontalConstraint:0,verticalConstraint:0})(Hd||(Hd={}));var Vc;(t=>t.defaultData={opacity:1,fill:{color:we.white,enabled:!0},stroke:{color:we.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:we.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:we.from0to1([0,0,0,1]),enabled:!1,spread:0}})(Vc||(Vc={}));var Un;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function t(a,s){if(s===void 0)return a;let l={...a},u=["width","height","cornerRadius"];for(let c of u)c in l&&c in s&&s[c]!==void 0&&Object.assign(l,{[c]:s[c]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function r(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,Rc.merge(l,s)),l=t(l,s),l=e(l,s),l}i.patch=r;function o(a,s){let l,u=[];for(let[c,d]of Object.entries(s))c!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},u.push(l)),l.props[c]=d);return u}i.toOps=o})(Un||(Un={}));var Is;(t=>t.defaultData={...Rc.defaultData,...Hd.defaultData,states:new he,events:new he,visible:!0,raycastLock:!1})(Is||(Is={}));var Ns;(t=>t.defaultData={...Is.defaultData,...Vc.defaultData})(Ns||(Ns={}));var zc;(t=>t.defaultData={cornerRadius:[0,0,0,0]})(zc||(zc={}));var qd;(t=>t.defaultData={...Ns.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(qd||(qd={}));var ra;(t=>t.defaultData={...Ns.defaultData,...zc.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(ra||(ra={}));var Wd;(t=>t.defaultData={...Ns.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(Wd||(Wd={}));var qg;(t=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"}t.is=n})(qg||(qg={}));var Ds;(t=>t.defaultData={...Is.defaultData,name:"Group",type:"group2d"})(Ds||(Ds={}));var $d;(t=>t.defaultData={...Is.defaultData,...zc.defaultData,...Vc.defaultData,name:"Frame",type:"frame2d",width:200,height:200,fill:{color:we.fromHexAndA(dt,1),enabled:!0},stroke:{color:we.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}})($d||($d={}));var Bo;(o=>{function n(i){switch(i){case"rectangle2d":return{...ra.defaultData};case"ellipse2d":return{...qd.defaultData};case"text2d":return{...Wd.defaultData};case"vector2d":return{...ra.defaultData};case"frame2d":return{...$d.defaultData};case"group2d":return{...Ds.defaultData}}}o.defaultData=n;function t(i){return"width"in i&&"height"in i?[typeof i.width=="number"?i.width*.5:0,typeof i.height=="number"?i.height*.5:0]:[0,0]}o.getPivot=t;function e(i){return i.type==="rectangle2d"||i.type==="ellipse2d"||i.type==="text2d"||i.type==="frame2d"}o.isResizeable=e;function r(i){return i.type==="rectangle2d"||i.type==="frame2d"}o.hasCorners=r})(Bo||(Bo={}));var Gc;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new He},e.emptyData=function(){return{type:"scene2d",objects:new He}}))(Gc||(Gc={}));var Ja=Ft($g());import{Object3D as cN,Vector3 as fr,Euler as If,MathUtils as Cb,Matrix4 as si}from"three";var fC=.5*(Math.sqrt(3)-1),Es=(3-Math.sqrt(3))/6,hC=1/3,oo=1/6,sH=(Math.sqrt(5)-1)/4,lH=(5-Math.sqrt(5))/20,Bs=n=>Math.floor(n)|0,Yg=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),Xd=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function kc(n=Math.random){let t=Qg(n),e=new Float64Array(t).map(o=>Yg[o%12*2]),r=new Float64Array(t).map(o=>Yg[o%12*2+1]);return function(i,a){let s=0,l=0,u=0,c=(i+a)*fC,d=Bs(i+c),p=Bs(a+c),f=(d+p)*Es,h=d-f,m=p-f,y=i-h,g=a-m,b,S;y>g?(b=1,S=0):(b=0,S=1);let w=y-b+Es,v=g-S+Es,_=y-1+2*Es,A=g-1+2*Es,x=d&255,T=p&255,C=.5-y*y-g*g;if(C>=0){let M=x+t[T],I=e[M],N=r[M];C*=C,s=C*C*(I*y+N*g)}let P=.5-w*w-v*v;if(P>=0){let M=x+b+t[T+S],I=e[M],N=r[M];P*=P,l=P*P*(I*w+N*v)}let O=.5-_*_-A*A;if(O>=0){let M=x+1+t[T+1],I=e[M],N=r[M];O*=O,u=O*O*(I*_+N*A)}return 70*(s+l+u)}}function Xg(n=Math.random){let t=Qg(n),e=new Float64Array(t).map(i=>Xd[i%12*3]),r=new Float64Array(t).map(i=>Xd[i%12*3+1]),o=new Float64Array(t).map(i=>Xd[i%12*3+2]);return function(a,s,l){let u,c,d,p,f=(a+s+l)*hC,h=Bs(a+f),m=Bs(s+f),y=Bs(l+f),g=(h+m+y)*oo,b=h-g,S=m-g,w=y-g,v=a-b,_=s-S,A=l-w,x,T,C,P,O,M;v>=_?_>=A?(x=1,T=0,C=0,P=1,O=1,M=0):v>=A?(x=1,T=0,C=0,P=1,O=0,M=1):(x=0,T=0,C=1,P=1,O=0,M=1):_<A?(x=0,T=0,C=1,P=0,O=1,M=1):v<A?(x=0,T=1,C=0,P=0,O=1,M=1):(x=0,T=1,C=0,P=1,O=1,M=0);let I=v-x+oo,N=_-T+oo,B=A-C+oo,D=v-P+2*oo,G=_-O+2*oo,L=A-M+2*oo,V=v-1+3*oo,z=_-1+3*oo,F=A-1+3*oo,$=h&255,q=m&255,H=y&255,X=.6-v*v-_*_-A*A;if(X<0)u=0;else{let k=$+t[q+t[H]];X*=X,u=X*X*(e[k]*v+r[k]*_+o[k]*A)}let j=.6-I*I-N*N-B*B;if(j<0)c=0;else{let k=$+x+t[q+T+t[H+C]];j*=j,c=j*j*(e[k]*I+r[k]*N+o[k]*B)}let Y=.6-D*D-G*G-L*L;if(Y<0)d=0;else{let k=$+P+t[q+O+t[H+M]];Y*=Y,d=Y*Y*(e[k]*D+r[k]*G+o[k]*L)}let W=.6-V*V-z*z-F*F;if(W<0)p=0;else{let k=$+1+t[q+1+t[H+1]];W*=W,p=W*W*(e[k]*V+r[k]*z+o[k]*F)}return 32*(u+c+d+p)}}function Qg(n){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(n()*(256-r)),i=e[r];e[r]=e[o],e[o]=i}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as mC}from"three";var Dr=new mC,Fc=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let i=1;Dr.a.fromBufferAttribute(t,o),Dr.b.fromBufferAttribute(t,o+1),Dr.c.fromBufferAttribute(t,o+2),i*=Dr.getArea(),e[o/3]=i}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,i=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){i=a;break}else t<e[a]?o=a-1:r=a+1}return i}sampleFace(t,e,r){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Dr.a.fromBufferAttribute(this.positionAttribute,t*3),Dr.b.fromBufferAttribute(this.positionAttribute,t*3+1),Dr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Dr.a,o).addScaledVector(Dr.b,i).addScaledVector(Dr.c,1-(o+i)),Dr.getNormal(r),this}};import{Object3D as vC}from"three";var Jg=Ft(Zg());import{Object3D as yC,Matrix4 as no}from"three";var gC=new no,xC=new no,bC=new no,oa;(t=>{function n(e){return e&&e.__isSPEObject}t.is=n})(oa||(oa={}));var na=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new no;this.copyPreviousMatrix=!0;this.hiddenMatrix=new no;this.matrixWorldRigid=new no;this.shearScale=new no;this.shearScaleInv=new no}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof yC&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(r,o=0){for(let i of this.children)oa.is(i)&&i.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)oa.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:i,v:a,q:s}=(0,Jg.SVD)(o),l=gC.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),u=xC.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),c=bC.copy(u).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,c).copyPosition(this.matrixWorld),s.every(d=>Math.abs(s[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let i=new no().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),i.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof no?r.hiddenMatrix.premultiply(i):r.applyMatrix4(i),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Qd=class extends na(vC){},SC=n=>n.type==="Mesh",Lo=class extends Qd{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new Lo(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return SC(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};import{Box3 as DM,BufferGeometry as EM,MeshBasicMaterial as BM}from"three";import{Matrix4 as IM,Mesh as NM}from"three";import{Matrix4 as Hc,Vector3 as r0,Euler as CC,MathUtils as Rs}from"three";import{Box3 as wC,Line3 as _C,Matrix4 as Kd,Vector3 as ur}from"three";var Hn=new ur,qn=new ur,ia=new Kd,t0=[new ur(-1,1,1),new ur(-1,-1,1),new ur(1,-1,1),new ur(1,1,1),new ur(-1,1,-1),new ur(-1,-1,-1),new ur(1,-1,-1),new ur(1,1,-1)],AC=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],PC=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],e0=(n,t,e)=>{n.updateEntityBoxSize(Hn,qn),ia.copy(t).multiply(n.matrixWorld),qn.x===0&&qn.y===0&&qn.z===0?e.push(new ur(Hn.x,Hn.y,Hn.z).applyMatrix4(ia)):t0.forEach(r=>{e.push(r.clone().multiply(qn).add(Hn).applyMatrix4(ia))})},Ls=class extends wC{constructor(){super(...arguments);this.matrix=new Kd;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Kd().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new ur);return}e0(a,r,i)}}):e0(e,r,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(ia.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(qn).multiplyScalar(.5),this.getCenter(Hn),ia.copy(this.matrix).setPosition(Hn),this.vertices=t0.map(e=>e.clone().multiply(qn).applyMatrix4(ia))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=AC.map(([e,r])=>new _C(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new ur))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=PC.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Er={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as OC,CubicBezierCurve3 as Zd,Vector3 as Br}from"three";var ep=class extends OC{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let u=l[s],c=s===0?o[s]:o[s]-o[s-1],d=Math.ceil(t*c/a),p=u.getPoints(d);for(let f=0;f<p.length;f++){let h=p[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var tp=.001;function rp(n,t,e){return t.clone().sub(n).cross(t.clone().sub(e)).length()<=tp}function Jd(n,t){let e=new Br(...n.position),r=new Br(...n.controlNext.position),o=new Br(...t.controlPrevious.position),i=new Br(...t.position);return rp(e,r,i)&&rp(e,o,i)}function Uc(n){let t=n.points.map(c=>new Br(...c.data.position)),e=[n.points[0]],r=new Br(...e[0].data.position);for(let c=0;c<n.points.length-1;c++)rp(r,t[c],t[c+1])||(e.push(n.points[c]),r=t[c]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let c=0;c<a;c++){let d=e[c].data,p=new Br(...d.position),f=new Br(...d.controlPrevious.position),h=new Br(...d.controlNext.position),m={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:h};if(d.roundness===0||!n.isClosed&&(c===0||c===a-1)){s[c]={...m,removedLength:0};continue}let y=o&&c==0?a-1:c-1,g=o&&c==a-1?0:c+1,b=e[y].data,S=e[g].data,w=new Br(...b.position),v=new Br(...S.position),_=w.clone().sub(p).normalize(),A=v.clone().sub(p).normalize();Object.assign(m,{prevDir:_,nextDir:A});let x=Jd(b,d),T=Jd(d,S);if(!x||!T)s[c]={...m,removedLength:0};else{let C=_.clone().add(A).normalize(),P=C.clone().cross(_).length()/_.dot(C);s[c]={...m,tan:P,removedLength:d.roundness/P}}}for(let c=0;c<i;c++){let d=c,p=o&&c===a-1?0:c+1,f=s[d],h=s[p];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let c=0;c<i;c++){let d=c,p=o&&c===a-1?0:c+1,f=s[d],h=s[p],m=null;if(!Jd(e[d].data,e[p].data))f.position.distanceTo(h.position)>tp&&(m=new Zd(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),g=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&g.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(g)>tp&&(m=new Zd(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}l[2*c+1]=m}for(let c=0;c<a;c++){let d=s[c];if(d.removedLength===0){l[2*c]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),h=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),m=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(h,.5),b=f.distanceTo(h)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(b,2))).add(g),w=y.clone().multiplyScalar(-m).add(S),v=p.distanceTo(w)/p.distanceTo(g),_=d.prevDir.clone().multiplyScalar(v*p.distanceTo(f)).add(p),A=_.clone().lerp(w,2),x=f.clone().lerp(_,4/3),T=h.clone().lerp(A,4/3);l[2*c]=new Zd(f,x,T,h)}let u=new ep;return l.forEach(c=>{c&&u.add(c)}),u}var Ce;(t=>{function n(e){return e&&e.__isEntity}t.is=n})(Ce||(Ce={}));var aa=n=>Ce.is(n),TC={type:"completeState",isfromEntity:!0},MC=["x","y","z"],op=new r0,IC=new r0().set(0,1,0),sa=n=>class extends na(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Ls;this._recursiveBBox=new Ls;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(Ce.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(Ce.is(this.children[r]))return r+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(Ce.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)jn.toOps(this.data,a.data).forEach(l=>{let u=Fi.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=jn.patch(this.data,a),jn.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{aa(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(i=>{i.uuid===r&&(o=i)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,i=o.indexOf(this)+1;if(Ce.is(o[i]))return o[i];if(Ce.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&Ce.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,i=this;for(;i!==r;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)aa(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{Ce.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)aa(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)aa(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)aa(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>aa(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Rs.RAD2DEG,this.rotation.y*Rs.RAD2DEG,this.rotation.z*Rs.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ri(o,r)}getTransformValues(r,o,i){return o[r].map((a,s)=>i?.shared.getVariable(a,[this.uuid,r,MC[s]])??a)}updateTransformState(r,o){let i=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),i=!0),r.rotation&&(op.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(Rs.DEG2RAD),this.rotation.setFromVector3(op),i=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),i=!0),r.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??sn.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)Ce.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{Ce.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Ri(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,i,a){let s=this.data;this.data=o;let l=r,u=Oe(r.path,["states","*"]);if(u!==null){if(r.type===0){let[c]=u;if(this?.stateSelection===c){let d={...r.props};if(delete d.name,Object.values(r.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=Ze.zoom(p,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(d[h]=f[h])}}l={...r,props:d,path:r.path.slice(2)}}}}else if(r.type===0){let c=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(c!==void 0){if(r.props.name!==void 0&&c.name){let{name:p,...f}=c;c=f}if(r.props.material!==void 0&&"material"in c){let{material:p,...f}=c;c=f}let d=Ze.removeOverridden(r.path,r.props,c);l={...r,props:d}}}if(this.updateByPatchedOpBase(l,jn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Oe(r.path,["overrides"])){let c=[],d=[...r.path];for(c.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)c.push(d[1]),d.splice(0,2);if(c[c.length-1]===void 0){if(r.type===0)for(let p of Object.keys(r.props)){c[c.length-1]=p;let f=i.scene.findInstance([this.uuid,...c]);f&&(f.overrideData=r.props[p],f.updateState(Xr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...c]);if(p){let f=Ze.zoom(p.component.data,d);if(r={...r,path:d},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}p.overrideData=Qi.resolve(o.overrides,c),p.updateByOp(r,Je.applySimple(p.data,r),i,!1)}}}else if(this.instances.length>0){let c;if(r.path.length===0&&r.type===0){let d;for(let p of to.rootOverrideProps)p in r.props&&(d===void 0&&(d={}),d[p]=r.props[p]);d&&(c={...r,props:d})}else for(let d of to.rootOverrideProps)if(Oe(r.path,[d])){c=r;break}c!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Xr.filterOp(d.overrideData,c);p&&d.updateByOp(p,Je.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Xr.filterOp(d.overrideData,r);if(p){let f;s===d.data&&r===p?f=o:f=Je.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(r,o,i){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!Ir.is(r.props.type)&&Er.changeEntityProptotype(this,o,i);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){Er.changeEntityProptotype(this,o,i);for(let a of this.children)Ce.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(r,o,i)}updateByPatchedOp(r,o,i){if(r.path.length===0&&r.type===0&&this.updateState(r.props,i),Oe(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Oe(r.path,["cloner"])!==null){let a=Je.drop(r,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=l.data;if(u.geometry.path.points.length<=1)return;let c=Uc(u.geometry.path),d=(i+a)%1;i+a===1&&d===0&&(d=1);let p=c.getPointAt(d);if(p===null)return;let f=this.parent?this.parent?.matrixWorld:new Hc;l.updateMatrixWorld();let h=new Hc().multiplyMatrices(f.clone().invert(),l.matrixWorld);p.applyMatrix4(h);let m={position:p.toArray(),rotation:u.rotation};if(s==="tangential"){let y=new Hc().extractRotation(l.matrixWorld),g=c.getTangentAt(d).applyMatrix4(y).add(p),b=new Hc().lookAt(p,g,IC),S=op.setFromEuler(new CC().setFromRotationMatrix(b)).multiplyScalar(Rs.RAD2DEG);m={...m,rotation:S.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(TC)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof Er.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Er.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as EC,ConeGeometry as BC,Float32BufferAttribute as LC,MathUtils as RC}from"three";import{BufferGeometry as n0,CylinderGeometry as NC,Float32BufferAttribute as Wc,MathUtils as DC,Vector2 as Lr,Vector3 as qc}from"three";var i0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=DC.clamp(e.thetaLength,0,360);let r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:u,radiusBottom:c,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,h;return l===0?(h=new n0,h.setAttribute("position",new Wc([],3))):d||f?h=new Vs(u,c,r,o,i,a,s,l*Math.PI/180,d,d,p,f):h=new NC(u,c,r,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function fn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function o0(n){return new Lr(n.y,-n.x)}var Vs=class extends n0{constructor(t,e,r,o,i,a,s,l,u,c,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(u=0,c=0);let h=[],m=[],y=[],g=[],b=0,S=r/2,w=new qc,v=new qc;f&&t==0&&(t=u),f&&e==0&&(e=c);let _=new Lr(t,S),A=new Lr(e,-S),x=null,T=null,C=null,P=null,O=_.clone().sub(A),M=0,I=0,N=0;p>0&&(M=Math.min(t,e)*(1-p),I=t-M,N=e-M);let B=_.clone();B.x-=M;let D=Math.PI-O.angle(),G=O.angle(),L=Math.tan(G/2),V=Math.tan(D/2),z=L+V,F=p?z:V,$=p?z:L;if(u=Math.min(u,(t-I)/F,O.length()/z),c=Math.min(c,(e-N)/$,O.length()/z),u>0){let W=u/L;x=_.clone().sub(new Lr(W,u)),p&&(C=x.clone(),C.x-=M-z*u),_.sub(O.clone().setLength(W))}if(c>0){let W=c/V;T=A.clone().sub(new Lr(W,-c)),A.add(O.clone().setLength(W)),p&&(P=T.clone(),P.x-=M-z*c,B.sub(O.clone().setLength(W)))}O=_.clone().sub(A);let q=O.length()<.5,H=[];for(let W=0;W<=o;W++){let k=[],oe=W/o,ee=oe*l+s,K=new Lr(Math.sin(ee),Math.cos(ee));P&&T?(X(k,oe,K,D,c,P,-1,!0),X(k,oe,K,G,c,T,-1,!1)):T?(j(k,K,T.x,0,-1),X(k,oe,K,G,c,T,-1,!1)):a||j(k,K,e,N,-1);let te=o0(O).normalize();if(fn(te,K,w),!q)for(let Z=0;Z<=i;Z++){let se=Z/i,ne=O.clone().multiplyScalar(se).add(A);fn(ne,K,v),m.push(v.x,v.y,v.z),y.push(w.x,w.y,w.z),g.push(oe,.5+v.y/r),k.push(b++)}if(C&&x?(X(k,oe,K,D,u,x,1,!1),X(k,oe,K,G,u,C,1,!0)):x?(X(k,oe,K,D,u,x,1,!1),j(k,K,x.x,0,1)):a||j(k,K,t,I,1),p&&!q){let Z=o0(O).multiplyScalar(-1).normalize();fn(Z,K,w);for(let se=0;se<=i;se++){let ne=se/i,ie=O.clone().multiplyScalar(-ne).add(B);fn(ie,K,v),m.push(v.x,v.y,v.z),y.push(w.x,w.y,w.z),g.push(oe,.5+v.y/r),k.push(b++)}}p&&!a&&k.push(k[0]),H.push(k)}for(let W=0;W<H.length-1;W++)for(let k=0;k<H[0].length-1;k++){if(a&&p&&k==i)continue;let oe=H[W][k],ee=H[W+1][k],K=H[W+1][k+1],te=H[W][k+1],Z=m[K*3+0],se=m[K*3+2];h.push(oe,ee,te),(Z!=0||se!=0)&&h.push(ee,K,te)}l<Math.PI*2&&(Y(-1,H[0],s),Y(1,H[H.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new Wc(m,3)),this.setAttribute("normal",new Wc(y,3)),this.setAttribute("uv",new Wc(g,2));function X(W,k,oe,ee,K,te,Z,se){for(let ne=0;ne<d+1;ne++){let ie=ne/d,de=Z<0?ie:1-ie;se&&(de-=1),de*=ee;let le=new Lr(Math.sin(de),Math.cos(de)*Z),pe=le.clone().multiplyScalar(K).add(te);fn(pe,oe,v),m.push(v.x,v.y,v.z),fn(le,oe,w),y.push(w.x,w.y,w.z),g.push(k,.5+v.y/r),W.push(b++)}}function j(W,k,oe,ee,K){let te=new qc,Z=new Lr,se=[oe,ee];K<0&&se.reverse();for(let ne of se)Z.set(ne,S*K),fn(Z,k,te),m.push(te.x,te.y,te.z),y.push(0,K,0),g.push(.5,.5),W.push(b++)}function Y(W,k,oe){let ee=new Lr(Math.sin(oe),Math.cos(oe)),K=new Lr(-Math.cos(oe),Math.sin(oe)),te=new qc,Z=W<0?(ie,de,le)=>h.push(ie,de,le):(ie,de,le)=>h.push(ie,le,de),se=new Lr((t+e+I+N)/4,0);fn(se,ee,te),m.push(te.x,te.y,te.z),y.push(K.x,0,K.y),g.push(.5,.5);let ne=b++;for(let ie of k){let de=m.slice(ie*3,ie*3+3);m.push(...de),y.push(K.x,0,K.y);let le=g.slice(ie*2,ie*2+2);g.push(...le),b++}for(let ie=ne+1;ie<b-1;ie++)Z(ne,ie,ie+1);Z(ne,b-1,ne+1)}}};var a0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=RC.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:u,cornerRadiusBottom:c,cornerSegments:d}=n.parameters,p;return l===0?(p=new EC,p.setAttribute("position",new LC([],3))):u>0||c>0||l<360?p=new Vs(0,t/2,r,o,i,a,s,l*Math.PI/180,u,c,d,0,!0):p=new BC(t/2,r,o,i,a),p.scale(1,1,e/t),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as VC,BufferGeometry as zC,Float32BufferAttribute as np,Vector3 as zs}from"three";var s0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,u;return s==0?u=new VC(t,e,r,o,i,a):u=new ap(t,e,r,o,i,a,s,l),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},ip=Math.PI/2,ap=class extends zC{constructor(t=1,e=1,r=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],d=[],p=[],f=[],h=0,m=0;y("z","y","x",-1,-1,r,e,t,a,i,0),y("z","y","x",1,-1,r,e,-t,a,i,1),y("x","z","y",1,1,t,r,e,o,a,2),y("x","z","y",1,-1,t,r,-e,o,a,3),y("x","y","z",1,-1,t,e,r,o,i,4),y("x","y","z",-1,-1,t,e,-r,o,i,5),s>0&&(g("z","y","x",-1,-1,1,r,e,t,a,0),g("z","y","x",1,-1,-1,r,e,t,a,1),g("z","y","x",-1,1,-1,r,e,t,a,1),g("z","y","x",1,1,1,r,e,t,a,0),g("x","y","z",-1,-1,-1,t,e,r,o,0),g("x","y","z",1,-1,1,t,e,r,o,1),g("x","y","z",-1,1,1,t,e,r,o,0),g("x","y","z",1,1,-1,t,e,r,o,1),g("y","x","z",-1,-1,1,e,t,r,i,0),g("y","x","z",1,-1,-1,e,t,r,i,1),g("y","x","z",1,1,1,e,t,r,i,1),g("y","x","z",-1,1,-1,e,t,r,i,0),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new np(d,3)),this.setAttribute("normal",new np(p,3)),this.setAttribute("uv",new np(f,2));function y(S,w,v,_,A,x,T,C,P,O,M){let I=(x-2*s)/P,N=(T-2*s)/O,B=x/2-s,D=T/2-s,G=C/2,L=P+1,V=O+1,z=0,F=0,$=new zs;for(let q=0;q<V;q++){let H=q*N-D;for(let X=0;X<L;X++){let j=X*I-B;$[S]=j*_,$[w]=H*A,$[v]=G,d.push($.x,$.y,$.z),$[S]=0,$[w]=0,$[v]=C>0?1:-1,p.push($.x,$.y,$.z),f.push(X/P),f.push(1-q/O),z+=1}}for(let q=0;q<O;q++)for(let H=0;H<P;H++){let X=h+H+L*q,j=h+H+L*(q+1),Y=h+(H+1)+L*(q+1),W=h+(H+1)+L*q;c.push(X,j,W),c.push(j,Y,W),F+=6}u.addGroup(m,F,M),m+=F,h+=z}function g(S,w,v,_,A,x,T,C,P,O,M){let I=(T-2*s)/O,N=T/2-s,B=C/2-s,D=P/2,G=O+1,L=0,V=0,z=new zs,F=new zs;for(let $=0;$<l+1;$++){let q=$/l*ip,H=Math.sin(q)*s,X=(1-Math.cos(q))*s,j=Math.sin(q),Y=Math.cos(q);z[w]=(B+H)*A,z[v]=(D-X)*x,F[S]=0,F[w]=j*Math.sign(z[w]),F[v]=Y*Math.sign(z[v]);for(let W=0;W<G;W++){let k=W*I-N;z[S]=k*_,d.push(z.x,z.y,z.z),p.push(F.x,F.y,F.z),f.push(W/O),f.push(0),L+=1}}for(let $=0;$<l;$++)for(let q=0;q<O;q++){let H=h+q+G*$,X=h+q+G*($+1),j=h+(q+1)+G*($+1),Y=h+(q+1)+G*$;c.push(H,X,Y),c.push(X,j,Y),V+=6}u.addGroup(m,V,M),m+=V,h+=L}function b(S,w,v){let _=new zs,A=new zs(t/2,e/2,r/2);A.subScalar(s);let x=[],T=S*w*v>0?(P,O,M)=>c.push(P,O,M):(P,O,M)=>c.push(P,M,O);for(let P=0;P<=l;P++){let O=[],M=ip*(1-P/l),I=Math.cos(M),N=Math.sin(M),B=0;for(let D=0;D<=P;D++){let G=Math.cos(B),L=Math.sin(B);_.x=I*G,_.y=N,_.z=I*L;let V=A.clone().addScaledVector(_,s);d.push(S*V.x,w*V.y,v*V.z),p.push(S*_.x,w*_.y,v*_.z),f.push(0,0),O.push(h++),B+=ip/P}x.push(O)}let C=x.length-1;for(let P=0;P<C;P++){let O=x[P],M=x[P+1],I=O.length-1;T(O[0],M[1],M[0]);for(let N=1;N<=I;N++)T(O[N-1],O[N],M[N]),T(O[N],M[N+1],M[N])}}}};import{BufferGeometry as GC,Float32BufferAttribute as sp,Triangle as kC,Vector3 as Ro,Vector2 as lp}from"three";var hn=class extends GC{constructor(t=[],e=[],r="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],u=[];c(),d(),this.setAttribute("position",new sp(s,3)),this.setAttribute("normal",new sp(u,3)),this.setAttribute("uv",new sp(l,2));return;function c(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new Ro,m=h.clone(),y=new kC,g=i*o,b=o-g,S=a+1,w=new Ro,v=(L,V)=>w.subVectors(L,V).normalize(),_=(L,V)=>Array(L).fill(void 0).map(V),A=_(t.length/3,(L,V)=>new Ro().fromArray(t,V*3).setLength(o)),x=[],T=1e6;for(let L=0;L<A.length;L++){let V=A[L],z=[],F,$,q,H=1e10,X=-1;for(;(X=e.indexOf(L,X+1))!=-1;){let k=X-X%3;F=e[k+(X+1)%3],$=e[k+(X+2)%3],q=V.distanceToSquared(A[F]),H=Math.min(H,q),z.push([F,$,q])}H+=1e-6;let j=[],Y=0,W=z.length;for(let k=0;k<W;k++){[F,$,q]=z[Y];let oe=x[F]?.includes(L)==!0;q<=H&&j.push(F+ +oe*T),Y=z.findIndex(ee=>ee[0]==$)}x.push(j)}let C=[];{let L=0,V=0,z,F,$=f==3;for(let q=0;q<=a;q++){z=q*(q+1)/2,F=(q+1)*(q+2)/2;for(let H=0;H<a-q;H++)[L,V]=[z+H+q+2,F+H+q+3],C.push(z,F,...$?[V,z]:[L,F],V,L),[z,F]=[L,V];C.push(z,F,z+a+2)}}let P=h.clone(),O=h.clone(),M=h.clone(),I=h.clone(),N=h.clone(),B=[],D=_(A.length,()=>_(f,()=>h.clone()));for(let L=0;L<A.length;L++){h.copy(A[L]).normalize(),P.copy(h).multiplyScalar(b);let V=x[L];for(let j=0;j<V.length;j++){let Y=V[j],W=V[(j+1)%f];y.setFromPointsAndIndices(A,L,Y%T,W%T),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(P,D[L][j])}let z=[],F=[],$=[],q=new Ro;a==0&&[...D[L]].reduce((j,Y)=>j.add(Y),q).multiplyScalar(1/f);for(let j=0;j<f;j++){let Y=[],W=(j-1+f)%f,k=D[L][W],oe=D[L][j];h.copy(k).sub(P),m.copy(oe).sub(P);let ee=P.angleTo(h),K=h.angleTo(m),te=Math.cos(ee)*g;a==0?O.copy(q):O.copy(P).setLength(b+te),F.push(te);let Z=[O,k,oe];for(let se=0;se<2;se++){let ne=Z[se],ie=Z[se+1];I.subVectors(ne,P),N.subVectors(ie,P),M.crossVectors(I,N).normalize();for(let de=0;de<S;de++){let le=[ee,K][se]*de/S;h.copy(I).applyAxisAngle(M,le).add(P),z.push(h.clone()),se&&(v(h,P),Y.push([de==0?ne:h.clone(),w.clone()]))}se&&(v(ie,P),Y.push([ie,w.clone()]))}$.push(Y)}B.push($);let H=2*S,X=2;for(let j=0;j<f;j++){let Y=H*j,W=H*((j+1)%f),k=[z[Y]];for(let ee=1;ee<S;ee++){I=z[Y+ee],N=z[W+ee],k.push(I);for(let K=1,te=ee-X+1;K<=te;K++)h.lerpVectors(I,N,K/(te+1)),h.sub(P).setLength(F[j]).add(P),k.push(h.clone());k.push(N)}for(let ee=0;ee<S;ee++)k.push(z[ee+S+Y]);k.push(z[W+S]);let oe=C.map(ee=>k[ee]);s.push(...oe.map(ee=>[ee.x,ee.y,ee.z]).flat()),u.push(...oe.map(ee=>(v(ee,P),[w.x,w.y,w.z])).flat())}}let G=[];for(let L=0;L<x.length;L++)for(let V=0;V<f;V++){let z=x[L][V];if(z<T){let F=x[z].findIndex(H=>H%T==L),$=B[L][V],q=B[z][F];for(let H=0;H<S;H++){let X=$[H],j=q[S-H],Y=$[H+1],W=q[S-(H+1)];[X,j,Y,Y,j,W].forEach(k=>{s.push(k[0].x,k[0].y,k[0].z),u.push(k[1].x,k[1].y,k[1].z)})}G.push($[0][0],q[S][0],$[S][0],q[0][0])}}for(;G.length;){let L,V,z,F;[L,V]=G.splice(0,2);let $=[L];for(;L!=V;)$.push(V),z=G.indexOf(V),F=z%2,V=G.splice(z-F,2)[1-F];w.subVectors($[0],$[1]).cross(h.subVectors($[0],$[2])).normalize();let q=w.dot($[0])<0;q&&w.negate();for(let H=1;H<=$.length-2;H++)[$[H+ +q],$[H+1-+q],$[0]].forEach(X=>{s.push(X.x,X.y,X.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new Ro;for(let A=0;A<s.length;A+=3){p.x=s[A+0],p.y=s[A+1],p.z=s[A+2];let x=v(p)/2/Math.PI+.5,T=_(p)/Math.PI+.5;l.push(x,1-T)}let f=new Ro,h=new Ro,m=new Ro,y=new Ro,g=new lp,b=new lp,S=new lp,w=(A,x,T,C)=>{C<0&&A.x===1&&(l[x]=A.x-1),T.x===0&&T.z===0&&(l[x]=C/2/Math.PI+.5)};for(let A=0,x=0;A<s.length;A+=9,x+=6){f.set(s[A+0],s[A+1],s[A+2]),h.set(s[A+3],s[A+4],s[A+5]),m.set(s[A+6],s[A+7],s[A+8]),g.set(l[x+0],l[x+1]),b.set(l[x+2],l[x+3]),S.set(l[x+4],l[x+5]),y.copy(f).add(h).add(m).divideScalar(3);let T=v(y);w(g,x+0,f,T),w(b,x+2,h,T),w(S,x+4,m,T)}for(let A=0;A<l.length;A+=6){let x=l[A+0],T=l[A+2],C=l[A+4],P=Math.max(x,T,C),O=Math.min(x,T,C);P>.9&&O<.1&&(x<.2&&(l[A+0]+=1),T<.2&&(l[A+2]+=1),C<.2&&(l[A+4]+=1))}function v(A){return Math.atan2(A.z,-A.x)}function _(A){return Math.atan2(-A.y,Math.sqrt(A.x*A.x+A.z*A.z))}}}static fromJSON(t){return new hn(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as FC}from"three";var l0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Gs(t*.5,i,a):new FC(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},Gs=class extends hn{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,t,e,r),this.type=l}static fromJSON(t){return new Gs(t.radius,t.corner,t.cornerSides)}};import{Plane as ZC,Shape as _0,Vector2 as Vo,Vector3 as JC,MathUtils as mp,LineCurve as yp,QuadraticBezierCurve as A0,CubicBezierCurve as Qc}from"three";import{CubicBezierCurve as $c,EllipseCurve as jC,LineCurve as Yc,LineCurve3 as UC,MathUtils as HC,QuadraticBezierCurve as up,SplineCurve as qC,Vector2 as Gt,Vector3 as d0}from"three";var ks=1e-12,la=class{constructor(t){this.position=new Gt;this.startPosition=new Gt;this.uuid=HC.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new la(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ca=class extends la{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ca(this.parent).copy(this)}},Rr=class extends la{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ca(this),new ca(this))}static create(e,r){let o=new Rr(e,new Gt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Rr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new Gt,r=new Gt){let[o,i]=this.computeTangents();return o&&i&&(c0(o,e),c0(i,r)),[e,r]}computeTangent(e=new Gt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new Gt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function c0(n,t=new Gt){let e=n.length();return t.set(-n.y/e,n.x/e)}var dp=n=>n,ua=new Gt,Xc=new Gt,WC=new Gt,$C=new Gt,YC=new Gt,XC=new Gt,p0=new d0,f0=new d0;function h0(n){let t=new Gt;t.addVectors(n.v0,ua.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Gt;return e.addVectors(n.v2,Xc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new $c(n.v0,t,e,n.v2)}function Fs(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function QC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function KC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function pp(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+r*r-i*i)/(2*o*r))}function m0(n,t,e){return u0(n,t)&&u0(t,e)&&cp(n.position,t.position,e.position)}function cp(n,t,e){return ua.copy(t).sub(n).cross(Xc.copy(e).sub(n))===0}function y0(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),a=(n.y+t.y)/2,s=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(s+l,a+u),o.set(s-l,a-u),[r,o]}function g0(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function x0(n,t,e,r,o,i){let a=t.x-n.x,s=t.y-n.y,l=e.x-n.x,u=e.y-n.y,c=Math.sqrt((a+l)*(a+l)+(s+u)*(s+u)),d;return pp(t,n,e)>Math.PI&&(c*=-1),Fs(u,s)?d=(s+u)*(r/c-.5)*8/3/(a-l):d=(a+l)*(r/c-.5)*8/3/(u-s),o.set(t.x-d*s,t.y+d*a),i.set(e.x+d*u,e.y-d*l),[o,i]}function fp(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function u0(n,t){return cp(n.position,n.controls[1].position,t.position)&&cp(n.position,t.controls[0].position,t.position)}function b0(n,t,e,r,o=.5){let i=ua.subVectors(t,n).multiplyScalar(o).add(n),a=Xc.subVectors(e,t).multiplyScalar(o).add(t),s=WC.subVectors(r,e).multiplyScalar(o).add(e),l=i,u=$C.subVectors(a,i).multiplyScalar(o).add(i),c=YC.subVectors(s,a).multiplyScalar(o).add(a),d=s,p=XC.subVectors(c,u).multiplyScalar(o).add(u);return[n.x,n.y,l.x,l.y,u.x,u.y,p.x,p.y,c.x,c.y,d.x,d.y,r.x,r.y]}function v0(n,t,e=12,r=!0){let o=f0.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let u=dp(t[l]),c=ua,d=mn(u,e);s.push(d);for(let p=0;p<=d;p++)if(u instanceof $c||u instanceof up||u instanceof Yc){if(u.getPoint(p/d,c),o.set(c.x,c.y,0),i!==void 0&&KC(i,o))continue;i===void 0&&(i=p0),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return r&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function S0(n,t,e,r=12,o=!0){let i=f0.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let u,c=dp(t[l]),d=ua,p=mn(c,r);s.push(p);for(let f=0;f<=p;f++)if(c instanceof $c||c instanceof up||c instanceof Yc){if(c.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=p0:(n.setXYZ(a,u.x,u.y,u.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),u.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function hp(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=mn(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=mn(a.curveAfter,t)),r.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=mn(n[0].roundedCurveCorner,t)*.5),r}function mn(n,t=12){return n&&n instanceof jC?t*2:n&&(n instanceof Yc||n instanceof UC)?1:n&&n instanceof qC?t*n.points.length:t}function w0(n,t,e=12,r=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=dp(t[a]),l=mn(s,e),u=ua;for(let c=0;c<=l;c++)if(s instanceof $c||s instanceof up||s instanceof Yc){if(s.getPoint(c/l,u),o!==void 0&&QC(o,u,ks))continue;o===void 0&&(o=Xc),o.copy(u),n.push(u.x,u.y),i++}}return Fs(n[0],n[n.length-2],ks)&&Fs(n[1],n[n.length-1],ks)&&(n.pop(),n.pop()),r&&i>1&&!(Fs(n[i-1],n[1],ks)&&Fs(n[i-2],n[0],ks))&&(n.push(n[0],n[1]),i++),n}var gp=new Vo,eT=new Vo,tT=new Vo,rT=new Vo,oT=new Vo,nT=new Vo,Le=class extends _0{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new ZC(new JC(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=mp.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Le;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Rr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Le.createFromState(a)),r!==void 0&&o!==void 0&&i.applySize(r,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],u=l.points.length,c=l.getPointIndexById(e);if(c<0)i+=u;else return c+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let r=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=gp.set(e,r);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,r);this._update()}createPoint(e,r=0,o=mp.generateUUID()){let i;e instanceof Vo?i=e:i=new Vo(e,r);let a=new Rr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return v0(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=hp(this.points,e,!1),this.roundedCurveDivisions=hp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return S0(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),w0(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=mn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,u)=>l+u,0));for(let l=0,u=i.length;l<u;l++){let c=i[l];if(s<o+c)return[l,(s-o+1)/c];o+=c}return[0,1]}getCurveT(e,r,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(fp(i,a)){let d=i.position.distanceTo(a.position);return i.position.distanceTo(gp.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=s[d];return(r-u)/l}dispose(){}_applyCurveForPoint(e,r){fp(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(r===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,i=this.points.length;o<i;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],u=a.roundness,c=s&&l&&m0(s,a,l);if(!a.controlsMoved()&&u>0&&!c){let d=a.curveBefore,p=a.curveAfter;if(d===void 0||p===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=d.getLength(),y=p.getLength(),g=Math.min(u,m*.499),b=Math.min(u,y*.499),S=Math.min(g,b),w=1-S/m,v=S/y,_=d.getPointAt(w,gp),A=p.getPointAt(v,eT);this._subSplitCurve(d,f,w,_,void 0),this._subSplitCurve(p,h,v,void 0,A);let x;if(this.useCubicForRoundedCorners){let T=pp(_,a.position,A)/2,C=Math.tan(T)*_.distanceTo(a.position),[P,O]=y0(_,A,C,tT,rT),M=g0(P,O,a.position),[I,N]=x0(M,_,A,C,oT,nT);x=new Qc(_.clone(),I.clone(),N.clone(),A.clone())}else x=new A0(_.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+r,0,x),r++}}}}_subSplitCurve(e,r,o,i,a){if(e instanceof yp)i!==void 0&&r.v2.copy(i),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,u=s.getUtoTmapping(o,0),c=b0(s.v0,s.v1,s.v2,s.v3,u);return i!==void 0&&(l.v0.set(c[0],c[1]),l.v1.set(c[2],c[3]),l.v2.set(c[4],c[5]),l.v3.set(c[6],c[7])),a!==void 0&&(l.v0.set(c[6],c[7]),l.v1.set(c[8],c[9]),l.v2.set(c[10],c[11]),l.v3.set(c[12],c[13])),l}return r}clone(){let e=new Le(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],u=e.points[i+3],c=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Rr(mp.generateUUID(),new Vo(a,s));f.controls[0].position.set(l,u),f.controls[1].position.set(c,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Le;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof Qc&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,u;for(l=0,u=a.length;l<u;l++)a[l]instanceof A0&&(a[l]=h0(a[l]));for(l=0,u=a.length;l<u;l++){let p=a[l],f=l>0?a[l-1]:null,h;p instanceof Qc?(h=this.createPoint(p.v0),h.controls[1].position.copy(p.v1)):p instanceof yp&&(h=this.createPoint(p.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let c=a[a.length-1],d=!1;return c instanceof Qc?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),d=!0):c instanceof yp&&c.v2.equals(s[0].position)&&(d=!0),this.isClosed=d,s};return this.points=i(e.curves),e instanceof _0&&(this.shapeHoles=e.holes.map(a=>{let s=new Le;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let i=this.getPointByUuid(e)?.controls[0];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let i=this.getPointByUuid(e)?.controls[1];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}};var bp=Math.PI*2;function xp({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function iT(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),a=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function P0(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function aT(n,t,e,r,o,i,a,s,l,u){let c=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),h=c*d-c*f-d*p;h<0&&(h=0),h/=c*f+d*p,h=Math.sqrt(h)*(l===u?-1:1);let m=h*o/i*s,y=h*-i/o*a,g=m+(n+e)/2,b=y+(t+r)/2,S=(a-m)/o,w=(s-y)/i,v=(-a-m)/o,_=(-s-y)/i,A=P0(1,0,S,w),x=P0(S,w,v,_);return!u&&x>0&&(x-=bp),u&&x<0&&(x+=bp),{centerx:g,centery:b,ang1:A,ang2:x}}function O0({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let u=(n-e)/2,c=(t-r)/2;if(u===0&&c===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(c,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=aT(n,t,e,r,o,i,u,c,a,s),{ang1:f,ang2:h}=p,{centerx:m,centery:y}=p,g=Math.abs(h)/(bp/4);Math.abs(1-g)<1e-7&&(g=1);let b=Math.max(Math.ceil(g),1);h/=b;for(let S=0;S<b;S++)l.push(iT(f,h)),f+=h;return l.map(S=>{let{x:w,y:v}=xp(S[0],o,i,m,y),{x:_,y:A}=xp(S[1],o,i,m,y),{x,y:T}=xp(S[2],o,i,m,y);return{x1:w,y1:v,x2:_,y2:A,x,y:T}})}import{BufferAttribute as tu,BufferGeometry as xT}from"three";var Ie;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ie||(Ie={}));var tt;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(tt||(tt={}));function ye(n,t){if(!n)throw t||"Assertion Failed!"}var fe=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ye(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){ye(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){ye(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){ye(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var a,s,l;n.vertLeq(t,e)||(l=t,t=e,e=l),n.vertLeq(r,o)||(l=r,r=o,o=l),n.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.vertLeq(r,e)?n.vertLeq(e,o)?(a=n.edgeEval(t,r,e),s=n.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,e.s)):(a=n.edgeSign(t,r,e),s=-n.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(l=t,t=e,e=l),n.transLeq(r,o)||(l=r,r=o,o=l),n.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.transLeq(r,e)?n.transLeq(e,o)?(a=n.transEval(t,r,e),s=n.transEval(r,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,e.t)):(a=n.transSign(t,r,e),s=-n.transSign(t,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,o.t)):i.t=(r.t+e.t)/2},n}(),js=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Kc=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}(),da=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),C0=function(){function n(){var t=new da,e=new js,r=new Kc(0),o=new Kc(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 Kc(0),r=new Kc(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;ye(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ye(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var t=new da,e=new da,r=new js,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 da;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var a=new js;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new js;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 da;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var a=new js;this.makeFace_(a,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=t&&fe.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&fe.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,a,s,l,u;for(i=t,i=t;(o=i.next)!==t;i=o){ye(o.prev===i),l=o.anEdge;do ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l),ye(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(ye(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){ye(a.prev===s),l=a.anEdge;do ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l),ye(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(ye(a.prev===s&&a.anEdge===null),u=r,u=r;(l=u.next)!==r;u=l)ye(l.Sym.next===u.Sym),ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Org!==null),ye(l.Dst!==null),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l);ye(l.Sym.next===u.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),T0=function(){function n(){this.handle=null}return n}(),M0=function(){function n(){this.key=null,this.node=0}return n}(),sT=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new T0,this.handles[r]=new M0;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,ye(a<=this.max),i=e[a].handle,a>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t>>1,i=e[a].handle,a===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new T0;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new M0}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;ye(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),vp=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),I0=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),lT=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new I0,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new I0;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),cT=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,a=r.eUp;if(i.Dst===o)return a.Dst===o?fe.vertLeq(i.Org,a.Org)?fe.edgeSign(a.Dst,i.Org,a.Org)<=0:fe.edgeSign(i.Dst,a.Org,i.Org)>=0:fe.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return fe.edgeSign(i.Dst,o,i.Org)>=0;var s=fe.edgeEval(i.Dst,o,i.Org),l=fe.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&ye(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ye(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new vp;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Ie.ODD:return(e&1)!==0;case Ie.NONZERO:return e!==0;case Ie.POSITIVE:return e>0;case Ie.NEGATIVE:return e<0;case Ie.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),n.finishRegion(t,a),s=i.eUp,a=i}return s},n.addRightEdges=function(t,e,r,o,i,a){var s,l,u,c,d=!0;u=r;do ye(fe.vertLeq(u.Org,u.Dst)),n.addRegionBelow(t,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,c=i;s=n.regionBelow(l),u=s.eUp.Sym,u.Org===c.Org;)u.Onext!==c&&(t.mesh.splice(u.Oprev,u),t.mesh.splice(c.Oprev,u)),s.windingNumber=l.windingNumber-u.winding,s.inside=n.isWindingInside(t,s.windingNumber),l.dirty=!0,!d&&n.checkForRightSplice(t,l)&&(n.addWinding(u,c),n.deleteRegion(t,l),t.mesh.delete(c)),d=!1,l=s,c=u;l.dirty=!0,ye(l.windingNumber-u.winding===s.windingNumber),a&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=fe.vertL1dist(e,t),i=fe.vertL1dist(r,t),a=.5*i/(o+i),s=.5*o/(o+i);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(fe.vertLeq(o.Org,i.Org)){if(fe.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;fe.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(fe.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a;if(ye(!fe.vertEq(o.Dst,i.Dst)),fe.vertLeq(o.Dst,i.Dst)){if(fe.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(fe.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,a=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a=o.Org,s=i.Org,l=o.Dst,u=i.Dst,c,d,p=new da,f,h;if(ye(!fe.vertEq(u,l)),ye(fe.edgeSign(l,t.event,a)<=0),ye(fe.edgeSign(u,t.event,s)>=0),ye(a!==t.event&&s!==t.event),ye(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(c=Math.min(a.t,l.t),d=Math.max(s.t,u.t),c>d))return!1;if(fe.vertLeq(a,s)){if(fe.edgeSign(u,a,s)>0)return!1}else if(fe.edgeSign(l,s,a)<0)return!1;return n.debugEvent(t),fe.intersect(l,a,u,s,p),ye(Math.min(a.t,l.t)<=p.t),ye(p.t<=Math.max(s.t,u.t)),ye(Math.min(u.s,l.s)<=p.s),ye(p.s<=Math.max(s.s,a.s)),fe.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.event.t),f=fe.vertLeq(a,s)?a:s,fe.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),fe.vertEq(p,a)||fe.vertEq(p,s)?(n.checkForRightSplice(t,e),!1):!fe.vertEq(l,t.event)&&fe.edgeSign(l,t.event,p)>=0||!fe.vertEq(u,t.event)&&fe.edgeSign(u,t.event,p)<=0?u===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),h=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,h,!0),!0):(fe.edgeSign(l,t.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),fe.edgeSign(u,t.event,p)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,a,l,s,u),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,u=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(t,e),fe.vertEq(s.Org,t.event)&&(t.mesh.splice(i.Oprev,s),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),a),u=!0),fe.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,a,null),u=!0),u){n.addRightEdges(t,e,r.Onext,i,i,!0);return}fe.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,a,s,l;if(o=e.eUp,fe.vertEq(o.Org,r)){ye(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!fe.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}ye(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(ye(i!==a),n.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(r.anEdge,a),fe.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,a,s,l,u=new vp;if(u.eUp=e.anEdge.Sym,r=t.dict.search(u).key,o=n.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,fe.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=fe.vertLeq(s.Dst,a.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var c=t.mesh.connect(s.Dnext,e.anEdge);l=c.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,l):n.computeWinding(t,n.addRegionBelow(t,r,l)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);ye(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(t,i,null);s.Onext===a?n.connectRightVertex(t,o,s):n.addRightEdges(t,o,s.Onext,a,a,!0)},n.addSentinel=function(t,e,r,o){var i=new vp,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new lT(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,a=t.bmin[1]-r,s=t.bmax[1]+r;n.addSentinel(t,o,i,a),n.addSentinel(t,o,i,s)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ye(e.fixUpperEdge),ye(++r===1)),ye(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,fe.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new sT(i,fe.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,ye(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!fe.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),uT=function(){function n(){this.mesh=new C0,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ie.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,a,s,l=[0,0,0],u=[0,0,0],c=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,h[y]=e,l[y]=i,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,h[g]=e),i>l[g]&&(l[g]=i,f[g]=e);var b=0;if(l[1]-u[1]>l[0]-u[0]&&(b=1),l[2]-u[2]>l[b]-u[b]&&(b=2),u[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[b],o=f[b],c[0]=r.coords[0]-o.coords[0],c[1]=r.coords[1]-o.coords[1],c[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=c[1]*d[2]-c[2]*d[1],p[1]=c[2]*d[0]-c[0]*d[2],p[2]=c[0]*d[1]-c[1]*d[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,t[0]=p[0],t[1]=p[1],t[2]=p[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(c)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,u=t.next;u!==t;u=u.next)l?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,l=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;fe.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;fe.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(fe.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(fe.edgeGoesLeft(o.Lnext)||fe.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(fe.edgeGoesRight(r.Lprev)||fe.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var u=t.vHead.next;u!==t.vHead;u=u.next)u.n=-1;for(var c=t.fHead.next;c!==t.fHead;c=c.next)if(c.n=-1,!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;u.n===-1&&(u.n=s,s++),l++,i=i.Lnext}while(i!==c.anEdge);if(l>r)throw"Face vertex greater that support polygon";c.n=a,++a}this.elementCount=a,e===tt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var u=t.vHead.next;u!==t.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,c=t.fHead.next;c!==t.fHead;c=c.next)if(!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;this.elements[p++]=u.n,l++,i=i.Lnext}while(i!==c.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-1;if(e===tt.CONNECTED_POLYGONS){i=c.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==c.anEdge);for(var h=l;h<r;++h)this.elements[p++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,u=0,c=0;i=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[c++]=i,this.elements[c++]=a,i+=a}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new C0),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,a){if(t===void 0&&(t=Ie.ODD),e===void 0&&(e=tt.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),cT.computeInterior(this,a);var s=this.mesh;return e===tt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===tt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},n}();function Vr(n){var t=n.windingRule,e=t===void 0?Ie.ODD:t,r=n.elementType,o=r===void 0?tt.POLYGONS:r,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,u=n.normal,c=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,h=f===void 0?!0:f,m=n.debug,y=m===void 0?!1:m;if(!p&&h)throw new Error("Contours can't be empty");if(!!p){var g=new uT;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var b=0;b<p.length;b++)g.addContour(l||2,p[b]);return g.tesselate(e,o,a,l,c,h),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var Rq=Ie.ODD,Vq=Ie.NONZERO,zq=Ie.POSITIVE,Gq=Ie.NEGATIVE,kq=Ie.ABS_GEQ_TWO,Fq=tt.POLYGONS,jq=tt.CONNECTED_POLYGONS,Uq=tt.BOUNDARY_CONTOURS;import{Box2 as mT,BufferAttribute as eu,BufferGeometry as yT,Vector2 as gT}from"three";var Zc=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*Zc.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*Zc.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*t);a+=3*t;let l=new Float32Array(o,a*i,3*t);a+=3*t;let u=new Float32Array(o,a*i,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),u.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),u.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=u,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Us=Zc;Us.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var B0=Ft(E0()),Hs={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Pp={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Op={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Ap=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),gn=class extends yT{constructor(e,r,o=0,i=12,a=3,s=Ie.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=i,this._bevelSegmentsInput=a;let u=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(P=>{let O=P.extractShapePointsToFlatArray([],i),M=[];for(let I=O.length-1;I>=1;I-=2){let N=O[I-1],B=O[I-0];M.push(N,B)}return M}),d=[],p=[];for(let P=0;P<u.length;P+=2)p.push([u[P],u[P+1]]);d.push(p);for(let P=0;P<c.length;P++){let O=c[P],M=[];for(let I=0;I<O.length;I+=2)M.push([O[I],O[I+1]]);d.push(M)}let f;e.isText?f=new mT().setFromPoints(e.points.map(O=>O.position)).getSize(new gT).length()*.1:d[0].length===0?f=o:f=(0,B0.default)(d).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=Vr({windingRule:s,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[u]})}catch{h=Hs}let m;try{m=Vr({windingRule:Ie.ODD,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]})}catch{m=Pp}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let P=0;P<m.elements.length;P++){let O=m.elements[P],M=P%2===0?h.vertexCount:0;h.elements.push(O+M)}for(let P=0;P<m.vertexIndices.length;P++){let O=m.vertexIndices[P],M=h.vertexCount;h.vertexIndices.push(O+M)}for(let P=0;P<m.vertices.length;P++){let O=m.vertices[P];h.vertices.push(O)}}let g=1/0,b=-1/0,S=1/0,w=-1/0;for(let P=0,O=h.vertexCount;P<O;P++){let M=P*2,I=h.vertices[M+0],N=h.vertices[M+1];I<g&&(g=I),I>b&&(b=I),N<S&&(S=N),N>w&&(w=N)}this._minX=g,this._minY=S,this._width=b-g,this._height=w-S,this._buffer=new Us(this._computeBufferEstimatedSize(h));let v=[],_=[];for(let P=h.elementCount-1;P>=0;P--){let O=P>=y,M=P*2,I=h.elements[M+0],N=h.elements[M+1],B=I+N,D={start:I,count:N,normals:[],continuous:[],concave:[]},G=I,L=B-1,V=I+1,z=this._shape.roundedCurves.length;do{let X=G-I,j=h.vertices[L*2+0],Y=h.vertices[L*2+1],W=h.vertices[G*2+0],k=h.vertices[G*2+1],oe=h.vertices[V*2+0],ee=h.vertices[V*2+1],K=W-j,te=k-Y,Z=Math.sqrt(K*K+te*te);K/=Z,te/=Z;let se=W-oe,ne=k-ee,ie=Math.sqrt(se*se+ne*ne);se/=ie,ne/=ie,D.normals[X*2+0]=-ne,D.normals[X*2+1]=se,D.concave[X]=K*ne-te*se>0;let de=h.vertexIndices[G];if(Array.isArray(de))D.continuous[X]=!1;else{let[le,pe]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(pe>0&&pe<1)D.continuous[X]=!0;else{let ge=pe===1?le+1:le-1;ge=(ge+z)%z;let Ne=pe===1?0:1,Xe=this._shape.roundedCurves[le].getTangent(pe),De=this._shape.roundedCurves[ge].getTangent(Ne);D.continuous[X]=Xe.dot(De)>.95}}O&&(D.normals[X*2+0]*=-1,D.normals[X*2+1]*=-1),[L,G,V]=[G,V,V+1],V>=B&&(V-=N)}while(V!==I+1);let F=[];F.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(I*2,B*2),vertexCount:N,vertexIndices:new Array(N).fill(!0).map((X,j)=>[j,j]),elements:[0,N],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(I*2,B*2)});let $=0;for(let X=1;X<=this._bevelSegments;X++){let j=X/this._bevelSegments*Math.PI/2,Y=(1-Math.cos(j))*this._bevel,W=[],k=[],oe=[],ee=[],K=0;for(let Z=0;Z<N;Z++){let se=Z*2,ne=(Z-1+N)%N*2,ie=h.vertices[D.start*2+se+0],de=h.vertices[D.start*2+se+1],le=-D.normals[ne+0]*Y,pe=-D.normals[ne+1]*Y,ge=-D.normals[se+0]*Y,Ne=-D.normals[se+1]*Y;if(D.concave[Z]||!D.concave[Z]&&O){let Xe=Math.atan2(pe,le),De=Math.atan2(Ne,ge);De>Xe&&(De-=Math.PI*2);let je=De-Xe;if(D.continuous[Z]||O){let Yt=Xe+je/2,_e=Math.cos(Yt)*Y,yt=Math.sin(Yt)*Y;W[2*K+0]=ie+_e*(O?-1:1),W[2*K+1]=de+yt*(O?-1:1),ee[K]=Z,K++}else{let Yt=Math.max(1,Math.floor(i/4*Math.abs(je)/Math.PI));for(let _e=0;_e<=Yt;_e++){let yt=Xe+je*(_e/Yt),wt=Math.cos(yt)*Y,hi=Math.sin(yt)*Y;W[2*K+0]=ie+wt,W[2*K+1]=de+hi,ee[K]=Z,K++}}}else W[2*K+0]=ie+le,W[2*K+1]=de+pe,ee[K]=Z,k[Z]=K,K++,W[2*K+0]=ie,W[2*K+1]=de,ee[K]=Z,K++,W[2*K+0]=ie+ge,W[2*K+1]=de+Ne,ee[K]=Z,oe[Z]=K,K++}let te=Vr({windingRule:Ie.POSITIVE,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[W],edgeCreateCallback:Z=>{let ne=Z.Org.idx,ie=ee[ne],de=ee[(ne+1)%ee.length];Z.idx=[ie,de],Z.Sym.idx=[de,ie]},vertexIdCallback:Z=>{let se=Z.Lprev.idx;return[se?se[1]:0,Z.idx?Z.idx[0]:0]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${X}'th loop`);if(!te.vertexCount){let Z=(X-1)/this._bevelSegments*Math.PI/2;$=(1-Math.sin(Z))*this._bevel;break}for(let Z=0;Z<te.vertexIndices.length;Z++){let[se,ne]=te.vertexIndices[Z];if(se===ne)continue;let ie=ne;ne<se&&(ie+=N);for(let de=se;de<ie;de++){let le=de%N,pe=(de+1)%N;if(!D.continuous[le]||!D.continuous[pe]){te.vertexIndices[Z]=[se,le],te.vertexIndices.splice(Z+1,0,[pe,ne]),te.vertices.splice((Z+1)*2,0,te.vertices[Z*2],te.vertices[Z*2+1]);break}}}F.push({bevelI:X,angle:j,size:Y,boundary:te,reverseMap:ee,insetPoints:W})}let q=(X,j,Y)=>{let W=0,k=X.boundary.vertexIndices.length;for(;W<k&&Y(X.boundary.vertexIndices[j]);)j=(j+1)%k,W++;return W},H=v.length;for(let X=1;X<F.length;X++){let j=F[X-1],Y=F[X],W=j.boundary.vertexIndices.length,k=Y.boundary.vertexIndices.length;if(!W||!k)break;let oe=D.concave.length,ee=0,K=Ap(ee,N);for(;!j.boundary.vertexIndices.filter(K).length||!Y.boundary.vertexIndices.filter(K).length;)ee++,K=Ap(ee,N);let te=j.boundary.vertexIndices.findIndex(K),Z=Y.boundary.vertexIndices.findIndex(K);do te=(te+1)%W;while(K(j.boundary.vertexIndices[te]));do Z=(Z+1)%k;while(K(Y.boundary.vertexIndices[Z]));ee=(ee+1)%N;let se=ee,ne=0,ie=this._buildBevelVert(D,j,(te-1+W)%W,void 0,ne),de=this._buildBevelVert(D,Y,(Z-1+k)%k,void 0,ne),le=ie,pe=de,ge,Ne,Xe=!1;do{ne=(ee||oe)/oe,K=Ap(ee,N);let De=q(j,te,K),je=q(Y,Z,K),Yt=Xe;if(Xe=!1,De&&!je){for(let _e=0;_e<De;_e++)ge=this._buildBevelVert(D,j,(te+_e)%W,_e/(De-1),ne),v.push(le.topN,ge.topP,pe.topN),l===!1&&v.push(ge.bottomP,le.bottomN,pe.bottomN),le=ge;Xe=!0}else if(!De&&je)for(let _e=0;_e<je;_e++)Ne=this._buildBevelVert(D,Y,(Z+_e)%k,_e/(je-1),ne),v.push(pe.topN,le.topP,Ne.topP),l===!1&&v.push(le.bottomP,pe.bottomN,Ne.bottomP),pe=Ne;else if(De&&je)if(ge=this._buildBevelVert(D,j,te,0,ne),Ne=this._buildBevelVert(D,Y,Z,0,ne),Yt?(v.push(le.topN,Ne.topP,pe.topN),v.push(le.topN,ge.topP,Ne.topP),l===!1&&(v.push(Ne.bottomP,le.bottomN,pe.bottomN),v.push(Ne.bottomP,ge.bottomP,le.bottomN))):(v.push(pe.topN,le.topN,ge.topP),v.push(pe.topN,ge.topP,Ne.topP),l===!1&&(v.push(ge.bottomP,le.bottomN,pe.bottomN),v.push(ge.bottomP,pe.bottomN,Ne.bottomP))),le=ge,pe=Ne,De===je)for(let _e=1;_e<De;_e++)ge=this._buildBevelVert(D,j,(te+_e)%W,_e/(De-1),ne),Ne=this._buildBevelVert(D,Y,(Z+_e)%k,_e/(je-1),ne),v.push(le.topN,ge.topP,pe.topN),v.push(pe.topN,ge.topP,Ne.topP),l===!1&&(v.push(ge.bottomP,le.bottomN,pe.bottomN),v.push(ge.bottomP,pe.bottomN,Ne.bottomP)),le=ge,pe=Ne;else if(De>je){let _e=De/je,yt=0;for(let wt=1;wt<De;wt++)ge=this._buildBevelVert(D,j,(te+wt)%W,wt/(De-1),ne),v.push(le.topN,ge.topP,pe.topN),l===!1&&v.push(ge.bottomP,le.bottomN,pe.bottomN),le=ge,wt>(yt+1)*_e&&(yt++,Ne=this._buildBevelVert(D,Y,(Z+yt)%k,yt/(je-1),ne),v.push(pe.topN,ge.topP,Ne.topP),l===!1&&v.push(ge.bottomP,pe.bottomN,Ne.bottomP),pe=Ne)}else{let _e=je/De,yt=0;for(let wt=1;wt<je;wt++)Ne=this._buildBevelVert(D,Y,(Z+wt)%k,wt/(je-1),ne),v.push(pe.topN,ge.topP,Ne.topP),l===!1&&v.push(ge.bottomP,pe.bottomN,Ne.bottomP),pe=Ne,wt>(yt+1)*_e&&(yt++,ge=this._buildBevelVert(D,j,(te+yt)%W,yt/(De-1),ne),v.push(le.topN,ge.topP,pe.topN),l===!1&&v.push(ge.bottomP,le.bottomN,pe.bottomN),le=ge)}te=(te+De)%W,Z=(Z+je)%k,ee=(ee+1)%oe}while(ee!==se)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(F,D,v),O){let X=[];for(let j=v.length-1;j>=H+2;j-=3){let Y=v[j-2],W=v[j-1],k=v[j-0];X.push(k,W,Y)}v.splice(H,v.length-H,...X)}if(O){let X=[];for(let j=F[F.length-1].boundary.vertices.length-1;j>=1;j-=2){let Y=F[F.length-1].boundary.vertices[j-1],W=F[F.length-1].boundary.vertices[j-0];X.push(Y,W)}_.push(X)}if(!O){let X=F[F.length-1],j;try{j=Vr({windingRule:F.length>1?Ie.POSITIVE:Ie.ODD,elementType:tt.POLYGONS,vertexSize:2,strict:!0,contours:[X.insetPoints,..._]})}catch{j=Op}if(!j)throw new Error("Error generating geometry for surface");c.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Y=0;Y<j.elementCount*3;Y+=3){let W=this._buildSurfaceVert(j,j.elements[Y+0],$),k=this._buildSurfaceVert(j,j.elements[Y+1],$),oe=this._buildSurfaceVert(j,j.elements[Y+2],$);v.push(W.top,k.top,oe.top),l===!1&&v.push(oe.bottom,k.bottom,W.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new eu(Uint32Array.from(v),1),x=new eu(this._buffer.positions,3),T=new eu(this._buffer.normals,3),C=new eu(this._buffer.uvs,2);x.needsUpdate=!0,T.needsUpdate=!0,C.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",T),this.setAttribute("uv",C),this.setIndex(A)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),u=this._buildBevelVert(r,i,(a+1)%s);o.push(u.topP,l.topN,l.bottomN),o.push(u.topP,l.bottomN,u.bottomP)}}_buildSurfaceVert(e,r,o){let i=r.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,u=(s-this._minY)/this._height;this.forPathBevel&&(u=1);let c=this._buffer.get(this.forPathBevel?1:2),d=c*3,p=c*2,f={top:c+0,bottom:c+1};return this._buffer.positions[d+0]=a,this._buffer.positions[d+1]=s,this._buffer.positions[d+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[d+0]=0,this._buffer.normals[d+1]=0,this._buffer.normals[d+2]=1,this._buffer.uvs[p+0]=l,this._buffer.uvs[p+1]=u,this.forPathBevel===!1&&(this._buffer.positions[d+3]=a,this._buffer.positions[d+4]=s,this._buffer.positions[d+5]=o,this._buffer.normals[d+3]=0,this._buffer.normals[d+4]=0,this._buffer.normals[d+5]=-1,this._buffer.uvs[p+2]=l,this._buffer.uvs[p+3]=u),this.vertexCache[i]=f,f}_buildBevelVert(e,r,o,i=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,u]=r.boundary.vertexIndices[o],c,d,p,f;l!==u?(d=l,c=u,f=!1,p=e.continuous[d]&&e.continuous[c]):(c=l,d=(c-1+e.count)%e.count,f=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,g=c*2,b=d*2,S=r.boundary.vertices[y+0],w=r.boundary.vertices[y+1],v=(1-m)*this._bevel,_=(S-this._minX)/this._width,A=(w-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(_=a),A=1);let x=e.normals[g+0],T=e.normals[g+1],C=e.normals[b+0],P=e.normals[b+1];if(f){let B=C-x,D=P-T;x=x+B*(1-i),T=T+D*(1-i);let G=Math.sqrt(x*x+T*T);x/=G,T/=G}let O=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),M=O*3,I=O*2,N={i:o,fi:c,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1,pathBevelUCoord:a};return this._buffer.positions[M+0]=S,this._buffer.positions[M+1]=w,this._buffer.positions[M+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[M+0]=x*h,this._buffer.normals[M+1]=T*h,this._buffer.normals[M+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[M+3]=S,this._buffer.positions[M+4]=w,this._buffer.positions[M+5]=v,this._buffer.normals[M+3]=x*h,this._buffer.normals[M+4]=T*h,this._buffer.normals[M+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_),p||(this.forPathBevel?(O+=1,M+=3,I+=2):(O+=2,M+=6,I+=4),N.topP=O+0,N.bottomP=O+1,this._buffer.positions[M+0]=S,this._buffer.positions[M+1]=w,this._buffer.positions[M+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[M+0]=C*h,this._buffer.normals[M+1]=P*h,this._buffer.normals[M+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[M+3]=S,this._buffer.positions[M+4]=w,this._buffer.positions[M+5]=v,this._buffer.normals[M+3]=C*h,this._buffer.normals[M+4]=P*h,this._buffer.normals[M+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_)),this.vertexCache[s]=N,N}clone(){let e=new gn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Oo(this.userData),e}};var pa=class extends xT{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ie.ODD;this.elementType=tt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ie.ODD,elementType:tt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,u=!0,c,d;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,g=i[y+0],b=i[y+1];if(c!==void 0&&g!==c&&(l=!1),d!==void 0&&b!==d&&(u=!1),c=g,d=b,!l&&!u)break}if(!l&&!u)try{s=Vr({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=Hs}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new tu(new Float32Array(p*3),3),this._normalAttribute=new tu(new Float32Array(p*3),3),this._uvAttribute=new tu(new Float32Array(p*2),2),this._indexAttribute=new tu(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,g=-1/0;for(let w=0,v=p;w<v;w++){let _=w*2,A=s.vertices[_+0],x=s.vertices[_+1];A<h&&(h=A),A>m&&(m=A),x<y&&(y=x),x>g&&(g=x)}let b=m-h,S=g-y;for(let w=0,v=p;w<v;w++){let _=w*2,A=s.vertices[_+0],x=s.vertices[_+1],T=(A-h)/b,C=(x-y)/S;this._positionAttribute.setXYZ(w,A,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,T,C)}for(let w=0,v=f;w<v;w++){let _=w*3,A=s.elements[_+0],x=s.elements[_+1],T=s.elements[_+2];this._indexAttribute.setX(_+0,A),this._indexAttribute.setX(_+1,x),this._indexAttribute.setX(_+2,T)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new pa(this._shape,this._curveSegments);return e.userData=Oo(this.userData),e}};var fa=class extends gn{constructor(e,r,o=0,i=12,a=3,s=Ie.ODD){super(e,r,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),u=this._buildBevelVert(r,i,(a+1)%s);o.push(u.topP,l.topN,l.bottomN),o.push(u.topP,l.bottomN,u.bottomP)}}clone(){let e=new fa(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Oo(this.userData),e}};var Jt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Ie.ODD},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Le?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new Le(r,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Le(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new pa(n.shape,o,{windingRule:a}):s=new fa(n.shape,t,e,o,r,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as bT,Float32BufferAttribute as vT,MathUtils as Cp,Vector2 as R0}from"three";var V0=Math.PI*2,ma=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=Cp.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,u=n.shape,c=t*.5,d=e*.5,p=ST(u,c,d,o*Math.PI/180,r,i);u.isClosed=!0,u.update();let f;return o===0?(f=new bT,f.setAttribute("position",new vT([],3))):f=Jt.create({shape:u,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function ST(n,t,e,r,o,i){if(r>=V0)return o>30||o%4===0?(_T(n,t,e,i),Math.round(o/4)):L0(n,r,o,t,e,i);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},u=O0({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?wT(n,a.x,a.y,u,o,t,e,i):L0(n,r,o,t,e,i)}function wT(n,t,e,r,o,i,a,s){let l=Math.round(o/r.length);n.addPoint(ha(t,e));for(let u=0,c=r.length;u<c;u++){let d=r[u],p=n.points[u],f=ha(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return s>0?z0(n,i,a,s):n.addPoint(ha(0,0)),l}function L0(n,t,e,r,o,i){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,u=Math.sin(l)*r,c=Math.cos(l)*o;n.addPoint(ha(u,c))}return t<V0?i>0?z0(n,r,o,i):n.addPoint(ha(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&G0(n,r,o,i)),1}function _T(n,t,e,r=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;n.addPoint(ru(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(ru(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(ru(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(ru(o,i-e,o+s,i-e,o-s,i-e)),r>0&&G0(n,t,e,r)}function ha(n,t){return new Rr(Cp.generateUUID(),new R0(n,t))}function ru(n,t,e,r,o,i){let a=ha(n,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,i),a}function z0(n,t,e,r){k0(n,t,e,r).forEach(i=>n.addPoint(i))}function G0(n,t,e,r){let o=k0(n,t,e,r),i=new Le;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function k0(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new R0(o/t,i/e),s=n.points.map(l=>{let u=l.clone();return u.uuid=Cp.generateUUID(),u}).reverse();return s.forEach(l=>{l.position.multiply(a);let u=l.controls[0].position.clone().multiply(a),c=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(c),l.controls[1].position.copy(u)}),s}import{BufferGeometry as AT,Float32BufferAttribute as Tp,Uint32BufferAttribute as PT,Vector3 as F0}from"three";var j0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),a=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:u,cornerRadius:c,cornerSegments:d}=n.parameters,p=new qs(!1,t,e,r,o,i,a,s,l,u,c,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Mp=new PT([0,0,0],1),qs=class extends AT{constructor(t=!0,e=1,r=1,o=1,i=1,a=1,s=1,l=1,u=1,c=1,d=1,p=1){if(super(),a===0)return;let f=t&&a===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let h=()=>new F0,m=new F0,y=h(),g=h(),b=h(),S,w,v,_,A,x,T,C,P=h(),O=h(),M=h(),I=h(),N=h(),B=h(),D=h(),G=h(),L=r-2*l+.001,V=L/a,z=Math.ceil(s*a),F=z+1,$=L/z,q=-L/2,H=c+1,X=2*Math.PI/c,j=Math.PI/2/p,Y=.01,W=Math.min((1-d/100)*l,l-Y),k=l-W,oe=0,ee=2,K=p*ee+ee,te=H*K/ee,Z=te+H*F,se=Math.max(0,H*(F+K)),[ne,ie,de]=[3,3,2].map(ct=>Array(se*ct).fill(0)),le=[],pe=i-l;function ge(ct,ar){let Wr=Math.PI/2;x=ar*$,C=2*Math.PI*(x%V)/V+Wr,x+=q,T=Math.sin(C)*pe,A=Math.cos(C)*pe,t?ct.set(A,T,x):ct.set(A,x,T)}ge(m,-1e-10),ge(y,0),P.copy(m),ge(m,1);let Ne=m.distanceTo(y),Xe=f?0:k+W,De=Ne*z+2*Xe,je=W,Yt=De-Xe;for(let ct=0;ct<=z;ct++){ge(g,ct),G.subVectors(g,P).normalize(),P.copy(g),B.copy(g).setComponent(+t+1,0).normalize(),D.crossVectors(G,B).normalize();let ar=ct===0,Wr=ct===z,LS=ar?3*Math.PI/2:j,RS=ar?je:Yt,VS=ar?H:Z,zS=ar?0:se-H,GS=G.clone().multiplyScalar(ar?-k:k).add(g),kS=G.clone().multiplyScalar(ar?-1:1).normalize();for(let So=0;So<H;So++){let ph=So*X;if(O.addVectors(m.copy(B).multiplyScalar(l*Math.cos(ph)),y.copy(D).multiplyScalar(l*Math.sin(ph))),M.copy(O).normalize(),ar||Wr){f||(oe=zS+So,[0,1,2].forEach(Xt=>{ne[oe*3+Xt]=GS.getComponent(Xt),ie[oe*3+Xt]=kS.getComponent(Xt)}),de[oe*2]=+Wr,de[oe*2+1]=So/c),y.copy(M).multiplyScalar(W),b.addVectors(g,y);for(let Xt=0;Xt<p;Xt++){let sd=Xt*j+LS;I.addVectors(m.copy(G).multiplyScalar(k*Math.sin(sd)),y.copy(M).multiplyScalar(k*Math.cos(sd))),N.copy(I).normalize(),y.addVectors(b,I),I.normalize(),oe=VS+Xt*H+So,[0,1,2].forEach(Al=>{ne[oe*3+Al]=y.getComponent(Al),ie[oe*3+Al]=N.getComponent(Al)});let FS=+ar+Math.sin(sd);de[oe*2]=(RS+k*FS)/De,de[oe*2+1]=So/c}}y.addVectors(g,O),oe=te+ct*H+So,[0,1,2].forEach(Xt=>{ne[oe*3+Xt]=y.getComponent(Xt),ie[oe*3+Xt]=M.getComponent(Xt)}),de[oe*2]=(Xe+ct*Ne)/De,de[oe*2+1]=So/c}}let _e=F+2*p+ee,yt=1,[wt,hi]=[+f,_e-1];for(let ct=wt;ct<=hi-1;ct++){let ar=f&&ct===hi-1;for(let Wr=0;Wr<H-1;Wr++)S=ct*H+Wr,w=S+1,v=(ar?Wr:S)+H,_=(ar?Wr+1:w)+H,ct===0?le.push(w,_,v):ct===_e-2?le.push(S,w,v):le.push(S,w,v,w,_,v)}this.setIndex(le),this.setAttribute("position",new Tp(ne,3)),this.setAttribute("normal",new Tp(ie,3)),this.setAttribute("uv",new Tp(de,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,u=6*(e-1)*t.radialSegments,c=e,d=c===e;for(let p=0;p<t.radialSegments;p++)i=c*r+p,a=i+1,s=(d?p:i)+r,l=(d?p+1:a)+r,o[u++]=i,o[u++]=a,o[u++]=s,o[u++]=a,o[u++]=l,o[u++]=s;return o.length=u,Mp.array=o,Mp.count=o.length,Mp}};import{IcosahedronGeometry as OT}from"three";var U0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Ws(t*.5,i,a):new OT(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Ws=class extends hn{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(i,a,s,t,e,r),this.type=s}static fromJSON(t){return new Ws(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as CT,Shape as TT}from"three";var H0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new TT;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new CT(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Z0,BufferGeometryLoader as kT,Vector3 as FT,BoxGeometry as J0}from"three";import{BufferGeometry as RT,Vector2 as Ep,Vector3 as K0}from"three";import{Box3 as MT,BufferAttribute as $s,BufferGeometry as q0,Color as Dp,EventDispatcher as IT,Float32BufferAttribute as ya,Matrix3 as W0,Matrix4 as Q0,MathUtils as NT,Object3D as DT,Sphere as ET,Vector2 as dr,Vector3 as Lt,Vector4 as BT}from"three";var io=new Q0,Ip=new DT,ou=new Lt,xn=class extends IT{constructor(){super(),this.uuid=NT.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new W0().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return io.makeRotationX(t),this.applyMatrix4(io),this}rotateY(t){return io.makeRotationY(t),this.applyMatrix4(io),this}rotateZ(t){return io.makeRotationZ(t),this.applyMatrix4(io),this}translate(t,e,r){return io.makeTranslation(t,e,r),this.applyMatrix4(io),this}scale(t,e,r){return io.makeScale(t,e,r),this.applyMatrix4(io),this}lookAt(t){return Ip.lookAt(t),Ip.updateMatrix(),this.applyMatrix4(Ip.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new Lt().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new Dp().fromBufferAttribute(s,p));function c(p,f,h,m){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[h].clone()],g=a===void 0?[]:[new Lt().fromBufferAttribute(a,p),new Lt().fromBufferAttribute(a,f),new Lt().fromBufferAttribute(a,h)],b=new ga(p,f,h,g,y,m);e.faces.push(b),l!==void 0&&e.faceVertexUvs[0].push([new dr().fromBufferAttribute(l,p),new dr().fromBufferAttribute(l,f),new dr().fromBufferAttribute(l,h)]),u!==void 0&&e.faceVertexUvs[1].push([new dr().fromBufferAttribute(u,p),new dr().fromBufferAttribute(u,f),new dr().fromBufferAttribute(u,h)])}let d=t.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],h=f.start,m=f.count;for(let y=h,g=h+m;y<g;y+=3)r!==void 0?c(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):c(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let p=0;p<r.count;p+=3)c(r.getX(p),r.getX(p+1),r.getX(p+2));else for(let p=0;p<i.count;p+=3)c(p,p+1,p+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(ou).negate(),this.translate(ou.x,ou.y,ou.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Q0;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new Lt,e=new Lt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new Lt;if(t){let r=new Lt,o=new Lt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],u=this.vertices[s.b],c=this.vertices[s.c];r.subVectors(c,u),o.subVectors(l,u),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new xn;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let u=new Lt,c={a:new Lt,b:new Lt,c:new Lt};i.push(u),a.push(c)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],u=o.vertexNormals[i];l.copy(s.normal),u.a.copy(s.vertexNormals[0]),u.b.copy(s.vertexNormals[1]),u.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new MT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ET),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,u=t.faces,c=this.colors,d=t.colors;e!==void 0&&(o=new W0().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let m=s[p].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let p=0,f=d.length;p<f;p++)c.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let h=u[p],m,y,g=h.vertexNormals,b=h.vertexColors,S=new ga(h.a+i,h.b+i,h.c+i);S.normal.copy(h.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,v=g.length;w<v;w++)m=g[w].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),S.vertexNormals.push(m);S.color.copy(h.color);for(let w=0,v=b.length;w<v;w++)y=b[w],S.vertexColors.push(y.clone());S.materialIndex=h.materialIndex+r,l.push(S)}for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],b=[];for(let S=0,w=g.length;S<w;S++)b.push(g[S].clone());this.faceVertexUvs[p].push(b)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let l=0,u=this.vertices.length;l<u;l++){let c=this.vertices[l],d=Math.round(c.x*i)+"_"+Math.round(c.y*i)+"_"+Math.round(c.z*i);e[d]===void 0?(e[d]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[d]]}let a=[];for(let l=0,u=this.faces.length;l<u;l++){let c=this.faces[l];c.a=o[c.a],c.b=o[c.b],c.c=o[c.c];let d=[c.a,c.b,c.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let u=a[l];this.faces.splice(u,1);for(let c=0,d=this.faceVertexUvs.length;c<d;c++)this.faceVertexUvs[c].splice(u,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new Lt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,u){return l.materialIndex-u.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let u=t[l]._id;a&&a.push(o[u]),s&&s.push(i[u])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],i={},a=[],s={},l=[],u={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,g=!1,b=this.faceVertexUvs[0][h]!==void 0,S=m.normal.length()>0,w=m.vertexNormals.length>0,v=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.vertexColors.length>0,A=0;if(A=c(A,0,0),A=c(A,1,y),A=c(A,2,g),A=c(A,3,b),A=c(A,4,S),A=c(A,5,w),A=c(A,6,v),A=c(A,7,_),r.push(A),r.push(m.a,m.b,m.c),r.push(m.materialIndex),b){let x=this.faceVertexUvs[0][h];r.push(f(x[0]),f(x[1]),f(x[2]))}if(S&&r.push(d(m.normal)),w){let x=m.vertexNormals;r.push(d(x[0]),d(x[1]),d(x[2]))}if(v&&r.push(p(m.color)),_){let x=m.vertexColors;r.push(p(x[0]),p(x[1]),p(x[2]))}}function c(h,m,y){return y?h|1<<m:h&~(1<<m)}function d(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[m]}function p(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return u[m]!==void 0||(u[m]=l.length/2,l.push(h.x,h.y)),u[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new xn().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let r=t.colors;for(let p=0,f=r.length;p<f;p++)this.colors.push(r[p].clone());let o=t.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],b=[];for(let S=0,w=g.length;S<w;S++){let v=g[S];b.push(v.clone())}this.faceVertexUvs[p].push(b)}}let i=t.morphTargets;for(let p=0,f=i.length;p<f;p++){let h={};if(h.name=i[p].name,i[p].vertices!==void 0){h.vertices=[];for(let m=0,y=i[p].vertices.length;m<y;m++)h.vertices.push(i[p].vertices[m].clone())}if(i[p].normals!==void 0){h.normals=[];for(let m=0,y=i[p].normals.length;m<y;m++)h.normals.push(i[p].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let p=0,f=a.length;p<f;p++){let h={};if(a[p].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[p].vertexNormals.length;m<y;m++){let g=a[p].vertexNormals[m],b={};b.a=g.a.clone(),b.b=g.b.clone(),b.c=g.c.clone(),h.vertexNormals.push(b)}}if(a[p].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[p].faceNormals.length;m<y;m++)h.faceNormals.push(a[p].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[p].clone());let l=t.skinIndices;for(let p=0,f=l.length;p<f;p++)this.skinIndices.push(l[p].clone());let u=t.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let c=t.boundingBox;c!==null&&(this.boundingBox=c.clone());let d=t.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Np().fromGeometry(this),e=new q0,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",nu.call(new $s(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",nu.call(new $s(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",$0.call(new $s(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",Y0.call(new $s(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",Y0.call(new $s(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let u=a[s],c=new ya(u.data.length*3,3);c.name=u.name,i.push(nu.call(c,u.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new ya(t.skinIndices.length*4,4);e.setAttribute("skinIndex",X0.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new ya(t.skinWeights.length*4,4);e.setAttribute("skinWeight",X0.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new q0,r=t.geometry;if(t.isPoints||t.isLine){let o=new ya(r.vertices.length*3,3),i=new ya(r.colors.length*3,3);if(e.setAttribute("position",nu.call(o,r.vertices)),e.setAttribute("color",$0.call(i,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new ya(r.lineDistances.length,1);e.setAttribute("lineDistance",LT.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};xn.prototype.isGeometry=!0;var Np=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,u;if(l>0){u=[];for(let g=0;g<l;g++)u[g]={name:s[g].name,data:[]};this.morphTargets.position=u}let c=t.morphNormals,d=c.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:c[g].name,data:[]};this.morphTargets.normal=p}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let b=e[g];this.vertices.push(r[b.a],r[b.b],r[b.c]);let S=b.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let v=b.normal;this.normals.push(v,v,v)}let w=b.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let v=b.color;this.colors.push(v,v,v)}if(i===!0){let v=o[0][g];v!==void 0?this.uvs.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new dr,new dr,new dr))}if(a===!0){let v=o[1][g];v!==void 0?this.uvs2.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new dr,new dr,new dr))}for(let v=0;v<l;v++){let _=s[v].vertices;u[v].data.push(_[b.a],_[b.b],_[b.c])}for(let v=0;v<d;v++){let _=c[v].vertexNormals[g];p[v].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[b.a],f[b.b],f[b.c]),y&&this.skinWeights.push(h[b.a],h[b.b],h[b.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},ga=class{constructor(t,e,r,o,i,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new Lt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Dp,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function LT(n){return this.array.set(n),this}function $0(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),i=new Dp),t[e++]=i.r,t[e++]=i.g,t[e++]=i.b}return this}function Y0(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),i=new dr),t[e++]=i.x,t[e++]=i.y}return this}function nu(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),i=new Lt),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z}return this}function X0(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),i=new BT),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z,t[e++]=i.w}return this}var VT=["a","b","c"];function zT(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Bp(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Lp(n,t,e,r,o,i){let a=Math.min(n,t),s=Math.max(n,t),l=a+"_"+s,u;if(r.has(l))u=r.get(l);else{let c=e[a],d=e[s];u={a:c,b:d,newEdge:null,faces:[]},r.set(l,u)}u.faces.push(o),i[n].edges.push(u),i[t].edges.push(u)}function GT(n,t,e,r){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)a=t[o],Lp(a.a,a.b,n,r,a,e),Lp(a.b,a.c,n,r,a,e),Lp(a.c,a.a,n,r,a,e)}function iu(n,t,e,r,o){n.push(new ga(t,e,r,void 0,void 0,o))}function xa(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function au(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var su=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof RT?t=new xn().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new K0,r,o,i,a,s,l=t.vertices,u=t.faces,c=t.faceVertexUvs[0],d=c!==void 0&&c.length>0,p=[],f=new Map;GT(l,u,p,f);let h=[],m,y,g,b,S,w,v;for(let Y of Array.from(f.keys())){for(y=f.get(Y),g=new K0,S=3/8,w=1/8,v=y.faces.length,v!=2&&(S=.5,w=0,v!=1),g.addVectors(y.a,y.b).multiplyScalar(S),e.set(0,0,0),a=0;a<v;a++){for(b=y.faces[a],s=0;s<3&&(m=l[zT(b,VT[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(w),g.add(e),y.newEdge=h.length,h.push(g)}let _,A,x,T,C,P,O,M=[];for(o=0,i=l.length;o<i;o++){for(P=l[o],C=p[o].edges,r=C.length,r==3?_=3/16:r>3&&(_=3/(8*r)),A=1-r*Number(_),x=_,r<=2&&(r==2?(A=3/4,x=1/8):r==1||r==0),O=P.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<r;a++)T=C[a],m=T.a!==P?T.a:T.b,e.add(m);e.multiplyScalar(Number(x)),O.add(e),M.push(O)}let I=M.concat(h),N=M.length,B,D,G,L=[],V=[],z,F,$,q,H=new Ep,X=new Ep,j=new Ep;for(o=0,i=u.length;o<i;o++)b=u[o],B=Number(Bp(b.a,b.b,f).newEdge)+N,D=Number(Bp(b.b,b.c,f).newEdge)+N,G=Number(Bp(b.c,b.a,f).newEdge)+N,iu(L,B,D,G,b.materialIndex),iu(L,b.a,B,G,b.materialIndex),iu(L,b.b,D,B,b.materialIndex),iu(L,b.c,G,D,b.materialIndex),d&&(z=c[o],F=z[0],$=z[1],q=z[2],H.set(xa(F.x,$.x),xa(F.y,$.y)),X.set(xa($.x,q.x),xa($.y,q.y)),j.set(xa(F.x,q.x),xa(F.y,q.y)),au(V,H,X,j),au(V,F,H,j),au(V,$,X,H),au(V,q,j,X));t.vertices=I,t.faces=L,d&&(t.faceVertexUvs[0]=V)}};var xt=new FT,ex=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new Z0().copy(new J0(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(xt),r={width:xt.x,height:xt.y,depth:xt.z,subdivisions:0}):r=t.parameters;let o={...r,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new Z0().copy(new J0(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(xt)):xt.set(a.width,a.height,a.depth),(t!==xt.x||e!==xt.y||r!==xt.z)&&i.scale(xt.x===0?1:t/xt.x,xt.y===0?1:e/xt.y,xt.z===0?1:r/xt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new su(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new kT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(xt);let a=100/xt.x;Object.assign(i.parameters,{width:100,height:xt.y*a,depth:xt.z*a}),t(this.build(i))})}};var lu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,u=t*.5,c=e*.5,d=0,p=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,g=d+Math.sin(y)*u,b=p+Math.cos(y)*c;l.addPoint(l.createPoint(g,b))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=Jt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as jT,Float32BufferAttribute as Rp,Vector2 as ao,Vector3 as Ct}from"three";var tx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,u=new zp(t*.5,e,o,i,a,s,l);return u.scale(1,1,r/t),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Ys(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Vp(n,t,e,r,o,i){let a=t.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let u=a.add(s).normalize();i.copy(n).addScaledVector(u,r/Math.sin(l/2))}else{let u=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(u)),i.addScaledVector(s,r/Math.sin(u))}}function UT(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var zp=class extends jT{constructor(t=.5,e=1,r=4,o=1,i=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],u=[],c=[],d=[],p=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,g=(r-2)*Math.PI/r,b=Math.PI-g,S=new Ct(0,-f,0),w=new Ct(0,f,0),v=new ao(t,-f),_=new ao(m,-f),A=new ao(0,w.y).sub(_),x=new ao(0,w.y).sub(v),T=new ao(A.y,-A.x).normalize(),C=new ao(x.y,-x.x).normalize(),O=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,O);let M;{let V=new Ct(T.x,T.y,0),z=new Ct(Math.cos(y)*V.x,V.y,Math.sin(y)*V.x);M=V.angleTo(z)}let I=a/Math.tan((Math.PI-A.angle())/2),N=a/Math.tan((Math.PI-M)/2),B=new Ct;if(!i){u.push(S.x,S.y,S.z),c.push(0,-1,0),d.push(0,0);let V=p++,z=[],F=v.clone(),$=I/Math.cos(Math.PI/r);F.x-=$;for(let q=0;q<r;q++){let H=q/r*Math.PI*2+h,X=new ao(Math.sin(H),Math.cos(H));Ys(F,X,B),u.push(B.x,B.y,B.z),c.push(0,-1,0),d.push(0,0),z.push(p++)}for(let q=0;q<z.length;q++)l.push(z[q],V,z[(q+1)%z.length])}let D=[];{let V=new Ct,z=new Ct,F=new Ct,$=new Ct,q=new Ct,H=new Ct;for(let X=0;X<r;X++){let j=X/r*Math.PI*2+h,Y=(X+.5)/r*Math.PI*2+h,W=(X+1)/r*Math.PI*2+h,k=new ao(Math.sin(j),Math.cos(j)),oe=new ao(Math.sin(Y),Math.cos(Y)),ee=new ao(Math.sin(W),Math.cos(W));Ys(v,k,z),Ys(v,ee,F),Ys(T,oe,V),Vp(w,z,F,N,N,$),u.push($.x,$.y,$.z),Vp(z,w,F,N,I,q),u.push(q.x,q.y,q.z),Vp(F,z,w,I,N,H),u.push(H.x,H.y,H.z),c.push(V.x,V.y,V.z),c.push(V.x,V.y,V.z),c.push(V.x,V.y,V.z),d.push(0,0),d.push(0,0),d.push(0,0);let K=p++,te=p++,Z=p++;if(l.push(K,te,Z),a>0){{let ie=z.clone().add(F).multiplyScalar(.5),de=w.clone().sub(ie).normalize(),pe=S.clone().sub(ie).normalize().add(de).normalize().multiplyScalar(-1),ge=H.clone().sub(q);G(ie,ge,pe,A.angle())}let se,ne;{let ie=new Ct;Ys(C,ee,ie);let de=H.clone().add($).multiplyScalar(.5);de=UT(de,F,w);let le=H.clone().sub($);[se,ne]=G(de,le,ie,M,$.y)}{let ie=se,de=ie.clone().setY(0).normalize(),le=new Ct(0,-1,0),pe=de.clone().cross(le);L(ie,de,le,pe)}D.concat(ne);{let ie=A.angle(),de=Math.PI-ie,le=w.clone();le.y-=a/Math.sin(ie-Math.PI/2);let pe=new Ct,ge=[];for(let Xe=0;Xe<s;Xe++){let De=[],je=Math.PI/2-de*Xe/s,Yt=Math.cos(je),_e=Math.sin(je),yt=Y;for(let wt=0;wt<=Xe;wt++){let hi=Math.cos(yt),ct=Math.sin(yt);V.x=Yt*ct,V.y=_e,V.z=Yt*hi,pe.copy(le).addScaledVector(V,a),u.push(pe.x,pe.y,pe.z),c.push(V.x,V.y,V.z),d.push(0,0),De.push(p++),yt+=Math.PI*2/Xe/r}ge.push(De)}ne.reverse(),ge.push(ne);let Ne=ge.length-1;for(let Xe=0;Xe<Ne;Xe++){let De=ge[Xe],je=ge[Xe+1],Yt=De.length-1;l.push(je[1],De[0],je[0]);for(let _e=1;_e<=Yt;_e++)l.push(De[_e],De[_e-1],je[_e]),l.push(je[_e+1],De[_e],je[_e])}}}}}this.setIndex(l),this.setAttribute("position",new Rp(u,3)),this.setAttribute("normal",new Rp(c,3)),this.setAttribute("uv",new Rp(d,2));function G(V,z,F,$,q){let H=-$/2,X=(Math.PI-$)/2,j=z.clone().normalize().cross(F);V.addScaledVector(F,-a/Math.sin(X));let Y=new Ct,W=new Ct,k=1,oe=p,ee=[];for(let K=0;K<=s;K++){let te=H+K/s*$;W.set(0,0,0),W.addScaledVector(j,Math.sin(te)),W.addScaledVector(F,Math.cos(te));for(let Z=0;Z<=k;Z++){let se=Z/k-.5;if(Y.copy(V),Y.addScaledVector(z,se),Y.addScaledVector(W,a),q!=null){let ne=Math.max(0,Y.y-q);Y.addScaledVector(z,-ne/z.y)}u.push(Y.x,Y.y,Y.z),c.push(W.x,W.y,W.z),d.push(0,0),Z===0&&ee.push(p),p++}}for(let K=0;K<s;K++)for(let te=0;te<k;te++){let Z=oe+te+(k+1)*K,se=Z+(k+1),ne=se+1,ie=Z+1;l.push(Z,se,ie),l.push(se,ne,ie)}return[V.clone().addScaledVector(z,.5),ee]}function L(V,z,F,$){let q=Math.PI/2,H=x.angle()-q,X=[],j=new Ct,Y=new Ct;for(let k=0;k<=s;k++){let oe=[],ee=k/s;for(let K=0;K<=k;K++){let Z=((k?K/k:0)-.5)*b,se=Math.cos(Z),ne=Math.sin(Z),ie=Math.atan(Math.tan(H)*se),de=(q+ie)*ee,le=Math.cos(de),pe=Math.sin(de);j.set(0,0,0),j.addScaledVector(z,pe*se),j.addScaledVector(F,le),j.addScaledVector($,pe*ne),Y.copy(V).addScaledVector(j,a),u.push(Y.x,Y.y,Y.z),c.push(j.x,j.y,j.z),d.push(0,0),oe.push(p++)}X.push(oe)}let W=X.length-1;for(let k=0;k<W;k++){let oe=X[k],ee=X[k+1],K=oe.length-1;l.push(oe[0],ee[1],ee[0]);for(let te=1;te<=K;te++)l.push(oe[te-1],oe[te],ee[te]),l.push(oe[te],ee[te+1],ee[te])}}}};var ba=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,u={x:e*.5,y:r*.5},c={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,v,_){return v>e&&_>r?Math.min(w*e/v,w*r/_):v>e?w*e/v:_>r?w*r/_:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let h=c.x,m=d.x,y=d.y,g=c.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.isClosed=!0;let b=!0;for(let w=0,v=t.points.length;w<v;w++)t.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(b=!1);b&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let S=Jt.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as HT,Float32BufferAttribute as qT,MathUtils as rx,SphereGeometry as WT}from"three";var ox=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=rx.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:u}=n.parameters,c;return u===0?(c=new HT,c.setAttribute("position",new qT([],3))):c=new WT(.5*t,o,i,a,s,l,u*rx.DEG2RAD),c.scale(1,e/t,r/t),Object.assign(c,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as $T}from"three";var nx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new $T(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as YT,Float32BufferAttribute as Gp,Vector3 as XT}from"three";var ix=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new kp(t,e,r,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},kp=class extends YT{constructor(t=1,e=1,r=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],u=[],c=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-c,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(Y=0,W=0,k=0)=>new XT(Y,W,k),h=f(),m=f(),[y,g,b]=[e/2,t/2,r/2],S=-g,w=+g,[v,_,A]=[f(S,-y,+b),f(S,-y,-b),f(S,+y,-b)],x=(Y,W=!1)=>Math.sin(Y-Math.PI/(1+ +W)),T=(Y,W=!1)=>Math.cos(Y-Math.PI/(1+ +W));A.y=Math.sin(o)*e-y;let C=Math.cos(o)*e-b,P=v.z-c;o<=p?(A.z=Math.min(C,P),A.z==P&&(A.y-=(C-P)/Math.tan(p-o))):_.z=Math.min(_.z-C-b,v.z-c),h.subVectors(v,_),m.subVectors(A,_);let O=Math.min(h.length(),m.length())*i/100,M=O*Math.tan(o/2),I=O/Math.cos(o/2),N=h.clone().normalize().add(m.normalize()).setLength(I).add(_);h.set(0,x(o,!0),T(o,!0)),d.push([A,h.clone()]);let B=(Math.PI-o)/a;for(let Y=0;Y<=a;Y++){let W=p+o+Y*B;h.set(0,Math.sin(W)*M,Math.cos(W)*M),h.add(N),m.set(0,x(W),T(W)),d.push([h.clone(),m.clone()])}d.push([v,f(0,1,0)]);let D=Math.sin(B/2)*M*2,G=d.length-1,L=d[0][0].distanceTo(d[1][0]),V=d[G-1][0].distanceTo(d[G][0]),z=L+D*a+V;d[0].push(1);for(let Y=0;Y<=a;Y++)d[Y+1].push(1-(L+Y*D)/z);d[G].push(0);let[F,$,q]=d[0],H,X,j;for(let Y=1;Y<d.length;Y++)[H,X,j]=d[Y],s.push(S,F.y,F.z,S,H.y,H.z,w,F.y,F.z,w,F.y,F.z,S,H.y,H.z,w,H.y,H.z),l.push(0,$.y,$.z,0,X.y,X.z,0,$.y,$.z,0,$.y,$.z,0,X.y,X.z,0,X.y,X.z),u.push(0,q,0,j,1,q,1,q,0,j,1,j),[F,$,q]=[H,X,j];this.setAttribute("position",new Gp(s,3)),this.setAttribute("normal",new Gp(l,3)),this.setAttribute("uv",new Gp(u,2))}};var cu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}=n.parameters,c=n.shape,d=t*.5,p=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*r/100,b=p*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let w=0;w<o;w++){let v=m*w,_=f+Math.sin(v)*d,A=h+Math.cos(v)*p;c.addPoint(c.createPoint(_,A))}}else for(let w=0;w<o;w++){let v=f+Math.cos(y)*d,_=h+Math.sin(y)*p;c.addPoint(c.createPoint(v,_)),y+=m,v=f+Math.cos(y)*g,_=h+Math.sin(y)*b,w<=o,c.addPoint(c.createPoint(v,_)),y+=m}c.isClosed=!0;for(let w=0,v=c.points.length;w<v;w++)c.points[w].roundness=i;c.roundness=i,c.update();let S=Jt.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as QT}from"three";var ax=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new QT(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as KT,Float32BufferAttribute as ZT,MathUtils as JT}from"three";var sx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,u=eM(t,e,r,t*.5,a,i,0,0,o,s,l);return u.scale(1,e/t,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function eM(n,t,e,r,o,i,a,s,l,u,c){[t,e]=[e,t],a=t/2;let d=JT.clamp(o/360,0,1);if(d===0){let p=new KT;return p.setAttribute("position",new ZT([],3)),p}return d===1&&(u=0),new qs(!0,n,t,e,r,d,i,a,s,l,u,c)}import{TorusKnotGeometry as tM}from"three";var lx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:a}=n.parameters,s=t*.5;s!==e&&(s-=e);let l=new tM(s,e,r,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var cx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,u=t*.5,c=e*.5;s?(l.addPoint(l.createPoint(-u,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))),l.isClosed=!0;for(let p=0,f=l.points.length;p<f;p++)l.points[p].roundness=r;l.roundness=r,l.update();let d=Jt.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as dx,Vector3 as Tt,Matrix3 as rM,Matrix4 as Wn,BufferGeometry as px,BufferAttribute as va,MathUtils as uu}from"three";function ux(n,t){let e=2*Math.PI;return(n%e+e)%e===(t%e+e)%e}var oM=new Wn,nM=new Wn;function iM(n,t,e){let r=[new Tt,new Tt,new Tt],o=[new Tt,new Tt,new Tt];return n.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((i,a)=>{let s=o[a],l=uu.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Wn().makeBasis(r[0],r[1],r[2])}var fx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=t?.shapeData??ma.create({parameters:Ld}).userData.shape;return{path:n.path??Yi.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:i,extrusion:{...wc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new Fp(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new px,{userData:{...n,type:"PathGeometry"}})}},Fp=class extends px{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!ux(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),u=Math.min(Math.max(2,l-s+1),a+2),c=[],d=[];for(let L=0;L<u;L++){let V=this.inputs.path.isClosed?(L+s)%e.length:Math.min(L+s,e.length-1);c.push(e[V].clone()),d.push(r[V].clone())}let p=(L,V,z)=>{c[L]=c[L].clone().lerp(c[V],z),d[L]=iM(d[L],d[V],z)},f=0,h=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||i===0)&&(f=h,p(0,1,f));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,p(c.length-1,c.length-2,1-m)),o===0){let L=c.length-1;c[L].copy(c[0]),d[L].copy(d[0])}this._applyPathModifiers(d,f,m);let{bevel:g,bevelSides:b}=this.inputs.parameters.extrusion,S=g>0?this.inputs.parameters.extrusion.capType:"flat",w=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(w=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:v,infos:_,vertices:A}=this._computeShapePoints(w),x=0,T;S==="round"&&(T=new gn(this.inputs.shapeData,2*g,g,w,b,void 0,!0),x=T.getAttribute("position").count);let C=0,P=0;_.sort((L,V)=>L.start-V.start),_.forEach(L=>{L.verticesStart=C,L.verticesCount=L.continuous.reduce((V,z,F)=>V+(F===0||!z?2:1),0),P+=L.verticesCount,C=P});let O=P*u,M,I=0;if(this._isOpenEnded()&&S==="flat"){try{M=Vr({windingRule:Ie.ODD,elementType:tt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:v})}catch{M=Op}I=M.vertexCount}let N=O+2*I+x*2,B=O+2*I,D={positions:new Float32Array(N*3),normals:new Float32Array(N*3),uvs:new Float32Array(N*2)},G=[];if(_.forEach(L=>{this._extrudeRegion(L,A,d,c,D,G,this._isGeometryClosed()&&!this._isOpenEnded())}),M&&(this._closeEnd(M,O,G,D,d[0],c[0],!1),this._closeEnd(M,O+I,G,D,d[d.length-1],c[c.length-1],!0)),T){D.positions.set(T.getAttribute("position").array,B*3),D.normals.set(T.getAttribute("normal").array,B*3),D.uvs.set(T.getAttribute("uv").array,B*2);let L=G.length;G.push(...T.getIndex().array.map(F=>F+B)),B+=x,D.positions.set(T.getAttribute("position").array,B*3),D.normals.set(T.getAttribute("normal").array,B*3),D.uvs.set(T.getAttribute("uv").array,B*2);let V=G.length;G.push(...T.getIndex().array.map(F=>F+B)),this.setAttribute("position",new va(D.positions,3)),this.setAttribute("normal",new va(D.normals,3)),this.setAttribute("uv",new va(D.uvs,2)),this.setIndex(G);let z=oM;z.copy(d[d.length-1]).setPosition(c[c.length-1]),this.applyMatrix4OnRange(z,B,N),z.copy(d[0]).setPosition(c[0]).multiply(nM.makeScale(1,1,-1)),this.applyMatrix4OnRange(z,B-x,B),this.reverseIndicesOnRange(L,V)}else this.setAttribute("position",new va(D.positions,3)),this.setAttribute("normal",new va(D.normals,3)),this.setAttribute("uv",new va(D.uvs,2)),this.setIndex(G)}_extractPathPoints(){let r=Uc(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,i=this.inputs.path.isClosed,a=new Tt,s=new Tt,l=new Tt,u=new Tt,c=new Tt(0,1,0);for(let y=0;y<o;y++){let g=e[y],b;y===0?b=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):b=e[y-1];let S;y===o-1?S=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):S=e[y+1];let w=g.clone().sub(b).normalize(),v=S.clone().sub(g).normalize(),_=w.clone().add(v).normalize();l.copy(_),y===0&&(_.equals(c)||_.clone().negate().equals(c))&&c.set(0,0,1);let A=c.clone().cross(_).normalize(),x=_.clone().cross(A).normalize();c.copy(x),u.copy(A),y===0&&(a.copy(x),s.copy(_));let T=new Wn().makeBasis(A,x,_);r.push(T)}let d=i?s:l,p=i?a:new Tt(0,1,0),f=d.clone().cross(u).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);d.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let g=new Wn().makeRotationZ(h*y/r.length);r[y].multiply(g)}return r}_applyPathModifiers(e,r,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:u}=this.inputs.parameters.extrusion,c=new Wn,d=new Wn;return e.forEach((p,f)=>{let h=f===0?0:f===i-1?1:(f-r)/(i-(o===0?0:1)-(r+(1-o)));c.makeRotationZ(uu.lerp(a,a+s,h)*uu.DEG2RAD);let m=uu.lerp(l,u,h);d.makeScale(m,m,m),p.multiply(c).multiply(d)}),e}_computeShapePoints(e=12,r=Ie.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let b=y.length-1;b>=1;b-=2){let S=y[b-1],w=y[b-0];g.push(S,w)}return g}),s;try{s=Vr({windingRule:r,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=Hs}let l;try{l=Vr({windingRule:Ie.ODD,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Pp}if(!s)throw new Error("error generating geometry");let u=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let c=1/0,d=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,b=s.vertices[g+0],S=s.vertices[g+1];b<c&&(c=b),b>d&&(d=b),S<p&&(p=S),S>f&&(f=S)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=u,g=m*2,b=s.elements[g+0],S=s.elements[g+1],w=b+S,v={start:b,count:S,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(v);let _=b,A=w-1,x=b+1,T=o.roundedCurves.length;do{let C=_-b,P=s.vertices[A*2+0],O=s.vertices[A*2+1],M=s.vertices[_*2+0],I=s.vertices[_*2+1],N=s.vertices[x*2+0],B=s.vertices[x*2+1],D=M-P,G=I-O,L=Math.sqrt(D*D+G*G);D/=L,G/=L;let V=M-N,z=I-B,F=Math.sqrt(V*V+z*z);V/=F,z/=F,v.normals[C*2+0]=-z,v.normals[C*2+1]=V;let $=s.vertexIndices[_];if(Array.isArray($))v.continuous[C]=!1;else{let[q,H]=o.getCurveIndexFromVertexId($-1,!0);if(H>0&&H<1)v.continuous[C]=!0;else{let X=H===1?q+1:q-1;X=(X+T)%T;let j=H===1?0:1,Y=o.roundedCurves[q].getTangent(H),W=o.roundedCurves[X].getTangent(j);v.continuous[C]=Y.dot(W)>.95}}y&&(v.normals[C*2+0]*=-1,v.normals[C*2+1]*=-1),[A,_,x]=[_,x,x+1],x>=w&&(x-=S)}while(x!==b+1)}return{regions:[i,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,i,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,i,a,s,l){let u=new Tt,c=new Tt,d=new Tt,p=new Tt,f=new dx;o.forEach((m,y)=>{let g=i[y],b=e.verticesStart*o.length+e.verticesCount*y;for(let S=0;S<e.count;S++){let w=(e.start+S)*2;if(u.set(r[w+0],r[w+1],0),d.copy(u).applyMatrix4(m).add(g),e.continuous[S])p.set(e.normals[S*2+0],e.normals[S*2+1],0);else{let v=S===0?(e.start+e.count-1)*2:w-2;c.set(r[v+0],r[v+1],0),p.copy(u).sub(c),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(m).normalize(),f.set(S===0?1:S/e.count,y/(o.length-1)),this._insertVertex(a,b,d,p,f),b++,!e.continuous[S]||S===0){if(S===0)p.set(e.normals[S*2+0],e.normals[S*2+1],0),f.set(0,y/(o.length-1));else{let v=S===e.count-1?e.start*2:w+2;c.set(r[v+0],r[v+1],0),p.copy(c).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,b,d,p,f),b++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),b=0;for(let S=0;S<e.count;S++){(!e.continuous[S]||S===0)&&b++;let w=S===e.count-1?0:b+1,v=y+b,_=y+w,A=g+w,x=g+b;e.isHole?s.push(v,A,_,v,x,A):s.push(v,_,A,v,A,x),b++}}}_closeEnd(e,r,o,i,a,s,l){let u=e.vertexCount,c=new Tt(0,0,l?-1:1).applyMatrix4(a),d=new Tt,p=new dx;for(let h=0;h<u;h++){let m=2*h;d.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,r+h,d,c,p)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,g=f[m+(l?1:2)]+r,b=f[m+(l?2:1)]+r;o.push(y,g,b)}}applyMatrix4OnRange(e,r,o){let i=e.elements,a=new rM().getNormalMatrix(e).elements,s,l,u,c,d=this.attributes.position,p=this.attributes.normal;if(!d||!p)return;let f=d.array,h=p.array,m=d.itemSize;for(let y=r*m,g=o*m;y<g;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],u=f[y+2],c=1/(i[3]*s+i[7]*l+i[11]*u+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*u+i[12])*c,f[y+1]=(i[1]*s+i[5]*l+i[9]*u+i[13])*c,f[y+2]=(i[2]*s+i[6]*l+i[10]*u+i[14])*c,s=h[y+0],l=h[y+1],u=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*u,h[y+1]=a[1]*s+a[4]*l+a[7]*u,h[y+2]=a[2]*s+a[5]*l+a[8]*u}d.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let i=e;i<r;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as hx,BufferGeometry as jp}from"three";import{mergeBufferGeometries as sM}from"three/examples/jsm/utils/BufferGeometryUtils.js";function mx(){let n=new jp;return n.setAttribute("position",new hx(new Float32Array([]),3)),n.setIndex(new hx(new Uint16Array([]),1)),n}var lM=mx().attributes,cM=12,uM=1,Sa=class extends jp{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,lM),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,r).then(()=>{this.update(e),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let r=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!r?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:u,textTransform:c}=e,d=Nc.getDisplayedValue(u),p=c===2?d.toUpperCase():c===3?d.toLowerCase():d,f=dM(e,r,p),{shapes:h,charWidths:m,charCoords:y}=r.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,b=(typeof i=="number"?i:1)*.5,S=h.map(_=>new Le().fromShape(_,!0));this.vectorShapes=S;let w=S.map(_=>Jt.create({shape:_,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Ie.NONZERO:Ie.ODD,subdivisions:this.isLowResolution&&a>0?uM:cM}})),v=w.length?sM(w):mx();v.translate(-g,b,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(v.attributes).forEach(([_,A])=>{this.setAttribute(_,A)}),this.setIndex(v.index),this.computeBoundingSphere()}clone(){let e=jt(new jp,Sa.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function dM(n,t,e){let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
15
+ `));return d(iD.bind(void 0,n))}Qv.exports=aD});var Jv=Qt((Kce,Zv)=>{"use strict";var sD=Kv();function lD(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}function cD(n){var t=new lD;t.pre=n.pre,t.body=n.body,t.post=n.post;var e=n.args.slice(0);t.argTypes=e;for(var r=0;r<e.length;++r){var o=e[r];if(o==="array"||typeof o=="object"&&o.blockIndices){if(t.argTypes[r]="array",t.arrayArgs.push(r),t.arrayBlockIndices.push(o.blockIndices?o.blockIndices:0),t.shimArgs.push("array"+r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array args");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array args")}else if(o==="scalar")t.scalarArgs.push(r),t.shimArgs.push("scalar"+r);else if(o==="index"){if(t.indexArgs.push(r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array index");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array index");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array index")}else if(o==="shape"){if(t.shapeArgs.push(r),r<t.pre.args.length&&t.pre.args[r].lvalue)throw new Error("cwise: pre() block may not write to array shape");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array shape");if(r<t.post.args.length&&t.post.args[r].lvalue)throw new Error("cwise: post() block may not write to array shape")}else if(typeof o=="object"&&o.offset)t.argTypes[r]="offset",t.offsetArgs.push({array:o.array,offset:o.offset}),t.offsetArgIndex.push(r);else throw new Error("cwise: Unknown argument type "+e[r])}if(t.arrayArgs.length<=0)throw new Error("cwise: No array arguments specified");if(t.pre.args.length>e.length)throw new Error("cwise: Too many arguments in pre() block");if(t.body.args.length>e.length)throw new Error("cwise: Too many arguments in body() block");if(t.post.args.length>e.length)throw new Error("cwise: Too many arguments in post() block");return t.debug=!!n.printCode||!!n.debug,t.funcName=n.funcName||"cwise",t.blockSize=n.blockSize||64,sD(t)}Zv.exports=cD});var hs=Qt(Te=>{"use strict";var ir=Jv(),rd={body:"",args:[],thisVars:[],localVars:[]};function oh(n){if(!n)return rd;for(var t=0;t<n.args.length;++t){var e=n.args[t];t===0?n.args[t]={name:e,lvalue:!0,rvalue:!!n.rvalue,count:n.count||1}:n.args[t]={name:e,lvalue:!1,rvalue:!0,count:1}}return n.thisVars||(n.thisVars=[]),n.localVars||(n.localVars=[]),n}function uD(n){return ir({args:n.args,pre:oh(n.pre),body:oh(n.body),post:oh(n.proc),funcName:n.funcName})}function nt(n){for(var t=[],e=0;e<n.args.length;++e)t.push("a"+e);var r=new Function("P",["return function ",n.funcName,"_ndarrayops(",t.join(","),") {P(",t.join(","),");return a0}"].join(""));return r(uD(n))}var eS={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var n in eS){var t=eS[n];Te[n]=nt({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"eq"]=nt({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:n+"eq"}),Te[n+"s"]=nt({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"seq"]=nt({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:n+"seq"})}})();var tS={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var n in tS){var t=tS[n];Te[n]=nt({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:n}),Te[n+"eq"]=nt({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:n+"eq"})}})();var rS={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};(function(){for(var n in rS){var t=rS[n];Te[n]=nt({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"s"]=nt({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"eq"]=nt({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:n+"eq"}),Te[n+"seq"]=nt({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:n+"seq"})}})();var oS=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];(function(){for(var n=0;n<oS.length;++n){var t=oS[n];Te[t]=nt({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:t}),Te[t+"eq"]=nt({args:["array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"})}})();var nS=["max","min","atan2","pow"];(function(){for(var n=0;n<nS.length;++n){var t=nS[n];Te[t]=nt({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t}),Te[t+"s"]=nt({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t+"s"}),Te[t+"eq"]=nt({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"}),Te[t+"seq"]=nt({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"seq"})}})();var iS=["atan2","pow"];(function(){for(var n=0;n<iS.length;++n){var t=iS[n];Te[t+"op"]=nt({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"op"}),Te[t+"ops"]=nt({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"ops"}),Te[t+"opeq"]=nt({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opeq"}),Te[t+"opseq"]=nt({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opseq"})}})();Te.any=ir({args:["array"],pre:rd,body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"if(a){return true}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return false"},funcName:"any"});Te.all=ir({args:["array"],pre:rd,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1}],body:"if(!x){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"all"});Te.sum=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s+=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"sum"});Te.prod=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=1"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s*=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"prod"});Te.norm2squared=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm2squared"});Te.norm2=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return Math.sqrt(this_s)"},funcName:"norm2"});Te.norminf=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:4}],body:"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"});Te.norm1=ir({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"});Te.sup=ir({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Te.inf=ir({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Te.argmin=ir({args:["index","array","shape"],pre:{body:"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Te.argmax=ir({args:["index","array","shape"],pre:{body:"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Te.random=nt({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"});Te.assign=nt({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"});Te.assigns=nt({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"});Te.equals=ir({args:["array","array"],pre:rd,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})});var NS=Qt((zpe,IS)=>{IS.exports=function(t,e){for(var r=t.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(r[i]),s=Number(o[i]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});import{FileLoader as YD,Loader as XD}from"three";function Ol(n){for(let t of Object.keys(n))n[t]===void 0&&delete n[t];return n}function jt(n,t){return Object.setPrototypeOf(n,t),n}function Cl(n){return Array.isArray(n)?n:[n]}function Tl(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var QS=typeof global=="object"&&global&&global.Object===Object&&global,Ml=QS;var KS=typeof self=="object"&&self&&self.Object===Object&&self,ZS=Ml||KS||Function("return this")(),ft=ZS;var JS=ft.Symbol,At=JS;var fh=Object.prototype,e1=fh.hasOwnProperty,t1=fh.toString,ys=At?At.toStringTag:void 0;function r1(n){var t=e1.call(n,ys),e=n[ys];try{n[ys]=void 0;var r=!0}catch{}var o=t1.call(n);return r&&(t?n[ys]=e:delete n[ys]),o}var hh=r1;var o1=Object.prototype,n1=o1.toString;function i1(n){return n1.call(n)}var mh=i1;var a1="[object Null]",s1="[object Undefined]",yh=At?At.toStringTag:void 0;function l1(n){return n==null?n===void 0?s1:a1:yh&&yh in Object(n)?hh(n):mh(n)}var sr=l1;function c1(n){return n!=null&&typeof n=="object"}var Et=c1;var u1="[object Symbol]";function d1(n){return typeof n=="symbol"||Et(n)&&sr(n)==u1}var yi=d1;function p1(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Il=p1;var f1=Array.isArray,it=f1;var h1=1/0,gh=At?At.prototype:void 0,xh=gh?gh.toString:void 0;function bh(n){if(typeof n=="string")return n;if(it(n))return Il(n,bh)+"";if(yi(n))return xh?xh.call(n):"";var t=n+"";return t=="0"&&1/n==-h1?"-0":t}var vh=bh;function m1(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var lr=m1;function y1(n){return n}var Sh=y1;var g1="[object AsyncFunction]",x1="[object Function]",b1="[object GeneratorFunction]",v1="[object Proxy]";function S1(n){if(!lr(n))return!1;var t=sr(n);return t==x1||t==b1||t==g1||t==v1}var Nl=S1;var w1=ft["__core-js_shared__"],Dl=w1;var wh=function(){var n=/[^.]+$/.exec(Dl&&Dl.keys&&Dl.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function _1(n){return!!wh&&wh in n}var _h=_1;var A1=Function.prototype,P1=A1.toString;function O1(n){if(n!=null){try{return P1.call(n)}catch{}try{return n+""}catch{}}return""}var wo=O1;var C1=/[\\^$.*+?()[\]{}|]/g,T1=/^\[object .+?Constructor\]$/,M1=Function.prototype,I1=Object.prototype,N1=M1.toString,D1=I1.hasOwnProperty,E1=RegExp("^"+N1.call(D1).replace(C1,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function B1(n){if(!lr(n)||_h(n))return!1;var t=Nl(n)?E1:T1;return t.test(wo(n))}var Ah=B1;function L1(n,t){return n?.[t]}var Ph=L1;function R1(n,t){var e=Ph(n,t);return Ah(e)?e:void 0}var Kt=R1;var V1=Kt(ft,"WeakMap"),El=V1;var Oh=Object.create,z1=function(){function n(){}return function(t){if(!lr(t))return{};if(Oh)return Oh(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Ch=z1;function G1(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var Th=G1;function k1(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Mh=k1;var F1=800,j1=16,U1=Date.now;function H1(n){var t=0,e=0;return function(){var r=U1(),o=j1-(r-e);if(e=r,o>0){if(++t>=F1)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Ih=H1;function q1(n){return function(){return n}}var Nh=q1;var W1=function(){try{var n=Kt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),gi=W1;var $1=gi?function(n,t){return gi(n,"toString",{configurable:!0,enumerable:!1,value:Nh(t),writable:!0})}:Sh,Dh=$1;var Y1=Ih(Dh),Eh=Y1;function X1(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Bh=X1;var Q1=9007199254740991,K1=/^(?:0|[1-9]\d*)$/;function Z1(n,t){var e=typeof n;return t=t??Q1,!!t&&(e=="number"||e!="symbol"&&K1.test(n))&&n>-1&&n%1==0&&n<t}var xi=Z1;function J1(n,t,e){t=="__proto__"&&gi?gi(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Bl=J1;function ew(n,t){return n===t||n!==n&&t!==t}var bi=ew;var tw=Object.prototype,rw=tw.hasOwnProperty;function ow(n,t,e){var r=n[t];(!(rw.call(n,t)&&bi(r,e))||e===void 0&&!(t in n))&&Bl(n,t,e)}var vi=ow;function nw(n,t,e,r){var o=!e;e||(e={});for(var i=-1,a=t.length;++i<a;){var s=t[i],l=r?r(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?Bl(e,s,l):vi(e,s,l)}return e}var $r=nw;var Lh=Math.max;function iw(n,t,e){return t=Lh(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Lh(r.length-t,0),a=Array(i);++o<i;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),Th(n,this,s)}}var Rh=iw;var aw=9007199254740991;function sw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=aw}var Si=sw;function lw(n){return n!=null&&Si(n.length)&&!Nl(n)}var Ll=lw;var cw=Object.prototype;function uw(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||cw;return n===e}var wi=uw;function dw(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Vh=dw;var pw="[object Arguments]";function fw(n){return Et(n)&&sr(n)==pw}var ld=fw;var zh=Object.prototype,hw=zh.hasOwnProperty,mw=zh.propertyIsEnumerable,yw=ld(function(){return arguments}())?ld:function(n){return Et(n)&&hw.call(n,"callee")&&!mw.call(n,"callee")},_i=yw;function gw(){return!1}var Gh=gw;var jh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,kh=jh&&typeof module=="object"&&module&&!module.nodeType&&module,xw=kh&&kh.exports===jh,Fh=xw?ft.Buffer:void 0,bw=Fh?Fh.isBuffer:void 0,vw=bw||Gh,Ln=vw;var Sw="[object Arguments]",ww="[object Array]",_w="[object Boolean]",Aw="[object Date]",Pw="[object Error]",Ow="[object Function]",Cw="[object Map]",Tw="[object Number]",Mw="[object Object]",Iw="[object RegExp]",Nw="[object Set]",Dw="[object String]",Ew="[object WeakMap]",Bw="[object ArrayBuffer]",Lw="[object DataView]",Rw="[object Float32Array]",Vw="[object Float64Array]",zw="[object Int8Array]",Gw="[object Int16Array]",kw="[object Int32Array]",Fw="[object Uint8Array]",jw="[object Uint8ClampedArray]",Uw="[object Uint16Array]",Hw="[object Uint32Array]",Qe={};Qe[Rw]=Qe[Vw]=Qe[zw]=Qe[Gw]=Qe[kw]=Qe[Fw]=Qe[jw]=Qe[Uw]=Qe[Hw]=!0;Qe[Sw]=Qe[ww]=Qe[Bw]=Qe[_w]=Qe[Lw]=Qe[Aw]=Qe[Pw]=Qe[Ow]=Qe[Cw]=Qe[Tw]=Qe[Mw]=Qe[Iw]=Qe[Nw]=Qe[Dw]=Qe[Ew]=!1;function qw(n){return Et(n)&&Si(n.length)&&!!Qe[sr(n)]}var Uh=qw;function Ww(n){return function(t){return n(t)}}var Ai=Ww;var Hh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,gs=Hh&&typeof module=="object"&&module&&!module.nodeType&&module,$w=gs&&gs.exports===Hh,cd=$w&&Ml.process,Yw=function(){try{var n=gs&&gs.require&&gs.require("util").types;return n||cd&&cd.binding&&cd.binding("util")}catch{}}(),_o=Yw;var qh=_o&&_o.isTypedArray,Xw=qh?Ai(qh):Uh,Rl=Xw;var Qw=Object.prototype,Kw=Qw.hasOwnProperty;function Zw(n,t){var e=it(n),r=!e&&_i(n),o=!e&&!r&&Ln(n),i=!e&&!r&&!o&&Rl(n),a=e||r||o||i,s=a?Vh(n.length,String):[],l=s.length;for(var u in n)(t||Kw.call(n,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||xi(u,l)))&&s.push(u);return s}var Vl=Zw;function Jw(n,t){return function(e){return n(t(e))}}var zl=Jw;var e2=zl(Object.keys,Object),Wh=e2;var t2=Object.prototype,r2=t2.hasOwnProperty;function o2(n){if(!wi(n))return Wh(n);var t=[];for(var e in Object(n))r2.call(n,e)&&e!="constructor"&&t.push(e);return t}var $h=o2;function n2(n){return Ll(n)?Vl(n):$h(n)}var Pi=n2;function i2(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Yh=i2;var a2=Object.prototype,s2=a2.hasOwnProperty;function l2(n){if(!lr(n))return Yh(n);var t=wi(n),e=[];for(var r in n)r=="constructor"&&(t||!s2.call(n,r))||e.push(r);return e}var Xh=l2;function c2(n){return Ll(n)?Vl(n,!0):Xh(n)}var Oi=c2;var u2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,d2=/^\w*$/;function p2(n,t){if(it(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||yi(n)?!0:d2.test(n)||!u2.test(n)||t!=null&&n in Object(t)}var Qh=p2;var f2=Kt(Object,"create"),Ao=f2;function h2(){this.__data__=Ao?Ao(null):{},this.size=0}var Kh=h2;function m2(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Zh=m2;var y2="__lodash_hash_undefined__",g2=Object.prototype,x2=g2.hasOwnProperty;function b2(n){var t=this.__data__;if(Ao){var e=t[n];return e===y2?void 0:e}return x2.call(t,n)?t[n]:void 0}var Jh=b2;var v2=Object.prototype,S2=v2.hasOwnProperty;function w2(n){var t=this.__data__;return Ao?t[n]!==void 0:S2.call(t,n)}var em=w2;var _2="__lodash_hash_undefined__";function A2(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Ao&&t===void 0?_2:t,this}var tm=A2;function Ci(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Ci.prototype.clear=Kh;Ci.prototype.delete=Zh;Ci.prototype.get=Jh;Ci.prototype.has=em;Ci.prototype.set=tm;var ud=Ci;function P2(){this.__data__=[],this.size=0}var rm=P2;function O2(n,t){for(var e=n.length;e--;)if(bi(n[e][0],t))return e;return-1}var Qo=O2;var C2=Array.prototype,T2=C2.splice;function M2(n){var t=this.__data__,e=Qo(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():T2.call(t,e,1),--this.size,!0}var om=M2;function I2(n){var t=this.__data__,e=Qo(t,n);return e<0?void 0:t[e][1]}var nm=I2;function N2(n){return Qo(this.__data__,n)>-1}var im=N2;function D2(n,t){var e=this.__data__,r=Qo(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var am=D2;function Ti(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Ti.prototype.clear=rm;Ti.prototype.delete=om;Ti.prototype.get=nm;Ti.prototype.has=im;Ti.prototype.set=am;var Ko=Ti;var E2=Kt(ft,"Map"),Zo=E2;function B2(){this.size=0,this.__data__={hash:new ud,map:new(Zo||Ko),string:new ud}}var sm=B2;function L2(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var lm=L2;function R2(n,t){var e=n.__data__;return lm(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Jo=R2;function V2(n){var t=Jo(this,n).delete(n);return this.size-=t?1:0,t}var cm=V2;function z2(n){return Jo(this,n).get(n)}var um=z2;function G2(n){return Jo(this,n).has(n)}var dm=G2;function k2(n,t){var e=Jo(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var pm=k2;function Mi(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Mi.prototype.clear=sm;Mi.prototype.delete=cm;Mi.prototype.get=um;Mi.prototype.has=dm;Mi.prototype.set=pm;var Rn=Mi;var F2="Expected a function";function dd(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(F2);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,r);return e.cache=i.set(o,a)||i,a};return e.cache=new(dd.Cache||Rn),e}dd.Cache=Rn;var fm=dd;var j2=500;function U2(n){var t=fm(n,function(r){return e.size===j2&&e.clear(),r}),e=t.cache;return t}var hm=U2;var H2=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,q2=/\\(\\)?/g,W2=hm(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(H2,function(e,r,o,i){t.push(o?i.replace(q2,"$1"):r||e)}),t}),mm=W2;function $2(n){return n==null?"":vh(n)}var ym=$2;function Y2(n,t){return it(n)?n:Qh(n,t)?[n]:mm(ym(n))}var mr=Y2;var X2=1/0;function Q2(n){if(typeof n=="string"||yi(n))return n;var t=n+"";return t=="0"&&1/n==-X2?"-0":t}var en=Q2;function K2(n,t){t=mr(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[en(t[e++])];return e&&e==r?n:void 0}var Gl=K2;function Z2(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Ii=Z2;var gm=At?At.isConcatSpreadable:void 0;function J2(n){return it(n)||_i(n)||!!(gm&&n&&n[gm])}var xm=J2;function bm(n,t,e,r,o){var i=-1,a=n.length;for(e||(e=xm),o||(o=[]);++i<a;){var s=n[i];t>0&&e(s)?t>1?bm(s,t-1,e,r,o):Ii(o,s):r||(o[o.length]=s)}return o}var vm=bm;function e_(n){var t=n==null?0:n.length;return t?vm(n,1):[]}var Sm=e_;function t_(n){return Eh(Rh(n,void 0,Sm),n+"")}var kl=t_;var r_=zl(Object.getPrototypeOf,Object),Ni=r_;var o_="[object Object]",n_=Function.prototype,i_=Object.prototype,wm=n_.toString,a_=i_.hasOwnProperty,s_=wm.call(Object);function l_(n){if(!Et(n)||sr(n)!=o_)return!1;var t=Ni(n);if(t===null)return!0;var e=a_.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&wm.call(e)==s_}var _m=l_;function c_(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var Am=c_;function u_(){this.__data__=new Ko,this.size=0}var Pm=u_;function d_(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Om=d_;function p_(n){return this.__data__.get(n)}var Cm=p_;function f_(n){return this.__data__.has(n)}var Tm=f_;var h_=200;function m_(n,t){var e=this.__data__;if(e instanceof Ko){var r=e.__data__;if(!Zo||r.length<h_-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Rn(r)}return e.set(n,t),this.size=e.size,this}var Mm=m_;function Di(n){var t=this.__data__=new Ko(n);this.size=t.size}Di.prototype.clear=Pm;Di.prototype.delete=Om;Di.prototype.get=Cm;Di.prototype.has=Tm;Di.prototype.set=Mm;var Ei=Di;function y_(n,t){return n&&$r(t,Pi(t),n)}var Im=y_;function g_(n,t){return n&&$r(t,Oi(t),n)}var Nm=g_;var Lm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Dm=Lm&&typeof module=="object"&&module&&!module.nodeType&&module,x_=Dm&&Dm.exports===Lm,Em=x_?ft.Buffer:void 0,Bm=Em?Em.allocUnsafe:void 0;function b_(n,t){if(t)return n.slice();var e=n.length,r=Bm?Bm(e):new n.constructor(e);return n.copy(r),r}var Rm=b_;function v_(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var a=n[e];t(a,e,n)&&(i[o++]=a)}return i}var Vm=v_;function S_(){return[]}var Fl=S_;var w_=Object.prototype,__=w_.propertyIsEnumerable,zm=Object.getOwnPropertySymbols,A_=zm?function(n){return n==null?[]:(n=Object(n),Vm(zm(n),function(t){return __.call(n,t)}))}:Fl,Bi=A_;function P_(n,t){return $r(n,Bi(n),t)}var Gm=P_;var O_=Object.getOwnPropertySymbols,C_=O_?function(n){for(var t=[];n;)Ii(t,Bi(n)),n=Ni(n);return t}:Fl,jl=C_;function T_(n,t){return $r(n,jl(n),t)}var km=T_;function M_(n,t,e){var r=t(n);return it(n)?r:Ii(r,e(n))}var Ul=M_;function I_(n){return Ul(n,Pi,Bi)}var xs=I_;function N_(n){return Ul(n,Oi,jl)}var Hl=N_;var D_=Kt(ft,"DataView"),ql=D_;var E_=Kt(ft,"Promise"),Wl=E_;var B_=Kt(ft,"Set"),$l=B_;var Fm="[object Map]",L_="[object Object]",jm="[object Promise]",Um="[object Set]",Hm="[object WeakMap]",qm="[object DataView]",R_=wo(ql),V_=wo(Zo),z_=wo(Wl),G_=wo($l),k_=wo(El),Vn=sr;(ql&&Vn(new ql(new ArrayBuffer(1)))!=qm||Zo&&Vn(new Zo)!=Fm||Wl&&Vn(Wl.resolve())!=jm||$l&&Vn(new $l)!=Um||El&&Vn(new El)!=Hm)&&(Vn=function(n){var t=sr(n),e=t==L_?n.constructor:void 0,r=e?wo(e):"";if(r)switch(r){case R_:return qm;case V_:return Fm;case z_:return jm;case G_:return Um;case k_:return Hm}return t});var Po=Vn;var F_=Object.prototype,j_=F_.hasOwnProperty;function U_(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&j_.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Wm=U_;var H_=ft.Uint8Array,Li=H_;function q_(n){var t=new n.constructor(n.byteLength);return new Li(t).set(new Li(n)),t}var Ri=q_;function W_(n,t){var e=t?Ri(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $m=W_;var $_=/\w*$/;function Y_(n){var t=new n.constructor(n.source,$_.exec(n));return t.lastIndex=n.lastIndex,t}var Ym=Y_;var Xm=At?At.prototype:void 0,Qm=Xm?Xm.valueOf:void 0;function X_(n){return Qm?Object(Qm.call(n)):{}}var Km=X_;function Q_(n,t){var e=t?Ri(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Zm=Q_;var K_="[object Boolean]",Z_="[object Date]",J_="[object Map]",eA="[object Number]",tA="[object RegExp]",rA="[object Set]",oA="[object String]",nA="[object Symbol]",iA="[object ArrayBuffer]",aA="[object DataView]",sA="[object Float32Array]",lA="[object Float64Array]",cA="[object Int8Array]",uA="[object Int16Array]",dA="[object Int32Array]",pA="[object Uint8Array]",fA="[object Uint8ClampedArray]",hA="[object Uint16Array]",mA="[object Uint32Array]";function yA(n,t,e){var r=n.constructor;switch(t){case iA:return Ri(n);case K_:case Z_:return new r(+n);case aA:return $m(n,e);case sA:case lA:case cA:case uA:case dA:case pA:case fA:case hA:case mA:return Zm(n,e);case J_:return new r;case eA:case oA:return new r(n);case tA:return Ym(n);case rA:return new r;case nA:return Km(n)}}var Jm=yA;function gA(n){return typeof n.constructor=="function"&&!wi(n)?Ch(Ni(n)):{}}var ey=gA;var xA="[object Map]";function bA(n){return Et(n)&&Po(n)==xA}var ty=bA;var ry=_o&&_o.isMap,vA=ry?Ai(ry):ty,oy=vA;var SA="[object Set]";function wA(n){return Et(n)&&Po(n)==SA}var ny=wA;var iy=_o&&_o.isSet,_A=iy?Ai(iy):ny,ay=_A;var AA=1,PA=2,OA=4,sy="[object Arguments]",CA="[object Array]",TA="[object Boolean]",MA="[object Date]",IA="[object Error]",ly="[object Function]",NA="[object GeneratorFunction]",DA="[object Map]",EA="[object Number]",cy="[object Object]",BA="[object RegExp]",LA="[object Set]",RA="[object String]",VA="[object Symbol]",zA="[object WeakMap]",GA="[object ArrayBuffer]",kA="[object DataView]",FA="[object Float32Array]",jA="[object Float64Array]",UA="[object Int8Array]",HA="[object Int16Array]",qA="[object Int32Array]",WA="[object Uint8Array]",$A="[object Uint8ClampedArray]",YA="[object Uint16Array]",XA="[object Uint32Array]",Ye={};Ye[sy]=Ye[CA]=Ye[GA]=Ye[kA]=Ye[TA]=Ye[MA]=Ye[FA]=Ye[jA]=Ye[UA]=Ye[HA]=Ye[qA]=Ye[DA]=Ye[EA]=Ye[cy]=Ye[BA]=Ye[LA]=Ye[RA]=Ye[VA]=Ye[WA]=Ye[$A]=Ye[YA]=Ye[XA]=!0;Ye[IA]=Ye[ly]=Ye[zA]=!1;function Yl(n,t,e,r,o,i){var a,s=t&AA,l=t&PA,u=t&OA;if(e&&(a=o?e(n,r,o,i):e(n)),a!==void 0)return a;if(!lr(n))return n;var c=it(n);if(c){if(a=Wm(n),!s)return Mh(n,a)}else{var d=Po(n),p=d==ly||d==NA;if(Ln(n))return Rm(n,s);if(d==cy||d==sy||p&&!o){if(a=l||p?{}:ey(n),!s)return l?km(n,Nm(a,n)):Gm(n,Im(a,n))}else{if(!Ye[d])return o?n:{};a=Jm(n,d,s)}}i||(i=new Ei);var f=i.get(n);if(f)return f;i.set(n,a),ay(n)?n.forEach(function(y){a.add(Yl(y,t,e,y,n,i))}):oy(n)&&n.forEach(function(y,g){a.set(g,Yl(y,t,e,g,n,i))});var h=u?l?Hl:xs:l?Oi:Pi,m=c?void 0:h(n);return Bh(m||n,function(y,g){m&&(g=y,y=n[g]),vi(a,g,Yl(y,t,e,g,n,i))}),a}var Xl=Yl;var QA=1,KA=4;function ZA(n){return Xl(n,QA|KA)}var Oo=ZA;var JA="__lodash_hash_undefined__";function eP(n){return this.__data__.set(n,JA),this}var uy=eP;function tP(n){return this.__data__.has(n)}var dy=tP;function Ql(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new Rn;++t<e;)this.add(n[t])}Ql.prototype.add=Ql.prototype.push=uy;Ql.prototype.has=dy;var py=Ql;function rP(n,t){for(var e=-1,r=n==null?0:n.length;++e<r;)if(t(n[e],e,n))return!0;return!1}var fy=rP;function oP(n,t){return n.has(t)}var hy=oP;var nP=1,iP=2;function aP(n,t,e,r,o,i){var a=e&nP,s=n.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var u=i.get(n),c=i.get(t);if(u&&c)return u==t&&c==n;var d=-1,p=!0,f=e&iP?new py:void 0;for(i.set(n,t),i.set(t,n);++d<s;){var h=n[d],m=t[d];if(r)var y=a?r(m,h,d,t,n,i):r(h,m,d,n,t,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!fy(t,function(g,b){if(!hy(f,b)&&(h===g||o(h,g,e,r,i)))return f.push(b)})){p=!1;break}}else if(!(h===m||o(h,m,e,r,i))){p=!1;break}}return i.delete(n),i.delete(t),p}var Kl=aP;function sP(n){var t=-1,e=Array(n.size);return n.forEach(function(r,o){e[++t]=[o,r]}),e}var my=sP;function lP(n){var t=-1,e=Array(n.size);return n.forEach(function(r){e[++t]=r}),e}var yy=lP;var cP=1,uP=2,dP="[object Boolean]",pP="[object Date]",fP="[object Error]",hP="[object Map]",mP="[object Number]",yP="[object RegExp]",gP="[object Set]",xP="[object String]",bP="[object Symbol]",vP="[object ArrayBuffer]",SP="[object DataView]",gy=At?At.prototype:void 0,pd=gy?gy.valueOf:void 0;function wP(n,t,e,r,o,i,a){switch(e){case SP:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case vP:return!(n.byteLength!=t.byteLength||!i(new Li(n),new Li(t)));case dP:case pP:case mP:return bi(+n,+t);case fP:return n.name==t.name&&n.message==t.message;case yP:case xP:return n==t+"";case hP:var s=my;case gP:var l=r&cP;if(s||(s=yy),n.size!=t.size&&!l)return!1;var u=a.get(n);if(u)return u==t;r|=uP,a.set(n,t);var c=Kl(s(n),s(t),r,o,i,a);return a.delete(n),c;case bP:if(pd)return pd.call(n)==pd.call(t)}return!1}var xy=wP;var _P=1,AP=Object.prototype,PP=AP.hasOwnProperty;function OP(n,t,e,r,o,i){var a=e&_P,s=xs(n),l=s.length,u=xs(t),c=u.length;if(l!=c&&!a)return!1;for(var d=l;d--;){var p=s[d];if(!(a?p in t:PP.call(t,p)))return!1}var f=i.get(n),h=i.get(t);if(f&&h)return f==t&&h==n;var m=!0;i.set(n,t),i.set(t,n);for(var y=a;++d<l;){p=s[d];var g=n[p],b=t[p];if(r)var S=a?r(b,g,p,t,n,i):r(g,b,p,n,t,i);if(!(S===void 0?g===b||o(g,b,e,r,i):S)){m=!1;break}y||(y=p=="constructor")}if(m&&!y){var w=n.constructor,v=t.constructor;w!=v&&"constructor"in n&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof v=="function"&&v instanceof v)&&(m=!1)}return i.delete(n),i.delete(t),m}var by=OP;var CP=1,vy="[object Arguments]",Sy="[object Array]",Zl="[object Object]",TP=Object.prototype,wy=TP.hasOwnProperty;function MP(n,t,e,r,o,i){var a=it(n),s=it(t),l=a?Sy:Po(n),u=s?Sy:Po(t);l=l==vy?Zl:l,u=u==vy?Zl:u;var c=l==Zl,d=u==Zl,p=l==u;if(p&&Ln(n)){if(!Ln(t))return!1;a=!0,c=!1}if(p&&!c)return i||(i=new Ei),a||Rl(n)?Kl(n,t,e,r,o,i):xy(n,t,l,e,r,o,i);if(!(e&CP)){var f=c&&wy.call(n,"__wrapped__"),h=d&&wy.call(t,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?t.value():t;return i||(i=new Ei),o(m,y,e,r,i)}}return p?(i||(i=new Ei),by(n,t,e,r,o,i)):!1}var _y=MP;function Ay(n,t,e,r,o){return n===t?!0:n==null||t==null||!Et(n)&&!Et(t)?n!==n&&t!==t:_y(n,t,e,r,Ay,o)}var Py=Ay;function IP(n,t){return n!=null&&t in Object(n)}var Oy=IP;function NP(n,t,e){t=mr(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var a=en(t[r]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&Si(o)&&xi(a,o)&&(it(n)||_i(n)))}var Cy=NP;function DP(n,t){return n!=null&&Cy(n,t,Oy)}var Ty=DP;function EP(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var My=EP;function BP(n,t){return t.length<2?n:Gl(n,Am(t,0,-1))}var Iy=BP;function LP(n,t){return Py(n,t)}var fd=LP;function RP(n,t){return t=mr(t,n),n=Iy(n,t),n==null||delete n[en(My(t))]}var Ny=RP;function VP(n){return _m(n)?void 0:n}var Dy=VP;var zP=1,GP=2,kP=4,FP=kl(function(n,t){var e={};if(n==null)return e;var r=!1;t=Il(t,function(i){return i=mr(i,n),r||(r=i.length>1),i}),$r(n,Hl(n),e),r&&(e=Xl(e,zP|GP|kP,Dy));for(var o=t.length;o--;)Ny(e,t[o]);return e}),Vi=FP;function jP(n,t,e,r){if(!lr(n))return n;t=mr(t,n);for(var o=-1,i=t.length,a=i-1,s=n;s!=null&&++o<i;){var l=en(t[o]),u=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var c=s[l];u=r?r(c,l,s):void 0,u===void 0&&(u=lr(c)?c:xi(t[o+1])?[]:{})}vi(s,l,u),s=s[l]}return n}var Ey=jP;function UP(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],s=Gl(n,a);e(s,a)&&Ey(i,mr(a,n),s)}return i}var By=UP;function HP(n,t){return By(n,t,function(e,r){return Ty(n,r)})}var Ly=HP;var qP=kl(function(n,t){return n==null?{}:Ly(n,t)}),Mr=qP;var ce=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,ce.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:a}=t,s={...e,[i]:a};return Object.setPrototypeOf(s,ce.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,ce.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function bs(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"&&bs(r)}return Object.freeze(n)}function Ry(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var zi=class extends Error{};function Jl(n){let t={...n};return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Yr(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(a)}return r}function Gi(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Vy(){return typeof process<"u"}function zy(n,t){for(let e of n)t(e.id,e.data)!==!0&&zy(e.children,t)}function Gy(n,t){if(t(n.id,n.data)!==!0)for(let e of n.children)Gy(e,t)}var He=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,He.prototype)}deepFreeze(){let e=0;for(;e<this.length;)bs(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Gy(o,r)}}traverse(e){zy(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(i,a)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(c=>c.id===l);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:s}}Object.setPrototypeOf(i,He.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,u=this.childrenArray(l),c={fi:o,id:i,data:a,children:s};return u=[...u,c],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(c),{data:this.modifyArrayBy(l,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(u=>u.id===r);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new zi("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),u=l.findIndex(f=>f.id===i);l=[...l];let c=l.splice(u,1)[0],d=this.modifyArrayBy(a,l);a=r,l=d.childrenArray(a);let p=c.fi;return c={...c,fi:o},l=[...l,c],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(c),d=d.modifyArrayBy(a,l),{data:d,actual:e,reverse:{type:9,parent:s,fi:p,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Ry(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),a=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return Yr(0,o,o);{let a=i[0].fi;return Yr(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return Yr(l,l+o,o)}else return Yr(a.fi,s.fi,o)}}};var ki;(t=>{function n(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let u=parseInt(l);if(isNaN(u))throw new Error("wrong index");i[l]=a[u],a[u]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let u=o[l];u===void 0?delete a[l]:a[l]=u,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(ki||(ki={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)bs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let r=e;return Vy()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:i}=e,a=this,s={fi:r,id:o,data:i};return a=[...a,s],a.sort((u,c)=>u.fi-c.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(l=>l.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let a=i.findIndex(c=>c.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:r};return i[a]=l,i.sort((c,d)=>c.fi-d.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Yr(0,r,r);{let i=o[0].fi;return Yr(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Yr(s,s+r,r)}else return Yr(i.fi,a.fi,r)}}};function Fi(n){return n&&typeof n=="object"&&n instanceof qe}var qe=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!Fi(r))return null;o+=1}r=r?Jl(r):new qe;for(let[l,u]of Object.entries(t.props)){let c=r[l];i[l]=c,u===void 0?delete r[l]:r[l]=u}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=Jl(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let u=Jl(l);u[t.path[o-1]]=r,r=u}else{let u=new qe;u[t.path[o-1]]=r,r=u}}o-=1}let a=Object.setPrototypeOf(r,qe.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},Xr;(r=>{function n(o,i){return vs(o,i)??o}r.apply=n;function t(o,i){return md(o,i)}r.merge=t;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=Ze.zoomOnce(l,s[a]),l===void 0)return i;if(!Fi(l))return;a+=1}if(l===void 0)return i;if(!!Fi(l))if(i.type===0){let u={...i.props};for(let c of Object.keys(l))delete u[c];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=hd([i],l);return u?(console.log(u),u):i}else return i}r.filterOp=e})(Xr||(Xr={}));function hd(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=vs(o.data,t[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=hd(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return r}function WP(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=vs(o.data,t[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function vs(n,t){if(!Fi(t))return t;if(n instanceof He){let e=hd(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return WP(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let a=vs(o,t[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else{if(n instanceof qe)return md(n,t);if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let a=vs(i,t[o]);r=r||a!==void 0,a===void 0&&(a=i),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function md(n,t){if(n===void 0)return t;if(t===void 0)return n;if(!Fi(t))return t;if(!Fi(n))return Xr.apply(n,t);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new qe;for(let o of e){let i=md(n===void 0?void 0:n[o],t===void 0?void 0:t[o]);r[o]=i}return r}function ky(n,t){let e={cur:[],result:[],len:0};return n=Ss(n,t,e)??n,[n,e.result]}function ec(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function tc(n){n&&(n.len-=1)}function $P(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Fy(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Ss(i.data,t,ec(e,a));tc(e),r=r||l!==void 0,l===void 0&&(l=i.data);let u=Fy(i.children,t,e);return u!==void 0?r=!0:u=i.children,{...i,id:a,data:l,children:u}});if(r)return o}function YP(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Ss(i.data,t,ec(e,a));return tc(e),r=r||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Ss(n,t,e){if(n instanceof He){let r=Fy(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof he)return YP(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,a)=>{let s=Ss(i,t,ec(e,a));return tc(e),r=r||s!==void 0,s===void 0&&(s=i),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!Gi(n)){let r={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=t[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=Ss(a,t,ec(e,i));tc(e),o=o||l!==void 0,l===void 0&&(l=a),r[i]=l}else r[i]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(typeof n=="string"){let r=t[n];return r!==void 0&&$P(e),r}else return}}var ji;(t=>{function n(e,r){let o=Ze.zoom(r,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}t.replaceProps=n})(ji||(ji={}));var Je;(s=>{function n(l,u){return{...l,path:l.path.slice(u)}}s.drop=n;function t(l,u){return e(l,u)?.data??l}s.applySimple=t;function e(l,u){let c=u.path;for(var d=[];;){let p;if(l instanceof qe&&u.type===0&&(p=l.runOp({...u,path:c.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===c.length&&(l instanceof He||l instanceof he||l instanceof ce?p=l.runOp(u):p=ki.runOp(l,u)),p!==void 0)if(p!==null){let m=p.data;for(let y=d.length-1;y>=0;y--){let g=c[y],b=d[y];if(b instanceof He){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof he){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof ce){if(typeof g=="number")throw new Error("illegal arg");m=b.modifyById(g,m)}else if(b instanceof qe){let S={...b,[g]:m};m=Object.setPrototypeOf(S,qe.prototype)}else if(typeof b=="object")if(Array.isArray(b)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let S=m;m=[...b],m[g]=S}else m={...b,[g]:m};else return null}return{data:m,actual:{...p.actual,path:c},reverse:{...p.reverse,path:c}}}else return null;let f=c[d.length],h;if(l instanceof He){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof he){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)d.push(l),l=h;else return null}}s.apply=e;function r(l,u){for(let c=0;c<l.length&&c<u.length;c++)if(l[c]!==u[c])return!0;return!1}s.pathDisjoint=r;function o(l,u){if(l.length!==u.length)return!1;for(let c=0;c<l.length;c++)if(l[c]!==u[c])return!1;return!0}s.pathEq=o;function i(l,u){return r(l.path,u.path)}s.commutative=i;function a(l,u){return l.type===0&&u.type===0&&o(l.path,u.path)?Object.keys(l.props).every(c=>u.props[c]!==void 0):!1}s.subsumed=a})(Je||(Je={}));var ws;(l=>{function n(){return[]}l.empty=n;function t(u,c){let d=[];for(let p of u){let[f,...h]=p.path;f===c&&d.push({...p,path:h})}return d}l.removePrefix=t;function e(u,c){return u.map(d=>({...d,path:[c,...d.path]}))}l.addPrefix=e;function r(u,c){return[...u,...c]}l.concat=r;function o(u,c){return[...u.filter(p=>!c.some(f=>Je.subsumed(p,f))),...c]}l.compress=o;function i(u,c){return u.every(d=>c.every(p=>Je.commutative(d,p)))}l.commutative=i;function a(u,c){for(let d of c){let p=s(u,d);p!==null&&(u=p.data)}return u}l.applyAll=a;function s(u,c){var d=u;let p=[],f=[];for(let h of c)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,g;if(h.type===3?(m=Ze.zoom(d,[...h.path,h.id]),g=Je.apply(d,{...h,type:2})):(m=Ze.zoom(d,[...h.path,h.id,"value"]),g=Je.apply(d,h)),g!==null){d=g.data;let[b,S]=ky(d,{[h.id]:m});d=b;for(let w=0;w<S.length;w++){let v=S[w],_=v.pop();if(typeof _=="number"){let A=[_];for(let T=w+1;T<S.length;T++){let C=S[T],P=C[C.length-1];if(typeof P=="number"&&Ze.equal(v,C.slice(0,C.length-1)))A.push(P),S.splice(T,1);else break}let x=Ze.zoom(d,v);y=x.map((T,C)=>A.includes(C)?h.id:T),m=x,_=v.pop()}else{if(_==="alphaOverride"||_==="alpha"){m/=100;let A=m,x=Ze.zoom(d,v.slice(0,v.length-2)),T=x.layers.map(C=>C.id===v[v.length-1]?{...C,data:{...C.data,[_]:A}}:C);Object.setPrototypeOf(T,Object.getPrototypeOf(x.layers)),x.layers=T}y=h.id}p.push({type:0,path:v,props:{[_]:m}}),f.push({type:0,path:v,props:{[_]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let m=Je.apply(d,h);m!==null&&(p.push(m.actual),d=m.data,f.push(m.reverse))}}catch(m){if(m instanceof zi)return null;throw m}return{data:d,actual:p,reverse:f.reverse()}}l.apply=s})(ws||(ws={}));var jy=Symbol(),XP=Symbol(),oc=Symbol(),zn=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof rc);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[oc];r&&r(),delete this._children[t]}}}},gd=class extends zn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,ki.runOp(this._current,t),t.path)}},xd=class extends zn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,ce.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Uy={get(n,t){if(t===oc)return()=>{n._parent=null};if(t===jy)return n._current;if(t===XP)return n;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],a=nc(n,t,i);return a!==i?(r===void 0&&(r={},n._children=r),r[t]=a,a):i},has(n,t){return t in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},QP={...Uy,set(n,t,e){let r={type:0,props:{[t]:et(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},KP={...Uy,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},Ui=class extends zn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=nc(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Hi=class extends zn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id,i=this._current[r].fi;t(this.data(this._current[r].id),o,i)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=nc(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function yd(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&Ze.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var rc=class extends zn{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){yd(this.ts,e,t),yd(this.actual,r,t),yd(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function nc(n,t,e){return e instanceof He?new Ui(n,t,e):e instanceof he?new Hi(n,t,e):e instanceof ce?new Proxy(new xd(n,t,e),KP):e!==null&&typeof e=="object"?Gi(e)?e:new Proxy(new gd(n,t,e),QP):e}function bd(n){let t=new rc(n);return[nc(t,"",n),t]}function tn(n,t){let[e,r]=bd(n);return t(e),r.result()}function et(n){return n instanceof Ui||n instanceof Hi?n._current:n!==null&&typeof n=="object"?n[jy]:n}var Ze;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function t(i,a,s){let l=r(s,i);if(l!==void 0&&typeof l=="object"&&l!==null){let u={...a};return Object.keys(l).forEach(c=>{delete u[c]}),u}else return a}o.removeOverridden=t;function e(i,a){if((i instanceof He||i instanceof Ui)&&typeof a=="string")return i.data(a);if((i instanceof he||i instanceof Hi)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function r(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=r})(Ze||(Ze={}));function Hy(n,t){let e=[];if(t.length===n.length)for(var r=0;r<n.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}function Oe(n,t){let e=[];if(t.length<=n.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}var ic=class{},_s=class extends ic{constructor(e){super();this.id=e}},As=class extends ic{constructor(e){super();this.data=e}};var Sd;try{Sd=new TextDecoder}catch{}var re,on,E=0;var Zy=[],wd=Zy,_d=0,Zt={},Ve,rn,yr=0,Qr=0,cr,Co,Ut=[],Ge,qy={useRecords:!1,mapsAsObjects:!0},Ps=class{},Pd=new Ps;Pd.name="MessagePack 0xC1";var qi=!1,Kr=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(re)return og(()=>(sc(),this?this.unpack(t,e):Kr.prototype.unpack.call(qy,t,e)));on=e>-1?e:t.length,E=0,_d=0,Qr=0,rn=null,wd=Zy,cr=null,re=t;try{Ge=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw re=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Kr){if(Zt=this,this.structures)return Ve=this.structures,ac();(!Ve||Ve.length>0)&&(Ve=[])}else Zt=qy,(!Ve||Ve.length>0)&&(Ve=[]);return ac()}unpackMultiple(t,e){let r,o=0;try{qi=!0;let i=t.length,a=this?this.unpack(t,i):uc.unpack(t,i);if(e){for(e(a);E<i;)if(o=E,e(ac())===!1)return}else{for(r=[a];E<i;)o=E,r.push(ac());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{qi=!1,sc()}}_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 ac(){try{if(!Zt.trusted&&!qi){let t=Ve.sharedLength||0;t<Ve.length&&(Ve.length=t)}let n=at();if(E==on)Ve.restoreStructures&&Wy(),Ve=null,re=null,Co&&(Co=null);else if(E>on){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!qi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ve.restoreStructures&&Wy(),sc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Wy(){for(let n in Ve.restoreStructures)Ve[n]=Ve.restoreStructures[n];Ve.restoreStructures=null}function at(){let n=re[E++];if(n<160)if(n<128){if(n<64)return n;{let t=Ve[n&63]||Zt.getStructures&&Jy()[n&63];return t?(t.read||(t.read=Od(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,Zt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[tg()]=at();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(at(),at());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=at();return t}else if(n<192){let t=n-160;if(Qr>=E)return rn.slice(E-yr,(E+=t)-yr);if(Qr==0&&on<140){let e=t<16?Cd(t):eg(t);if(e!=null)return e}return Ad(t)}else{let t;switch(n){case 192:return null;case 193:return cr?(t=at(),t>0?cr[1].slice(cr.position1,cr.position1+=t):cr[0].slice(cr.position0,cr.position0-=t)):Pd;case 194:return!1;case 195:return!0;case 196:return vd(re[E++]);case 197:return t=Ge.getUint16(E),E+=2,vd(t);case 198:return t=Ge.getUint32(E),E+=4,vd(t);case 199:return Gn(re[E++]);case 200:return t=Ge.getUint16(E),E+=2,Gn(t);case 201:return t=Ge.getUint32(E),E+=4,Gn(t);case 202:if(t=Ge.getFloat32(E),Zt.useFloat32>2){let e=cc[(re[E]&127)<<1|re[E+1]>>7];return E+=4,(e*t+(t>0?.5:-.5)>>0)/e}return E+=4,t;case 203:return t=Ge.getFloat64(E),E+=8,t;case 204:return re[E++];case 205:return t=Ge.getUint16(E),E+=2,t;case 206:return t=Ge.getUint32(E),E+=4,t;case 207:return Zt.int64AsNumber?(t=Ge.getUint32(E)*4294967296,t+=Ge.getUint32(E+4)):t=Ge.getBigUint64(E),E+=8,t;case 208:return Ge.getInt8(E++);case 209:return t=Ge.getInt16(E),E+=2,t;case 210:return t=Ge.getInt32(E),E+=4,t;case 211:return Zt.int64AsNumber?(t=Ge.getInt32(E)*4294967296,t+=Ge.getUint32(E+4)):t=Ge.getBigInt64(E),E+=8,t;case 212:if(t=re[E++],t==114)return Ky(re[E++]&63);{let e=Ut[t];if(e)return e.read?(E++,e.read(at())):e.noBuffer?(E++,e()):e(re.subarray(E,++E));throw new Error("Unknown extension "+t)}case 213:return t=re[E],t==114?(E++,Ky(re[E++]&63,re[E++])):Gn(2);case 214:return Gn(4);case 215:return Gn(8);case 216:return Gn(16);case 217:return t=re[E++],Qr>=E?rn.slice(E-yr,(E+=t)-yr):JP(t);case 218:return t=Ge.getUint16(E),E+=2,Qr>=E?rn.slice(E-yr,(E+=t)-yr):eO(t);case 219:return t=Ge.getUint32(E),E+=4,Qr>=E?rn.slice(E-yr,(E+=t)-yr):tO(t);case 220:return t=Ge.getUint16(E),E+=2,Yy(t);case 221:return t=Ge.getUint32(E),E+=4,Yy(t);case 222:return t=Ge.getUint16(E),E+=2,Xy(t);case 223:return t=Ge.getUint32(E),E+=4,Xy(t);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var ZP=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Od(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>ZP.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(at);return n.highByte===0&&(n.read=$y(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let a=n[o];r[a]=at()}return r}return e.count=0,n.highByte===0?$y(t,e):e}var $y=(n,t)=>function(){let e=re[E++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=Ve[r]||Jy()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Od(o,n)),o.read()};function Jy(){let n=og(()=>(re=null,Zt.getStructures()));return Ve=Zt._mergeStructures(n,Ve)}var Ad=lc,JP=lc,eO=lc,tO=lc;function lc(n){let t;if(n<16&&(t=Cd(n)))return t;if(n>64&&Sd)return Sd.decode(re.subarray(E,E+=n));let e=E+n,r=[];for(t="";E<e;){let o=re[E++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=re[E++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=re[E++]&63,a=re[E++]&63;r.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=re[E++]&63,a=re[E++]&63,s=re[E++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Pt.apply(String,r),r.length=0)}return r.length>0&&(t+=Pt.apply(String,r)),t}function Yy(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=at();return t}function Xy(n){if(Zt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[tg()]=at();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(at(),at());return t}}var Pt=String.fromCharCode;function eg(n){let t=E,e=new Array(n);for(let r=0;r<n;r++){let o=re[E++];if((o&128)>0){E=t;return}e[r]=o}return Pt.apply(String,e)}function Cd(n){if(n<4)if(n<2){if(n===0)return"";{let t=re[E++];if((t&128)>1){E-=1;return}return Pt(t)}}else{let t=re[E++],e=re[E++];if((t&128)>0||(e&128)>0){E-=2;return}if(n<3)return Pt(t,e);let r=re[E++];if((r&128)>0){E-=3;return}return Pt(t,e,r)}else{let t=re[E++],e=re[E++],r=re[E++],o=re[E++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){E-=4;return}if(n<6){if(n===4)return Pt(t,e,r,o);{let i=re[E++];if((i&128)>0){E-=5;return}return Pt(t,e,r,o,i)}}else if(n<8){let i=re[E++],a=re[E++];if((i&128)>0||(a&128)>0){E-=6;return}if(n<7)return Pt(t,e,r,o,i,a);let s=re[E++];if((s&128)>0){E-=7;return}return Pt(t,e,r,o,i,a,s)}else{let i=re[E++],a=re[E++],s=re[E++],l=re[E++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){E-=8;return}if(n<10){if(n===8)return Pt(t,e,r,o,i,a,s,l);{let u=re[E++];if((u&128)>0){E-=9;return}return Pt(t,e,r,o,i,a,s,l,u)}}else if(n<12){let u=re[E++],c=re[E++];if((u&128)>0||(c&128)>0){E-=10;return}if(n<11)return Pt(t,e,r,o,i,a,s,l,u,c);let d=re[E++];if((d&128)>0){E-=11;return}return Pt(t,e,r,o,i,a,s,l,u,c,d)}else{let u=re[E++],c=re[E++],d=re[E++],p=re[E++];if((u&128)>0||(c&128)>0||(d&128)>0||(p&128)>0){E-=12;return}if(n<14){if(n===12)return Pt(t,e,r,o,i,a,s,l,u,c,d,p);{let f=re[E++];if((f&128)>0){E-=13;return}return Pt(t,e,r,o,i,a,s,l,u,c,d,p,f)}}else{let f=re[E++],h=re[E++];if((f&128)>0||(h&128)>0){E-=14;return}if(n<15)return Pt(t,e,r,o,i,a,s,l,u,c,d,p,f,h);let m=re[E++];if((m&128)>0){E-=15;return}return Pt(t,e,r,o,i,a,s,l,u,c,d,p,f,h,m)}}}}}function vd(n){return Zt.copyBuffers?Uint8Array.prototype.slice.call(re,E,E+=n):re.subarray(E,E+=n)}function Gn(n){let t=re[E++];if(Ut[t])return Ut[t](re.subarray(E,E+=n));throw new Error("Unknown extension type "+t)}var Qy=new Array(4096);function tg(){let n=re[E++];if(n>=160&&n<192){if(n=n-160,Qr>=E)return rn.slice(E-yr,(E+=n)-yr);if(!(Qr==0&&on<180))return Ad(n)}else return E--,at();let t=(n<<5^(n>1?Ge.getUint16(E):n>0?re[E]:0))&4095,e=Qy[t],r=E,o=E+n-3,i,a=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ge.getUint32(r),i!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=re[r++],i!=e[a++]){r=1879048192;break}if(r===o)return E=r,e.string;o-=3,r=E}for(e=[],Qy[t]=e,e.bytes=n;r<o;)i=Ge.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=re[r++],e.push(i);let s=n<16?Cd(n):eg(n);return s!=null?e.string=s:e.string=Ad(n)}var Ky=(n,t)=>{var e=at();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=Ve[n];return o&&o.isShared&&((Ve.restoreStructures||(Ve.restoreStructures=[]))[n]=o),Ve[n]=e,e.read=Od(e,r),e.read()},rg=typeof self=="object"?self:global;Ut[0]=()=>{};Ut[0].noBuffer=!0;Ut[101]=()=>{let n=at();return(rg[n[0]]||Error)(n[1])};Ut[105]=n=>{let t=Ge.getUint32(E-4);Co||(Co=new Map);let e=re[E],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Co.set(t,o);let i=at();return o.used?Object.assign(r,i):(o.target=i,i)};Ut[112]=n=>{let t=Ge.getUint32(E-4),e=Co.get(t);return e.used=!0,e.target};Ut[115]=()=>new Set(at());var Td=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Ut[116]=n=>{let t=n[0],e=Td[t];if(!e)throw new Error("Could not find typed array for code "+t);return new rg[e](Uint8Array.prototype.slice.call(n,1).buffer)};Ut[120]=()=>{let n=at();return new RegExp(n[0],n[1])};Ut[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=E;E+=t-4,cr=[at(),at()],cr.position0=0,cr.position1=0;let r=E;E=e;try{return at()}finally{E=r}};Ut[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function og(n){let t=on,e=E,r=_d,o=yr,i=Qr,a=rn,s=wd,l=Co,u=cr,c=new Uint8Array(re.slice(0,on)),d=Ve,p=Ve.slice(0,Ve.length),f=Zt,h=qi,m=n();return on=t,E=e,_d=r,yr=o,Qr=i,rn=a,wd=s,Co=l,cr=u,re=c,qi=h,Ve=d,Ve.splice(0,Ve.length,...p),Zt=f,Ge=new DataView(re.buffer,re.byteOffset,re.byteLength),m}function sc(){re=null,Co=null,Ve=null}function ng(n){n.unpack?Ut[n.type]=n.unpack:Ut[n.type]=n}var cc=new Array(147);for(let n=0;n<256;n++)cc[n]=+("1e"+Math.floor(45.15-n*.30103));var uc=new Kr({useRecords:!1}),rO=uc.unpack,oO=uc.unpackMultiple,nO=uc.unpack,dc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},iO=new Float32Array(1),hj=new Uint8Array(iO.buffer,0,4);var pc;try{pc=new TextEncoder}catch{}var fc,Id,hc=typeof Buffer<"u",Md=hc?Buffer.allocUnsafeSlow:Uint8Array,lg=hc?Buffer:Uint8Array,ig=hc?4294967296:2144337920,U,ut,R=0,Zr,Jr=null,aO=/[\u0080-\uFFFF]/,Os=Symbol("record-id"),kn=class extends Kr{constructor(t){super(t),this.offset=0;let e,r,o,i,a,s,l=0,u=lg.prototype.utf8Write?function(x,T,C){return U.utf8Write(x,T,C)}:pc&&pc.encodeInto?function(x,T){return pc.encodeInto(x,U.subarray(T)).written}:!1,c=this;t||(t={});let d=t&&t.sequential,p=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=p?32:64),d&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,g=f+h+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],S=0,w=0;this.pack=this.encode=function(x,T){if(U||(U=new Md(8192),ut=new DataView(U.buffer,0,8192),R=0),Zr=U.length-10,Zr-R<2048?(U=new Md(U.length),ut=new DataView(U.buffer,0,U.length),Zr=U.length-10,R=0):R=R+7&2147483640,r=R,s=c.structuredClone?new Map:null,c.bundleStrings?(Jr=["",""],U[R++]=214,U[R++]=98,Jr.position=R-r,R+=4):Jr=null,o=c.structures,o){o.uninitialized&&(o=c._mergeStructures(c.getStructures()));let C=o.sharedLength||0;if(C>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let P=0;P<C;P++){let O=o[P];if(!O)continue;let M,I=o.transitions;for(let N=0,B=O.length;N<B;N++){let D=O[N];M=I[D],M||(M=I[D]=Object.create(null)),I=M}I[Os]=P+64}l=C}d||(o.nextId=C+64)}i&&(i=!1),a=o||[];try{if(v(x),Jr){ut.setUint32(Jr.position+r,R-Jr.position-r);let C=Jr;Jr=null,v(C[0]),v(C[1])}if(c.offset=R,s&&s.idsToInsert){R+=s.idsToInsert.length*6,R>Zr&&A(R),c.offset=R;let C=lO(U.subarray(r,R),s.idsToInsert);return s=null,C}return T&ug?(U.start=r,U.end=R,U):U.subarray(r,R)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,b.length>0&&(b=[]);else if(b.length>0&&!d){for(let C=0,P=b.length;C<P;C++)b[C][Os]=0;b=[]}if(i&&c.saveStructures){let C=o.sharedLength||f;o.length>C&&(o=o.slice(0,C));let P=U.subarray(r,R);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(x)):(l=C,P)}}T&mO&&(R=r)}};let v=x=>{R>Zr&&(U=A(R));var T=typeof x,C;if(T==="string"){let P=x.length;if(Jr&&P>=8&&P<4096){let I=aO.test(x);Jr[I?0:1]+=x,U[R++]=193,v(I?-P:P);return}let O;P<32?O=1:P<256?O=2:P<65536?O=3:O=5;let M=P*3;if(R+M>Zr&&(U=A(R+M)),P<64||!u){let I,N,B,D=R+O;for(I=0;I<P;I++)N=x.charCodeAt(I),N<128?U[D++]=N:N<2048?(U[D++]=N>>6|192,U[D++]=N&63|128):(N&64512)===55296&&((B=x.charCodeAt(I+1))&64512)===56320?(N=65536+((N&1023)<<10)+(B&1023),I++,U[D++]=N>>18|240,U[D++]=N>>12&63|128,U[D++]=N>>6&63|128,U[D++]=N&63|128):(U[D++]=N>>12|224,U[D++]=N>>6&63|128,U[D++]=N&63|128);C=D-R-O}else C=u(x,R+O,M);C<32?U[R++]=160|C:C<256?(O<2&&U.copyWithin(R+2,R+1,R+1+C),U[R++]=217,U[R++]=C):C<65536?(O<3&&U.copyWithin(R+3,R+2,R+2+C),U[R++]=218,U[R++]=C>>8,U[R++]=C&255):(O<5&&U.copyWithin(R+5,R+3,R+3+C),U[R++]=219,ut.setUint32(R,C),R+=4),R+=C}else if(T==="number")if(x>>>0===x)x<64?U[R++]=x:x<256?(U[R++]=204,U[R++]=x):x<65536?(U[R++]=205,U[R++]=x>>8,U[R++]=x&255):(U[R++]=206,ut.setUint32(R,x),R+=4);else if(x>>0===x)x>=-32?U[R++]=256+x:x>=-128?(U[R++]=208,U[R++]=x+256):x>=-32768?(U[R++]=209,ut.setInt16(R,x),R+=2):(U[R++]=210,ut.setInt32(R,x),R+=4);else{let P;if((P=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){U[R++]=202,ut.setFloat32(R,x);let O;if(P<4||(O=x*cc[(U[R]&127)<<1|U[R+1]>>7])>>0===O){R+=4;return}else R--}U[R++]=203,ut.setFloat64(R,x),R+=8}else if(T==="object")if(!x)U[R++]=192;else{if(s){let O=s.get(x);if(O){if(!O.id){let M=s.idsToInsert||(s.idsToInsert=[]);O.id=M.push(O)}U[R++]=214,U[R++]=112,ut.setUint32(R,O.id),R+=4;return}else s.set(x,{offset:R-r})}let P=x.constructor;if(P===Object)_(x,!0);else if(P===Array){C=x.length,C<16?U[R++]=144|C:C<65536?(U[R++]=220,U[R++]=C>>8,U[R++]=C&255):(U[R++]=221,ut.setUint32(R,C),R+=4);for(let O=0;O<C;O++)v(x[O])}else if(P===Map){C=x.size,C<16?U[R++]=128|C:C<65536?(U[R++]=222,U[R++]=C>>8,U[R++]=C&255):(U[R++]=223,ut.setUint32(R,C),R+=4);for(let[O,M]of x)v(O),v(M)}else{for(let O=0,M=fc.length;O<M;O++){let I=Id[O];if(x instanceof I){let N=fc[O];if(N.write){N.type&&(U[R++]=212,U[R++]=N.type,U[R++]=0),v(N.write.call(this,x));return}let B=U,D=ut,G=R;U=null;let L;try{L=N.pack.call(this,x,V=>(U=B,B=null,R+=V,R>Zr&&A(R),{target:U,targetView:ut,position:R-V}),v)}finally{B&&(U=B,ut=D,R=G,Zr=U.length-10)}L&&(L.length+R>Zr&&A(L.length+R),R=sO(L,U,R,N.type));return}}_(x,!x.hasOwnProperty)}}else if(T==="boolean")U[R++]=x?195:194;else if(T==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))U[R++]=211,ut.setBigInt64(R,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)U[R++]=207,ut.setBigUint64(R,x);else if(this.largeBigIntToFloat)U[R++]=203,ut.setFloat64(R,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");R+=8}else if(T==="undefined")this.encodeUndefinedAsNil?U[R++]=192:(U[R++]=212,U[R++]=0,U[R++]=0);else if(T==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+T)},_=this.useRecords===!1?this.variableMapSize?x=>{let T=Object.keys(x),C=T.length;C<16?U[R++]=128|C:C<65536?(U[R++]=222,U[R++]=C>>8,U[R++]=C&255):(U[R++]=223,ut.setUint32(R,C),R+=4);let P;for(let O=0;O<C;O++)v(P=T[O]),v(x[P])}:(x,T)=>{U[R++]=222;let C=R-r;R+=2;let P=0;for(let O in x)(T||x.hasOwnProperty(O))&&(v(O),v(x[O]),P++);U[C+++r]=P>>8,U[C+r]=P&255}:x=>{let T=Object.keys(x),C,P=a.transitions||(a.transitions=Object.create(null)),O=0;for(let I=0,N=T.length;I<N;I++){let B=T[I];C=P[B],C||(C=P[B]=Object.create(null),O++),P=C}let M=P[Os];if(M)M>=96&&m?(U[R++]=((M-=96)&31)+96,U[R++]=M>>5):U[R++]=M;else{M=a.nextId,M||(M=64),M<y&&this.shouldShareStructure&&!this.shouldShareStructure(T)?(M=a.nextOwnId,M<g||(M=y),a.nextOwnId=M+1):(M>=g&&(M=y),a.nextId=M+1);let I=T.highByte=M>=96&&m?M-96>>5:-1;P[Os]=M,a[M-64]=T,M<y?(T.isShared=!0,a.sharedLength=M-63,i=!0,I>=0?(U[R++]=(M&31)+96,U[R++]=I):U[R++]=M):(I>=0?(U[R++]=213,U[R++]=114,U[R++]=(M&31)+96,U[R++]=I):(U[R++]=212,U[R++]=114,U[R++]=M),O&&(S+=w*O),b.length>=h&&(b.shift()[Os]=0),b.push(P),v(T))}for(let I=0,N=T.length;I<N;I++)v(x[T[I]])},A=x=>{let T;if(x>16777216){if(x-r>ig)throw new Error("Packed buffer would be larger than maximum buffer size");T=Math.min(ig,Math.round(Math.max((x-r)*(x>67108864?1.25:2),4194304)/4096)*4096)}else T=(Math.max(x-r<<2,U.length-1)>>12)+1<<12;let C=new Md(T);return ut=new DataView(C.buffer,0,T),U.copy?U.copy(C,0,r,x):C.set(U.slice(r,x)),R-=r,r=0,Zr=C.length-10,U=C}}useBuffer(t){U=t,ut=new DataView(U.buffer,U.byteOffset,U.byteLength),R=0}};Id=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ps];fc=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:a}=t(6);o[a++]=214,o[a++]=255,i.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:a}=t(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?ag(n,16,t):sg(hc?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==lg&&this.structuredClone?ag(n,Td.indexOf(e.name),t):sg(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function ag(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function sg(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function sO(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function lO(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,a)=>i.offset>a.offset?1:-1);e=t.pop();){let i=e.offset,a=e.id;n.copyWithin(i+r,i,o),r-=6;let s=i+r;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function nn(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");Id.unshift(n.Class),fc.unshift(n)}ng(n)}var cg=new kn({useRecords:!1}),cO=cg.pack,uO=cg.pack;var{NEVER:dO,ALWAYS:pO,DECIMAL_ROUND:fO,DECIMAL_FIT:hO}=dc,ug=512,mO=1024;var dg=new kn({structuredClone:!0});nn({Class:ce.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,ce.prototype),n}});nn({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});nn({Class:He.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,He.prototype),n}});nn({Class:_s.prototype.constructor,type:4,write(n){return n.id},read(n){return new _s(n)}});nn({Class:As.prototype.constructor,type:5,write(n){return n.data},read(n){return new As(n)}});nn({Class:qe.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,qe.prototype),n}});function yO(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function Nd(n){if(Gi(n))return n;if(Array.isArray(n))return n.map(Nd);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=Nd(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var mc;(r=>{function n(o){return dg.pack(o)}r.serialize=n;function t(o){return dg.unpack(o)}r.deserialize=t;function e(o){return yO(n(Nd(o))).toString()}r.checksum=e})(mc||(mc={}));var ln="personal camera",cn="a218fcc3-276b-49b9-b485-49037fd14f5f",yg=2960946,dt=5526619;var Cs;(d=>{function n(p,f){return p[0]===f[0]&&p[1]===f[1]}d.isEqual=n;function t(p,f,h){return[p[0]+(f[0]-p[0])*h,p[1]+(f[1]-p[1])*h]}d.lerp=t;function e(p,f){return[p[0]+f[0],p[1]+f[1]]}d.add=e;function r(p,f){return[p[0]-f[0],p[1]-f[1]]}d.sub=r;function o(p,f){return Math.pow(f[0]-p[0],2)+Math.pow(f[1]-p[1],2)}d.distanceSquared=o;function i(p,f){return Math.sqrt(o(p,f))}d.distance=i;function a(p,f){return p[0]*f[0]+p[1]*f[1]}d.dot=a;function s(p,f){return[p[0]*f,p[1]*f]}d.scalarMultiply=s;function l(p,f,h){let m=d.sub(f,p),y=d.sub(h,p),g=d.dot(m,y)/d.dot(m,m),b=d.scalarMultiply(m,g);return d.add(p,b)}d.projectionOnto=l;function u(p,f,h){return i(p,l(p,f,h))}d.projectionOntoDistance=u;function c(p,f){return[(p[0]+f[0])*.5,(p[1]+f[1])*.5]}d.center=c})(Cs||(Cs={}));var an;(s=>{function n(l,u){return l[0]===u[0]&&l[1]===u[1]&&l[2]===u[2]}s.isEqual=n;function t(l,u){return[l[0]+u[0],l[1]+u[1],l[2]+u[2]]}s.add=t;function e(l,u){return[l[0]-u[0],l[1]-u[1],l[2]-u[2]]}s.sub=e;function r(l,u){return[l[0]/u[0],l[1]/u[1],l[2]/u[2]]}s.div=r;function o(l,u){return[l[0]*u[0],l[1]*u[1],l[2]*u[2]]}s.mul=o;function i(l,u){return Math.hypot(l[0]-u[0],l[1]-u[1],l[2]-u[2])}s.dist=i;function a(l,u,c){return[l[0]+(u[0]-l[0])*c,l[1]+(u[1]-l[1])*c,l[2]+(u[2]-l[2])*c]}s.lerp=a})(an||(an={}));var pg;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(pg||(pg={}));var sn;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,a){let s=a.slice(0);for(var l=0,u=a.length;l<u;l+=3){let c=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/c,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/c,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/c}return s}o.applyMatrix4=r})(sn||(sn={}));var Ot;(c=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}c.isRGB=n,c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}c.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}c.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}c.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}c.toHex=s;function l(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}c.equals=l;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}c.lerp=u})(Ot||(Ot={}));var we;(l=>{l.white={...Ot.white,a:1},l.transparent={...Ot.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}l.from0to1=e;function r(u,c){return{...Ot.fromHex(u),a:c}}l.fromHexAndA=r;function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:u.a}}l.toRgb255a1=o;function i(u,c){return Ot.equals(u,c)&&u.a===c.a}l.equals=i;function a(u,c,d){return{r:u.r+(c.r-u.r)*d,g:u.g+(c.g-u.g)*d,b:u.b+(c.b-u.b)*d,a:u.a+(c.a-u.a)*d}}l.lerp=a;function s({r:u,g:c,b:d,a:p}=l.white){return`rgba(${u*255}, ${c*255}, ${d*255}, ${p})`}l.toStyle=s})(we||(we={}));var yc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(yc||(yc={}));var fg;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(fg||(fg={}));var hg;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(hg||(hg={}));var mg;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(mg||(mg={}));function Dd(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var Ir;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Ir||(Ir={}));var un;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(un||(un={}));var eo;(e=>{function n(r,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(r[0],r[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[r[0]+r[0]*o,0,0]},grid:{count:[2,2,2],size:r.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function t(r,o){let i={...r};if(gO.forEach(a=>{Object.assign(i,{[a]:o[a]??r[a]})}),i.radial={...r.radial},o.radial){let a=r.radial,s=o.radial;xO.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...r.linear},o.linear){let a=r.linear,s=o.linear;bO.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...r.grid},o.grid){let a=r.grid,s=o.grid;vO.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...r.toObject},o.toObject){let a=r.toObject,s=o.toObject;SO.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...r.randomnessObject},o.randomnessObject){let a=r.randomnessObject,s=o.randomnessObject;wO.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=t})(eo||(eo={}));var gc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}r.toOps=e})(gc||(gc={}));var gO=["count"],xO=["radius","start","end","position","scale","rotation"],bO=["position","scale","rotation"],vO=["count","size"],SO=["count","position","scale","rotation"],wO=["strength","scale","rotation","position","movement","seed","freqScale"];var xc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(xc||(xc={}));var bc;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:we.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:we.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:we.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(bc||(bc={}));var Wi;(r=>(r.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},r.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},r.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:r.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeLoopDelayStart:"end",emitTimeDuration:1,...r.defaultCollisionData}))(Wi||(Wi={}));var dn;(t=>t.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(dn||(dn={}));var Ed;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Ed||(Ed={}));var Bd;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Bd||(Bd={}));var vc;(t=>t.defaultData={...Bd.defaultData,...Ed.defaultData})(vc||(vc={}));var gg;(t=>{function n(e,r){let o=[];if("material"in e){let i=typeof e.material=="string"?r.materials[e.material]??r.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?r.materials[i]??r.lib.materials[i]?.asset:i;a&&o.push(a)}return o}t.getMaterialData=n})(gg||(gg={}));var $i;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))($i||($i={}));var xg;(t=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}t.is=n})(xg||(xg={}));function vg(n){return n.type!=="displace"}var bg;(t=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=n})(bg||(bg={}));var Sg=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],wg=["wrapping","image","video","name"],ht;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let u=i.texture;u&&Object.assign(u,s)}}o.patch=n;function t(i,a){return i==="light"&&a?e(a):r(i)}o.defaultData=t;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function r(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:$i.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...a,type:"color",color:Ot.fromHex(dt)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Ot.fromHex(6710886),a:1},colorB:{...Ot.fromHex(6710886),a:1},colorC:{...Ot.fromHex(16777215),a:1},colorD:{...Ot.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:we.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:we.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:we.fromHexAndA(0,1),contourColor:we.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Ot.fromHex(0),a:1},colorB:{...Ot.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(ht||(ht={}));var Bt;(u=>{function n(c){return!c.layers.some(p=>p.data.type==="texture"&&p.data.projection!==0||p.data.type==="depth"&&!p.data.isWorldSpace||p.data.type==="noise"||p.data.type==="displace")}u.isMergable=n;function t(c){let d="";return c.layers.forEach(p=>{Object.entries(p.data).forEach(([f,h])=>{d+=`${f}${h}`,Array.isArray(h)?h.forEach(m=>d+=`${m}`):typeof h=="object"?Object.values(h).forEach(m=>{typeof m=="number"?d+=`${m.toFixed(4)}`:d+=`${m}`}):d+=`${h}`})}),d}u.getHash=t;function e(){return{layers:new he}}u.defaultEmptyData=e;function r(c="layer1",d="layer2"){return i("phong",c,d)}u.defaultData=r;function o(c,d){return{...c,name:d}}u.withName=o;function i(c,d="layer1",p="layer2"){let f=new he;return f.push({fi:0,data:ht.defaultData("light",c),id:d}),f.push({fi:1,data:ht.defaultData("color"),id:p}),{layers:f}}u.defaultTwoLayerData=i;function a(c){let d=ht.defaultData("texture");c&&Object.assign(d.texture,{image:c});let p=new he;return p.push({fi:0,data:d,id:"layer1"}),p.push({fi:1,data:{...ht.defaultData("transmission"),alpha:1},id:"layer2"}),p.push({fi:2,data:{...ht.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:p}}u.defaultUIObjectMaterial=a;function s(c,d="phong",p="layer1",f="layer2"){let h=ht.defaultData("texture");Object.assign(h.texture,{image:c});let m=new he;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:ht.defaultData("light",d),id:f}),{layers:m}}u.defaultTwoLayerTextureData=s;function l(c,d="phong",p="layer1",f="layer2"){let h=ht.defaultData("video");Object.assign(h.texture,{video:c});let m=new he;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:ht.defaultData("light",d),id:f}),{layers:m}}u.defaultTwoLayerVideoTextureData=l})(Bt||(Bt={}));var Yi;(t=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Yi||(Yi={}));var Xi;(t=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=n})(Xi||(Xi={}));var Ld={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Sc;(t=>{function n(e,r){let o={...e};return _O.forEach(i=>{Object.assign(o,{[i]:r[i]??e[i]})}),o}t.merge=n})(Sc||(Sc={}));var wc={shape:Ld,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},_O=["depth","offset","angle","twist","startScale","endScale"];var Ts;(e=>{function n(r){return r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"||r==="UIGeometry"}e.is2DParametricMesh=n;function t(r){return r==="PolygonGeometry"||r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"||r==="PathGeometry"||r==="VectorGeometry"||r==="ConeGeometry"||r==="CubeGeometry"||r==="CylinderGeometry"||r==="DodecahedronGeometry"||r==="HelixGeometry"||r==="IcosahedronGeometry"||r==="LatheGeometry"||r==="PyramidGeometry"||r==="SphereGeometry"||r==="PlaneGeometry"||r==="BackdropGeometry"||r==="TorusGeometry"||r==="TorusKnotGeometry"||r==="BooleanGeometry"||r==="TextGeometry"}e.isParametricMesh=t})(Ts||(Ts={}));var _c;(t=>{function n(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Sc.merge(o.extrusion,r.extrusion))),o}t.merge=n})(_c||(_c={}));var pn;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="UIGeometry")return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:Xi.defaultData(),extrusion:wc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Yi.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}t.defaultData=n})(pn||(pn={}));var Ac;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:Ot.white,near:.1,far:2e3})(Ac||(Ac={}));var Pc;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(Pc||(Pc={}));var Rd;(t=>t.defaultData={softShadowQuality:"low"})(Rd||(Rd={}));var Vd;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Vd||(Vd={}));var zd;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(zd||(zd={}));var Ms;(t=>t.defaultData={usePhysics:!1,gravity:-10})(Ms||(Ms={}));var Gd;(t=>t.defaultData={playCamera:ln,gameControlObject:null})(Gd||(Gd={}));var Oc;(t=>t.defaultData={backgroundColor:we.fromHexAndA(yg,1),postprocessing:Pc.defaultData,fog:Ac.defaultData,globalPhysics:Ms.defaultData,ambient:Vd.defaultData,ao:zd.defaultData,shadow:Rd.defaultData,publish:Gd.defaultData})(Oc||(Oc={}));var Cc;(t=>t.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceIntensity:.5,forceDambing:.95})(Cc||(Cc={}));var _g;(e=>{function n(r){return r==="Component"||r==="Instance"}e.isComponentRelated=n;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(_g||(_g={}));var Qi;(o=>{o.identity={...yc.identity,hiddenMatrix:sn.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,a){return Ol({position:an.isEqual(i.position,a.position)?void 0:a.position,rotation:an.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:an.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:sn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(Qi||(Qi={}));var gt;(t=>t.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,physics:dn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Qi.identity,cloner:null})(gt||(gt={}));var Tc;(t=>t.defaultData={type:"Empty",...gt.defaultData})(Tc||(Tc={}));var Ag;(t=>t.defaultData={type:"ParticleCollider",...Cc.defaultData,...gt.defaultData})(Ag||(Ag={}));var Pg;(t=>t.defaultData={type:"Component",...gt.defaultData})(Pg||(Pg={}));var Og;(t=>t.defaultData={type:"Particle",...gt.defaultData,...Wi.defaultData})(Og||(Og={}));var Fn;(t=>t.defaultData={type:"Mesh",...gt.defaultData,...vc.defaultData})(Fn||(Fn={}));var jn;(t=>t.defaultData={...gt.defaultData,...Qi.identity,position:[0,0,un.DefaultTargetOffset],...un.defaultData})(jn||(jn={}));var Mc;(e=>{function n(r){return{...gt.defaultData,...bc.defaultData(r)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Mc||(Mc={}));var Ki;(e=>{function n(r,o,i=0){for(;i<o.length;){let a=r?r[o[i]]:void 0;if(o.length===i+1)return a;if(a)r=a.descendants,i+=1;else return}}e.resolveWithDes=n;function t(r,o,i=0){let a=n(r,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(Ki||(Ki={}));var to;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...gt.defaultData,...s,component:a,overrides:new qe,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=r;function o(a){let s=Qi.fromObject(a.data);return r(a.id,s)}i.fromComponentData=o})(to||(to={}));var To;(e=>{e.defaultData={type:"Page",...gt.defaultData,physics:{...dn.defaultData,fusedBody:!1},...Oc.defaultData,camera:jn.defaultData};function t(r){return r.uiScene!==void 0}e.isUIPage=t})(To||(To={}));var Ic;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:sn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:dn.defaultData,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...un.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...gt.defaultData,...Fn.defaultData,geometry:pn.defaultData("RectangleGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...gt.defaultData,...Fn.defaultData,geometry:pn.defaultData("BooleanGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...gt.defaultData,...Fn.defaultData,geometry:pn.defaultData("TextGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")}))(Ic||(Ic={}));var Un;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new qe}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new qe})))):Ir.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function t(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=tn(s.material,l=>{if(typeof l!="string")for(let[u,c]of Object.entries(a.material.layers)){let d=l.layers.data(u);d&&ht.patch(d,c)}}).data),s.materials&&a.materials&&(s.materials=tn(s.materials,l=>{for(let u=0;u<s.materials.length;u++){let c=a.materials[u];if(typeof c!="string")for(let[d,p]of Object.entries(c.layers)){let f=l[u]?.layers?.data(d);f&&ht.patch(f,p)}}}).data),s}function e(i,a){let s,l=[],u={orthographic:0,perspective:0,geometry:0};function c(d,p){for(let[f,h]of Object.entries(p.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...d,"layers",f,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};l.push(g)}}}for(let[d,p]of Object.entries(a))if(d!=="name")if(d==="cloner")l.push(...gc.toOps(p,["cloner"]));else if(d==="pathSnapping")l.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")c(["material"],p);else if(d==="materials")for(let[f,h]of Object.entries(p))c(["materials",f],h);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};l.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[d]=p;return l}o.toOps=e;function r(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Qi.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),Ir.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:_c.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:eo.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:eo.merge(s.cloner,a.cloner)});else if(xc.is(i.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=Ot.clone(l.color))}return s}o.patch=r})(Un||(Un={}));var Zi;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Zi||(Zi={}));var Nr;(t=>t.defaultData={orbitControls:Zi.defaultData,playPage:cn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,i=0;return r<5?i=-30:r<10&&(i=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(Nr||(Nr={}));var kd;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(kd||(kd={}));var Fd;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Fd||(Fd={}));var Mo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...kd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Fd.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Mo||(Mo={}));var Cg;(e=>{function n(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function t(r,o,i){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Ji.getComponentData(r,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=t})(Cg||(Cg={}));var Io;(l=>{l.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function t(u={withLight:!0,withSquare:!0}){let c=[],d=Ic.defaultMeshObject;u.withLight===!0&&c.push({fi:-1,data:Mc.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),u.withSquare===!0&&c.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:d,children:[]});let p=new He;return p.push({fi:1,id:cn,data:{...To.defaultData,name:"Scene 1"},children:c}),p}l.defaultData={objects:t(),publish:Nr.defaultData,styles:Mo.defaultData()},l.emptyDataWithoutPage=function(){return{objects:new He,publish:Nr.defaultData,styles:Mo.defaultData()}},l.emptyDataWithPage=function(u){return{objects:t(u),publish:Nr.defaultData,styles:Mo.defaultData()}},l.emptyData=function(){return{objects:new He,publish:{...Nr.defaultData},styles:Mo.defaultData()}};function a(u){return{...l.defaultData,objects:jt(u,He.prototype)}}l.withObjs=a;function s(u,c){return a([{id:u,data:c,children:[],fi:0}])}l.withObj=s})(Io||(Io={}));var ea;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ea||(ea={}));var ta;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ta||(ta={}));var Nc;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function t(a){return typeof a=="number"}i.isNumber=t;function e(a){return typeof a=="boolean"}i.isBoolean=e;function r(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=r;function o(a){return i.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(Nc||(Nc={}));var jd;(t=>t.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(jd||(jd={}));var Tg;(t=>t.all=[...jd.all,"components"])(Tg||(Tg={}));var Mg;(t=>{function n(){return{images:new ce,videos:new ce,colors:new ce,audios:new ce,particles:new ce,fonts:new ce,materials:new ce,components:new ce,variables:new ce}}t.defaultData=n})(Mg||(Mg={}));var No;(t=>{function n(){return{images:new ce,videos:new ce,colors:new ce,audios:new ce,particles:new ce,fonts:new ce,materials:new ce,components:new ce,variables:new ce}}t.defaultData=n})(No||(No={}));var xr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},jt(a,ce.prototype)}i.defaultColors=n;function t(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...ta.emptyImage,name:"AI generated image"}),jt(s,ce.prototype)}i.defaultImages=t;function e(){return{catelogs:new ce,materials:new ce,images:new ce,videos:new ce,colors:new ce,audios:new ce,particles:new ce,fonts:new ce,variables:new he,lib:No.defaultData()}}i.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),u=Math.floor((a-l*3600)/60),c=Math.round(a-l*3600-u*60);return{textValue:[l,u,c]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),u=Math.round(a-l*60);return{textValue:[l,u]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(xr||(xr={}));import{MathUtils as Bc}from"three";var Dc;(t=>t.list=["idle","move","jump","run"])(Dc||(Dc={}));var Ec;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new he,move:new he,jump:new he,run:new he},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:we.fromHexAndA(3728051,1)}}))(Ec||(Ec={}));function Ig(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Mr(et(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...et(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Do(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function Eo(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,i)=>{o===void 0&&(r.materials[i]=Bt.defaultData(),o=r.materials[i]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Bt.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Bt.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&t(o.material)})})}function AO(n){Object.assign(n.scene.publish,{orbitControls:{...Zi.defaultData,...et(n.scene.publish.orbitControls)}})}function PO(n){Object.assign(n.scene.publish.settings,{video:{...Nr.defaultData.settings.video,...et(n.scene.publish.settings.video)}})}function OO(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((Sg.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(i))(wg.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(a=>{t(a)})})})}function CO(n){n.scene.publish.withBackground=!0}function TO(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function MO(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function IO(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function NO(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.unproxy().parent(t);if(r){let o=et(n.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=et(e).booleanExclude!==!0)}})}function DO(n){n.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function EO(n){function t(r){Object.setPrototypeOf(r,qe.prototype),r.texture&&Object.setPrototypeOf(r.texture,qe.prototype)}function e(r){Object.setPrototypeOf(r,qe.prototype);for(let o in r)t(r[o])}n.scene.objects.traverse((r,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=et(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],u=et(l).layers;e(u),l.layers=u}})})}function Ng(n){n.layers===void 0&&Object.assign(n,Bt.defaultTwoLayerData("lambert"))}function Ud(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...et(t),colors:e,steps:r};Object.assign(t,o)}})}function BO(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Dg(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Ud(r)}):"material"in e&&typeof e.material!="string"&&Ud(e.material)}),Object.values(n.shared.materials).forEach(t=>Ud(t))}function LO(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function RO(n){n.shared.audios=jt({},ce.prototype)}function VO(n){n.shared.videos=jt({},ce.prototype)}function zO(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function GO(n){Object.entries(et(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(et(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function kO(n){n.scene.publish.settings.web.preload=!1}function Eg(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function Bg(n){n.layers&&n.layers.forEach(t=>{vg(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function FO(n){n.shared.fonts=jt({},ce.prototype)}function jO(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function UO(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=Bt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=jO(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...gt.defaultData,...Fn.defaultData,flatShading:!1,wireframe:!1,geometry:{...pn.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:et(o.states),events:et(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=et(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function HO(n){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new he,move:new he,jump:new he}});else{let i=new he;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Bc.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},c={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(c,Mr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(c,{control1:{...a.control1},control2:{...a.control2}});let d={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},p={state:a.state,...d,...c},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:Bc.generateUUID(),data:u},{fi:1,id:Bc.generateUUID(),data:p})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function qO(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let a=new he,s=[];if(e.events.forEach((l,u,c)=>{if(l.type==="Audio"&&l.trigger===i){let d;s.push(u),l.interaction==="play"?d={...Mr(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(d={...Mr(l,"interaction","delay","object","playAudio"),type:"Audio"}),d&&a.push({fi:c,id:u,data:d})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(u=>u.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Bc.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Lg(n){let t=n.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=ht.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function Rg(n){Do(n,Lg),Eo(n,Lg)}function WO(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function $O(n){n.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function YO(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Bt.defaultTwoLayerData("phong"))})}function XO(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((t,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function QO(n){n.scene.objects.traverse((t,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function KO(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function ZO(n){let{video:t}=n.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function JO(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function eC(n){let t=n.scene.environment.usePhysics;n.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function tC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=Ec.defaultDataThirdPerson.navmesh)})})}function rC(n){n.scene.styles||(n.scene.styles=Mo.defaultData())}function Vg(n){n.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function oC(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Eo(n,Vg),Do(n,Vg)}function nC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new he})})})}function iC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function zg(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function Gg(n,t){if(t<1&&(Eo(n,Ig),Do(n,Ig),n.schema=1),t<2&&(AO(n),n.schema=2),t<3&&(OO(n),n.schema=3),t<4&&(CO(n),n.schema=4),t<5&&(TO(n),n.schema=5),t<6&&(MO(n),n.schema=6),t<7&&(IO(n),n.schema=7),t<8&&(n.schema=8),t<9&&(Dg(n),n.schema=9),t<10&&(BO(n),n.schema=10),t<11&&(LO(n),n.schema=11),t<12&&(Dg(n),n.schema=12),t<13&&(RO(n),n.schema=13),t<14&&(zO(n),n.schema=14),t<15&&(GO(n),n.schema=15),t<16&&(kO(n),n.schema=16),t<17&&(Eo(n,Eg),Do(n,Eg),n.schema=17),t<18&&(Eo(n,Ng),Do(n,Ng),n.schema=18),t<19&&(PO(n),n.schema=19),t<20&&(FO(n),UO(n),n.schema=20),t<21&&(HO(n),qO(n),n.schema=21),t<22&&(Rg(n),n.schema=22),t<23&&(WO(n),n.schema=23),t<24&&($O(n),n.schema=24),(t<25||n.shared.videos===void 0)&&(VO(n),t<25&&(n.schema=25)),t<26&&(NO(n),n.schema=26),t<27&&(DO(n),n.schema=27),t<28&&(Rg(n),n.schema=28),t<29&&(EO(n),n.schema=29),t<30&&(YO(n),n.schema=30),t<31&&(XO(n),n.schema=31),t<33&&(QO(n),n.schema=33),t<34&&(KO(n),n.schema=34),t<35&&(ZO(n),n.schema=35),t<36&&(JO(n),n.schema=36),t<37&&(eC(n),n.schema=37),t<38&&(Eo(n,Bg),Do(n,Bg),n.schema=38),t<39&&(tC(n),n.schema=39),t<40&&(rC(n),n.schema=40),t<41&&(oC(n),n.schema=41),t<42&&(nC(n),n.schema=42),t<43&&(iC(n),n.schema=43),t<99){Eo(n,zg),Do(n,zg),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=ln);let e=et(n.scene.objects),r=n.scene.objects;n.scene.publish.playPage=cn,r.insertBefore(null,null,[{id:cn,data:{...To.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Mr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Mr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ms.defaultData,...Mr(n.scene.environment,"usePhysics","gravity")},camera:et(n.scene.ownerCamera)??To.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Io.TRASH_CAN_ID&&r.move(cn,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,dn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function kg(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function aC(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}function sC(n){Array.isArray(et(n.events))&&n.events?.forEach(t=>{"disabled"in t||(t.disabled=!1),(t.type==="MouseDown"||t.type==="MouseUp"||t.type==="MousePress")&&(t.mode=t.mode||"Object")})}var ra=180/Math.PI;function Fg(n){n.rotation=n.rotation.slice(0,3).map(t=>t*ra)}function jg(n){Fg(n),n.type==="Page"&&Fg(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*ra))});let t=n.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*ra),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*ra),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=ra,t.extrusion.twist*=ra),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(et(n.events))&&n.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function lC(n){n.shared.variables=jt({},ce.prototype)}function cC(n){let t=et(n.shared.variables);n.shared.variables=jt(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),he.prototype)}var ro=111;function Ug(n,t){t(n.data);for(let e of n.children)Ug(e,t)}function uC(n){let t=n.schema??104;t!==ro&&t<105&&(Ug(n.asset,jg),n.schema=105)}function dC(n){n.shared.particles=jt({},ce.prototype),n.shared.lib=No.defaultData()}function pC(n){n.scene.objects.traverse((t,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function Lc(n){let t=n.schema??0;if(t!==ro){console.warn("updating from ",t,"to ",ro),Gg(n,t),t<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Nr.defaultData.joystickSizeAndXYOffset),n.schema=100),t<101&&(Eo(n,kg),Do(n,kg),n.schema=101),t<102&&(aC(n),n.schema=102),t<104&&(n.shared.catelogs=new ce,n.shared.lib=No.defaultData(),n.schema=104),t<105&&(lC(n),n.scene.objects.traverse((e,r)=>{jg(r)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))uC(e);t<106&&(cC(n),n.schema=106),t<107&&(n.shared.lib.variables=No.defaultData().variables,n.schema=107),t<109&&(dC(n),n.schema=109),t<110&&(pC(n),n.schema=110),t<111&&(n.scene.objects.traverse((e,r)=>{sC(r)}),n.schema=111)}}var Ji;(l=>{l.defaultData={schema:ro,scene:Io.defaultData,frames:new ce().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors()}},l.emptyDataForImports=function(u){let c=Io.emptyDataWithPage(u);return{schema:ro,scene:c,frames:new ce().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors(),images:xr.defaultImages(u)}}},l.emptyData=function(){return{schema:ro,scene:Io.emptyDataWithPage(),frames:new ce().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:xr.emptyData()}},l.clipboard2dData=function(){return{schema:ro,scene:Io.emptyData(),frames:new ce,shared:xr.emptyData()}},l.collabHelper={...ws,updateSchema(u){return(u.schema??0)<ro?tn(u,Lc):(u.schema??0)-ro}};function i(u){let c=l.collabHelper.updateSchema(u);return typeof c=="number"?c===0?u:null:c.data}l.updateSchemaDirectly=i;function a(u){return{...u,shared:{...u.shared,lib:No.defaultData()}}}l.withoutLib=a;function s(u,c){let d=u.scene.objects.get(c);if(d&&d.data.type==="Component")return d;{let p=u.shared.lib.components[c];if(p)return p.asset}}l.getComponentData=s})(Ji||(Ji={}));var Hg;(t=>{function n(e){return!0}t.is=n})(Hg||(Hg={}));var Rc;(r=>{r.defaultData={position:[0,0],scale:[1,1],rotation:0};function t(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale}}r.merge=t;function e(o,i){return Ol({position:Cs.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:Cs.isEqual(o.scale,i.scale)?void 0:i.scale})}r.diff=e})(Rc||(Rc={}));var Hd;(t=>t.defaultData={horizontalConstraint:0,verticalConstraint:0})(Hd||(Hd={}));var Vc;(t=>t.defaultData={opacity:1,fill:{color:we.white,enabled:!0},stroke:{color:we.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:we.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:we.from0to1([0,0,0,1]),enabled:!1,spread:0}})(Vc||(Vc={}));var Hn;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function t(a,s){if(s===void 0)return a;let l={...a},u=["width","height","cornerRadius"];for(let c of u)c in l&&c in s&&s[c]!==void 0&&Object.assign(l,{[c]:s[c]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function r(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,Rc.merge(l,s)),l=t(l,s),l=e(l,s),l}i.patch=r;function o(a,s){let l,u=[];for(let[c,d]of Object.entries(s))c!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},u.push(l)),l.props[c]=d);return u}i.toOps=o})(Hn||(Hn={}));var Is;(t=>t.defaultData={...Rc.defaultData,...Hd.defaultData,states:new he,events:new he,visible:!0,raycastLock:!1})(Is||(Is={}));var Ns;(t=>t.defaultData={...Is.defaultData,...Vc.defaultData})(Ns||(Ns={}));var zc;(t=>t.defaultData={cornerRadius:[0,0,0,0]})(zc||(zc={}));var qd;(t=>t.defaultData={...Ns.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(qd||(qd={}));var oa;(t=>t.defaultData={...Ns.defaultData,...zc.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(oa||(oa={}));var Wd;(t=>t.defaultData={...Ns.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(Wd||(Wd={}));var qg;(t=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"}t.is=n})(qg||(qg={}));var Ds;(t=>t.defaultData={...Is.defaultData,name:"Group",type:"group2d"})(Ds||(Ds={}));var $d;(t=>t.defaultData={...Is.defaultData,...zc.defaultData,...Vc.defaultData,name:"Frame",type:"frame2d",width:200,height:200,fill:{color:we.fromHexAndA(dt,1),enabled:!0},stroke:{color:we.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}})($d||($d={}));var Bo;(o=>{function n(i){switch(i){case"rectangle2d":return{...oa.defaultData};case"ellipse2d":return{...qd.defaultData};case"text2d":return{...Wd.defaultData};case"vector2d":return{...oa.defaultData};case"frame2d":return{...$d.defaultData};case"group2d":return{...Ds.defaultData}}}o.defaultData=n;function t(i){return"width"in i&&"height"in i?[typeof i.width=="number"?i.width*.5:0,typeof i.height=="number"?i.height*.5:0]:[0,0]}o.getPivot=t;function e(i){return i.type==="rectangle2d"||i.type==="ellipse2d"||i.type==="text2d"||i.type==="frame2d"}o.isResizeable=e;function r(i){return i.type==="rectangle2d"||i.type==="frame2d"}o.hasCorners=r})(Bo||(Bo={}));var Gc;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new He},e.emptyData=function(){return{type:"scene2d",objects:new He}}))(Gc||(Gc={}));var es=Ft($g());import{Object3D as cN,Vector3 as fr,Euler as If,MathUtils as Cb,Matrix4 as li}from"three";var fC=.5*(Math.sqrt(3)-1),Es=(3-Math.sqrt(3))/6,hC=1/3,oo=1/6,sH=(Math.sqrt(5)-1)/4,lH=(5-Math.sqrt(5))/20,Bs=n=>Math.floor(n)|0,Yg=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),Xd=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function kc(n=Math.random){let t=Qg(n),e=new Float64Array(t).map(o=>Yg[o%12*2]),r=new Float64Array(t).map(o=>Yg[o%12*2+1]);return function(i,a){let s=0,l=0,u=0,c=(i+a)*fC,d=Bs(i+c),p=Bs(a+c),f=(d+p)*Es,h=d-f,m=p-f,y=i-h,g=a-m,b,S;y>g?(b=1,S=0):(b=0,S=1);let w=y-b+Es,v=g-S+Es,_=y-1+2*Es,A=g-1+2*Es,x=d&255,T=p&255,C=.5-y*y-g*g;if(C>=0){let M=x+t[T],I=e[M],N=r[M];C*=C,s=C*C*(I*y+N*g)}let P=.5-w*w-v*v;if(P>=0){let M=x+b+t[T+S],I=e[M],N=r[M];P*=P,l=P*P*(I*w+N*v)}let O=.5-_*_-A*A;if(O>=0){let M=x+1+t[T+1],I=e[M],N=r[M];O*=O,u=O*O*(I*_+N*A)}return 70*(s+l+u)}}function Xg(n=Math.random){let t=Qg(n),e=new Float64Array(t).map(i=>Xd[i%12*3]),r=new Float64Array(t).map(i=>Xd[i%12*3+1]),o=new Float64Array(t).map(i=>Xd[i%12*3+2]);return function(a,s,l){let u,c,d,p,f=(a+s+l)*hC,h=Bs(a+f),m=Bs(s+f),y=Bs(l+f),g=(h+m+y)*oo,b=h-g,S=m-g,w=y-g,v=a-b,_=s-S,A=l-w,x,T,C,P,O,M;v>=_?_>=A?(x=1,T=0,C=0,P=1,O=1,M=0):v>=A?(x=1,T=0,C=0,P=1,O=0,M=1):(x=0,T=0,C=1,P=1,O=0,M=1):_<A?(x=0,T=0,C=1,P=0,O=1,M=1):v<A?(x=0,T=1,C=0,P=0,O=1,M=1):(x=0,T=1,C=0,P=1,O=1,M=0);let I=v-x+oo,N=_-T+oo,B=A-C+oo,D=v-P+2*oo,G=_-O+2*oo,L=A-M+2*oo,V=v-1+3*oo,z=_-1+3*oo,F=A-1+3*oo,$=h&255,q=m&255,H=y&255,X=.6-v*v-_*_-A*A;if(X<0)u=0;else{let k=$+t[q+t[H]];X*=X,u=X*X*(e[k]*v+r[k]*_+o[k]*A)}let j=.6-I*I-N*N-B*B;if(j<0)c=0;else{let k=$+x+t[q+T+t[H+C]];j*=j,c=j*j*(e[k]*I+r[k]*N+o[k]*B)}let Y=.6-D*D-G*G-L*L;if(Y<0)d=0;else{let k=$+P+t[q+O+t[H+M]];Y*=Y,d=Y*Y*(e[k]*D+r[k]*G+o[k]*L)}let W=.6-V*V-z*z-F*F;if(W<0)p=0;else{let k=$+1+t[q+1+t[H+1]];W*=W,p=W*W*(e[k]*V+r[k]*z+o[k]*F)}return 32*(u+c+d+p)}}function Qg(n){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(n()*(256-r)),i=e[r];e[r]=e[o],e[o]=i}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as mC}from"three";var Dr=new mC,Fc=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let i=1;Dr.a.fromBufferAttribute(t,o),Dr.b.fromBufferAttribute(t,o+1),Dr.c.fromBufferAttribute(t,o+2),i*=Dr.getArea(),e[o/3]=i}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,i=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){i=a;break}else t<e[a]?o=a-1:r=a+1}return i}sampleFace(t,e,r){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Dr.a.fromBufferAttribute(this.positionAttribute,t*3),Dr.b.fromBufferAttribute(this.positionAttribute,t*3+1),Dr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Dr.a,o).addScaledVector(Dr.b,i).addScaledVector(Dr.c,1-(o+i)),Dr.getNormal(r),this}};import{Object3D as vC}from"three";var Jg=Ft(Zg());import{Object3D as yC,Matrix4 as no}from"three";var gC=new no,xC=new no,bC=new no,na;(t=>{function n(e){return e&&e.__isSPEObject}t.is=n})(na||(na={}));var ia=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new no;this.copyPreviousMatrix=!0;this.hiddenMatrix=new no;this.matrixWorldRigid=new no;this.shearScale=new no;this.shearScaleInv=new no}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof yC&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(r,o=0){for(let i of this.children)na.is(i)&&i.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)na.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:i,v:a,q:s}=(0,Jg.SVD)(o),l=gC.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),u=xC.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),c=bC.copy(u).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,c).copyPosition(this.matrixWorld),s.every(d=>Math.abs(s[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let i=new no().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),i.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof no?r.hiddenMatrix.premultiply(i):r.applyMatrix4(i),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Qd=class extends ia(vC){},SC=n=>n.type==="Mesh",Lo=class extends Qd{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new Lo(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return SC(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};import{Box3 as DM,BufferGeometry as EM,MeshBasicMaterial as BM}from"three";import{Matrix4 as IM,Mesh as NM}from"three";import{Matrix4 as Hc,Vector3 as r0,Euler as CC,MathUtils as Rs}from"three";import{Box3 as wC,Line3 as _C,Matrix4 as Kd,Vector3 as ur}from"three";var qn=new ur,Wn=new ur,aa=new Kd,t0=[new ur(-1,1,1),new ur(-1,-1,1),new ur(1,-1,1),new ur(1,1,1),new ur(-1,1,-1),new ur(-1,-1,-1),new ur(1,-1,-1),new ur(1,1,-1)],AC=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],PC=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],e0=(n,t,e)=>{n.updateEntityBoxSize(qn,Wn),aa.copy(t).multiply(n.matrixWorld),Wn.x===0&&Wn.y===0&&Wn.z===0?e.push(new ur(qn.x,qn.y,qn.z).applyMatrix4(aa)):t0.forEach(r=>{e.push(r.clone().multiply(Wn).add(qn).applyMatrix4(aa))})},Ls=class extends wC{constructor(){super(...arguments);this.matrix=new Kd;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Kd().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new ur);return}e0(a,r,i)}}):e0(e,r,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(aa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Wn).multiplyScalar(.5),this.getCenter(qn),aa.copy(this.matrix).setPosition(qn),this.vertices=t0.map(e=>e.clone().multiply(Wn).applyMatrix4(aa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=AC.map(([e,r])=>new _C(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new ur))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=PC.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Er={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as OC,CubicBezierCurve3 as Zd,Vector3 as Br}from"three";var ep=class extends OC{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let u=l[s],c=s===0?o[s]:o[s]-o[s-1],d=Math.ceil(t*c/a),p=u.getPoints(d);for(let f=0;f<p.length;f++){let h=p[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var tp=.001;function rp(n,t,e){return t.clone().sub(n).cross(t.clone().sub(e)).length()<=tp}function Jd(n,t){let e=new Br(...n.position),r=new Br(...n.controlNext.position),o=new Br(...t.controlPrevious.position),i=new Br(...t.position);return rp(e,r,i)&&rp(e,o,i)}function Uc(n){let t=n.points.map(c=>new Br(...c.data.position)),e=[n.points[0]],r=new Br(...e[0].data.position);for(let c=0;c<n.points.length-1;c++)rp(r,t[c],t[c+1])||(e.push(n.points[c]),r=t[c]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let c=0;c<a;c++){let d=e[c].data,p=new Br(...d.position),f=new Br(...d.controlPrevious.position),h=new Br(...d.controlNext.position),m={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:h};if(d.roundness===0||!n.isClosed&&(c===0||c===a-1)){s[c]={...m,removedLength:0};continue}let y=o&&c==0?a-1:c-1,g=o&&c==a-1?0:c+1,b=e[y].data,S=e[g].data,w=new Br(...b.position),v=new Br(...S.position),_=w.clone().sub(p).normalize(),A=v.clone().sub(p).normalize();Object.assign(m,{prevDir:_,nextDir:A});let x=Jd(b,d),T=Jd(d,S);if(!x||!T)s[c]={...m,removedLength:0};else{let C=_.clone().add(A).normalize(),P=C.clone().cross(_).length()/_.dot(C);s[c]={...m,tan:P,removedLength:d.roundness/P}}}for(let c=0;c<i;c++){let d=c,p=o&&c===a-1?0:c+1,f=s[d],h=s[p];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let c=0;c<i;c++){let d=c,p=o&&c===a-1?0:c+1,f=s[d],h=s[p],m=null;if(!Jd(e[d].data,e[p].data))f.position.distanceTo(h.position)>tp&&(m=new Zd(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),g=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&g.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(g)>tp&&(m=new Zd(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}l[2*c+1]=m}for(let c=0;c<a;c++){let d=s[c];if(d.removedLength===0){l[2*c]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),h=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),m=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(h,.5),b=f.distanceTo(h)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(b,2))).add(g),w=y.clone().multiplyScalar(-m).add(S),v=p.distanceTo(w)/p.distanceTo(g),_=d.prevDir.clone().multiplyScalar(v*p.distanceTo(f)).add(p),A=_.clone().lerp(w,2),x=f.clone().lerp(_,4/3),T=h.clone().lerp(A,4/3);l[2*c]=new Zd(f,x,T,h)}let u=new ep;return l.forEach(c=>{c&&u.add(c)}),u}var Ce;(t=>{function n(e){return e&&e.__isEntity}t.is=n})(Ce||(Ce={}));var sa=n=>Ce.is(n),TC={type:"completeState",isfromEntity:!0},MC=["x","y","z"],op=new r0,IC=new r0().set(0,1,0),la=n=>class extends ia(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Ls;this._recursiveBBox=new Ls;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(Ce.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(Ce.is(this.children[r]))return r+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(Ce.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)Un.toOps(this.data,a.data).forEach(l=>{let u=ji.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=Un.patch(this.data,a),Un.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{sa(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(i=>{i.uuid===r&&(o=i)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,i=o.indexOf(this)+1;if(Ce.is(o[i]))return o[i];if(Ce.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&Ce.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,i=this;for(;i!==r;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)sa(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{Ce.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)sa(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)sa(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)sa(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>sa(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Rs.RAD2DEG,this.rotation.y*Rs.RAD2DEG,this.rotation.z*Rs.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Vi(o,r)}getTransformValues(r,o,i){return o[r].map((a,s)=>i?.shared.getVariable(a,[this.uuid,r,MC[s]])??a)}updateTransformState(r,o){let i=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),i=!0),r.rotation&&(op.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(Rs.DEG2RAD),this.rotation.setFromVector3(op),i=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),i=!0),r.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??sn.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)Ce.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{Ce.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Vi(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,i,a){let s=this.data;this.data=o;let l=r,u=Oe(r.path,["states","*"]);if(u!==null){if(r.type===0){let[c]=u;if(this?.stateSelection===c){let d={...r.props};if(delete d.name,Object.values(r.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=Ze.zoom(p,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(d[h]=f[h])}}l={...r,props:d,path:r.path.slice(2)}}}}else if(r.type===0){let c=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(c!==void 0){if(r.props.name!==void 0&&c.name){let{name:p,...f}=c;c=f}if(r.props.material!==void 0&&"material"in c){let{material:p,...f}=c;c=f}let d=Ze.removeOverridden(r.path,r.props,c);l={...r,props:d}}}if(this.updateByPatchedOpBase(l,Un.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Oe(r.path,["overrides"])){let c=[],d=[...r.path];for(c.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)c.push(d[1]),d.splice(0,2);if(c[c.length-1]===void 0){if(r.type===0)for(let p of Object.keys(r.props)){c[c.length-1]=p;let f=i.scene.findInstance([this.uuid,...c]);f&&(f.overrideData=r.props[p],f.updateState(Xr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...c]);if(p){let f=Ze.zoom(p.component.data,d);if(r={...r,path:d},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}p.overrideData=Ki.resolve(o.overrides,c),p.updateByOp(r,Je.applySimple(p.data,r),i,!1)}}}else if(this.instances.length>0){let c;if(r.path.length===0&&r.type===0){let d;for(let p of to.rootOverrideProps)p in r.props&&(d===void 0&&(d={}),d[p]=r.props[p]);d&&(c={...r,props:d})}else for(let d of to.rootOverrideProps)if(Oe(r.path,[d])){c=r;break}c!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Xr.filterOp(d.overrideData,c);p&&d.updateByOp(p,Je.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Xr.filterOp(d.overrideData,r);if(p){let f;s===d.data&&r===p?f=o:f=Je.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(r,o,i){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!Ir.is(r.props.type)&&Er.changeEntityProptotype(this,o,i);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){Er.changeEntityProptotype(this,o,i);for(let a of this.children)Ce.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(r,o,i)}updateByPatchedOp(r,o,i){if(r.path.length===0&&r.type===0&&this.updateState(r.props,i),Oe(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Oe(r.path,["cloner"])!==null){let a=Je.drop(r,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=l.data;if(u.geometry.path.points.length<=1)return;let c=Uc(u.geometry.path),d=(i+a)%1;i+a===1&&d===0&&(d=1);let p=c.getPointAt(d);if(p===null)return;let f=this.parent?this.parent?.matrixWorld:new Hc;l.updateMatrixWorld();let h=new Hc().multiplyMatrices(f.clone().invert(),l.matrixWorld);p.applyMatrix4(h);let m={position:p.toArray(),rotation:u.rotation};if(s==="tangential"){let y=new Hc().extractRotation(l.matrixWorld),g=c.getTangentAt(d).applyMatrix4(y).add(p),b=new Hc().lookAt(p,g,IC),S=op.setFromEuler(new CC().setFromRotationMatrix(b)).multiplyScalar(Rs.RAD2DEG);m={...m,rotation:S.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(TC)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof Er.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Er.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as EC,ConeGeometry as BC,Float32BufferAttribute as LC,MathUtils as RC}from"three";import{BufferGeometry as n0,CylinderGeometry as NC,Float32BufferAttribute as Wc,MathUtils as DC,Vector2 as Lr,Vector3 as qc}from"three";var i0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=DC.clamp(e.thetaLength,0,360);let r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:u,radiusBottom:c,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,h;return l===0?(h=new n0,h.setAttribute("position",new Wc([],3))):d||f?h=new Vs(u,c,r,o,i,a,s,l*Math.PI/180,d,d,p,f):h=new NC(u,c,r,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function fn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function o0(n){return new Lr(n.y,-n.x)}var Vs=class extends n0{constructor(t,e,r,o,i,a,s,l,u,c,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(u=0,c=0);let h=[],m=[],y=[],g=[],b=0,S=r/2,w=new qc,v=new qc;f&&t==0&&(t=u),f&&e==0&&(e=c);let _=new Lr(t,S),A=new Lr(e,-S),x=null,T=null,C=null,P=null,O=_.clone().sub(A),M=0,I=0,N=0;p>0&&(M=Math.min(t,e)*(1-p),I=t-M,N=e-M);let B=_.clone();B.x-=M;let D=Math.PI-O.angle(),G=O.angle(),L=Math.tan(G/2),V=Math.tan(D/2),z=L+V,F=p?z:V,$=p?z:L;if(u=Math.min(u,(t-I)/F,O.length()/z),c=Math.min(c,(e-N)/$,O.length()/z),u>0){let W=u/L;x=_.clone().sub(new Lr(W,u)),p&&(C=x.clone(),C.x-=M-z*u),_.sub(O.clone().setLength(W))}if(c>0){let W=c/V;T=A.clone().sub(new Lr(W,-c)),A.add(O.clone().setLength(W)),p&&(P=T.clone(),P.x-=M-z*c,B.sub(O.clone().setLength(W)))}O=_.clone().sub(A);let q=O.length()<.5,H=[];for(let W=0;W<=o;W++){let k=[],oe=W/o,ee=oe*l+s,K=new Lr(Math.sin(ee),Math.cos(ee));P&&T?(X(k,oe,K,D,c,P,-1,!0),X(k,oe,K,G,c,T,-1,!1)):T?(j(k,K,T.x,0,-1),X(k,oe,K,G,c,T,-1,!1)):a||j(k,K,e,N,-1);let te=o0(O).normalize();if(fn(te,K,w),!q)for(let Z=0;Z<=i;Z++){let se=Z/i,ne=O.clone().multiplyScalar(se).add(A);fn(ne,K,v),m.push(v.x,v.y,v.z),y.push(w.x,w.y,w.z),g.push(oe,.5+v.y/r),k.push(b++)}if(C&&x?(X(k,oe,K,D,u,x,1,!1),X(k,oe,K,G,u,C,1,!0)):x?(X(k,oe,K,D,u,x,1,!1),j(k,K,x.x,0,1)):a||j(k,K,t,I,1),p&&!q){let Z=o0(O).multiplyScalar(-1).normalize();fn(Z,K,w);for(let se=0;se<=i;se++){let ne=se/i,ie=O.clone().multiplyScalar(-ne).add(B);fn(ie,K,v),m.push(v.x,v.y,v.z),y.push(w.x,w.y,w.z),g.push(oe,.5+v.y/r),k.push(b++)}}p&&!a&&k.push(k[0]),H.push(k)}for(let W=0;W<H.length-1;W++)for(let k=0;k<H[0].length-1;k++){if(a&&p&&k==i)continue;let oe=H[W][k],ee=H[W+1][k],K=H[W+1][k+1],te=H[W][k+1],Z=m[K*3+0],se=m[K*3+2];h.push(oe,ee,te),(Z!=0||se!=0)&&h.push(ee,K,te)}l<Math.PI*2&&(Y(-1,H[0],s),Y(1,H[H.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new Wc(m,3)),this.setAttribute("normal",new Wc(y,3)),this.setAttribute("uv",new Wc(g,2));function X(W,k,oe,ee,K,te,Z,se){for(let ne=0;ne<d+1;ne++){let ie=ne/d,de=Z<0?ie:1-ie;se&&(de-=1),de*=ee;let le=new Lr(Math.sin(de),Math.cos(de)*Z),pe=le.clone().multiplyScalar(K).add(te);fn(pe,oe,v),m.push(v.x,v.y,v.z),fn(le,oe,w),y.push(w.x,w.y,w.z),g.push(k,.5+v.y/r),W.push(b++)}}function j(W,k,oe,ee,K){let te=new qc,Z=new Lr,se=[oe,ee];K<0&&se.reverse();for(let ne of se)Z.set(ne,S*K),fn(Z,k,te),m.push(te.x,te.y,te.z),y.push(0,K,0),g.push(.5,.5),W.push(b++)}function Y(W,k,oe){let ee=new Lr(Math.sin(oe),Math.cos(oe)),K=new Lr(-Math.cos(oe),Math.sin(oe)),te=new qc,Z=W<0?(ie,de,le)=>h.push(ie,de,le):(ie,de,le)=>h.push(ie,le,de),se=new Lr((t+e+I+N)/4,0);fn(se,ee,te),m.push(te.x,te.y,te.z),y.push(K.x,0,K.y),g.push(.5,.5);let ne=b++;for(let ie of k){let de=m.slice(ie*3,ie*3+3);m.push(...de),y.push(K.x,0,K.y);let le=g.slice(ie*2,ie*2+2);g.push(...le),b++}for(let ie=ne+1;ie<b-1;ie++)Z(ne,ie,ie+1);Z(ne,b-1,ne+1)}}};var a0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=RC.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:u,cornerRadiusBottom:c,cornerSegments:d}=n.parameters,p;return l===0?(p=new EC,p.setAttribute("position",new LC([],3))):u>0||c>0||l<360?p=new Vs(0,t/2,r,o,i,a,s,l*Math.PI/180,u,c,d,0,!0):p=new BC(t/2,r,o,i,a),p.scale(1,1,e/t),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as VC,BufferGeometry as zC,Float32BufferAttribute as np,Vector3 as zs}from"three";var s0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,u;return s==0?u=new VC(t,e,r,o,i,a):u=new ap(t,e,r,o,i,a,s,l),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},ip=Math.PI/2,ap=class extends zC{constructor(t=1,e=1,r=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],d=[],p=[],f=[],h=0,m=0;y("z","y","x",-1,-1,r,e,t,a,i,0),y("z","y","x",1,-1,r,e,-t,a,i,1),y("x","z","y",1,1,t,r,e,o,a,2),y("x","z","y",1,-1,t,r,-e,o,a,3),y("x","y","z",1,-1,t,e,r,o,i,4),y("x","y","z",-1,-1,t,e,-r,o,i,5),s>0&&(g("z","y","x",-1,-1,1,r,e,t,a,0),g("z","y","x",1,-1,-1,r,e,t,a,1),g("z","y","x",-1,1,-1,r,e,t,a,1),g("z","y","x",1,1,1,r,e,t,a,0),g("x","y","z",-1,-1,-1,t,e,r,o,0),g("x","y","z",1,-1,1,t,e,r,o,1),g("x","y","z",-1,1,1,t,e,r,o,0),g("x","y","z",1,1,-1,t,e,r,o,1),g("y","x","z",-1,-1,1,e,t,r,i,0),g("y","x","z",1,-1,-1,e,t,r,i,1),g("y","x","z",1,1,1,e,t,r,i,1),g("y","x","z",-1,1,-1,e,t,r,i,0),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new np(d,3)),this.setAttribute("normal",new np(p,3)),this.setAttribute("uv",new np(f,2));function y(S,w,v,_,A,x,T,C,P,O,M){let I=(x-2*s)/P,N=(T-2*s)/O,B=x/2-s,D=T/2-s,G=C/2,L=P+1,V=O+1,z=0,F=0,$=new zs;for(let q=0;q<V;q++){let H=q*N-D;for(let X=0;X<L;X++){let j=X*I-B;$[S]=j*_,$[w]=H*A,$[v]=G,d.push($.x,$.y,$.z),$[S]=0,$[w]=0,$[v]=C>0?1:-1,p.push($.x,$.y,$.z),f.push(X/P),f.push(1-q/O),z+=1}}for(let q=0;q<O;q++)for(let H=0;H<P;H++){let X=h+H+L*q,j=h+H+L*(q+1),Y=h+(H+1)+L*(q+1),W=h+(H+1)+L*q;c.push(X,j,W),c.push(j,Y,W),F+=6}u.addGroup(m,F,M),m+=F,h+=z}function g(S,w,v,_,A,x,T,C,P,O,M){let I=(T-2*s)/O,N=T/2-s,B=C/2-s,D=P/2,G=O+1,L=0,V=0,z=new zs,F=new zs;for(let $=0;$<l+1;$++){let q=$/l*ip,H=Math.sin(q)*s,X=(1-Math.cos(q))*s,j=Math.sin(q),Y=Math.cos(q);z[w]=(B+H)*A,z[v]=(D-X)*x,F[S]=0,F[w]=j*Math.sign(z[w]),F[v]=Y*Math.sign(z[v]);for(let W=0;W<G;W++){let k=W*I-N;z[S]=k*_,d.push(z.x,z.y,z.z),p.push(F.x,F.y,F.z),f.push(W/O),f.push(0),L+=1}}for(let $=0;$<l;$++)for(let q=0;q<O;q++){let H=h+q+G*$,X=h+q+G*($+1),j=h+(q+1)+G*($+1),Y=h+(q+1)+G*$;c.push(H,X,Y),c.push(X,j,Y),V+=6}u.addGroup(m,V,M),m+=V,h+=L}function b(S,w,v){let _=new zs,A=new zs(t/2,e/2,r/2);A.subScalar(s);let x=[],T=S*w*v>0?(P,O,M)=>c.push(P,O,M):(P,O,M)=>c.push(P,M,O);for(let P=0;P<=l;P++){let O=[],M=ip*(1-P/l),I=Math.cos(M),N=Math.sin(M),B=0;for(let D=0;D<=P;D++){let G=Math.cos(B),L=Math.sin(B);_.x=I*G,_.y=N,_.z=I*L;let V=A.clone().addScaledVector(_,s);d.push(S*V.x,w*V.y,v*V.z),p.push(S*_.x,w*_.y,v*_.z),f.push(0,0),O.push(h++),B+=ip/P}x.push(O)}let C=x.length-1;for(let P=0;P<C;P++){let O=x[P],M=x[P+1],I=O.length-1;T(O[0],M[1],M[0]);for(let N=1;N<=I;N++)T(O[N-1],O[N],M[N]),T(O[N],M[N+1],M[N])}}}};import{BufferGeometry as GC,Float32BufferAttribute as sp,Triangle as kC,Vector3 as Ro,Vector2 as lp}from"three";var hn=class extends GC{constructor(t=[],e=[],r="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],u=[];c(),d(),this.setAttribute("position",new sp(s,3)),this.setAttribute("normal",new sp(u,3)),this.setAttribute("uv",new sp(l,2));return;function c(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new Ro,m=h.clone(),y=new kC,g=i*o,b=o-g,S=a+1,w=new Ro,v=(L,V)=>w.subVectors(L,V).normalize(),_=(L,V)=>Array(L).fill(void 0).map(V),A=_(t.length/3,(L,V)=>new Ro().fromArray(t,V*3).setLength(o)),x=[],T=1e6;for(let L=0;L<A.length;L++){let V=A[L],z=[],F,$,q,H=1e10,X=-1;for(;(X=e.indexOf(L,X+1))!=-1;){let k=X-X%3;F=e[k+(X+1)%3],$=e[k+(X+2)%3],q=V.distanceToSquared(A[F]),H=Math.min(H,q),z.push([F,$,q])}H+=1e-6;let j=[],Y=0,W=z.length;for(let k=0;k<W;k++){[F,$,q]=z[Y];let oe=x[F]?.includes(L)==!0;q<=H&&j.push(F+ +oe*T),Y=z.findIndex(ee=>ee[0]==$)}x.push(j)}let C=[];{let L=0,V=0,z,F,$=f==3;for(let q=0;q<=a;q++){z=q*(q+1)/2,F=(q+1)*(q+2)/2;for(let H=0;H<a-q;H++)[L,V]=[z+H+q+2,F+H+q+3],C.push(z,F,...$?[V,z]:[L,F],V,L),[z,F]=[L,V];C.push(z,F,z+a+2)}}let P=h.clone(),O=h.clone(),M=h.clone(),I=h.clone(),N=h.clone(),B=[],D=_(A.length,()=>_(f,()=>h.clone()));for(let L=0;L<A.length;L++){h.copy(A[L]).normalize(),P.copy(h).multiplyScalar(b);let V=x[L];for(let j=0;j<V.length;j++){let Y=V[j],W=V[(j+1)%f];y.setFromPointsAndIndices(A,L,Y%T,W%T),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(P,D[L][j])}let z=[],F=[],$=[],q=new Ro;a==0&&[...D[L]].reduce((j,Y)=>j.add(Y),q).multiplyScalar(1/f);for(let j=0;j<f;j++){let Y=[],W=(j-1+f)%f,k=D[L][W],oe=D[L][j];h.copy(k).sub(P),m.copy(oe).sub(P);let ee=P.angleTo(h),K=h.angleTo(m),te=Math.cos(ee)*g;a==0?O.copy(q):O.copy(P).setLength(b+te),F.push(te);let Z=[O,k,oe];for(let se=0;se<2;se++){let ne=Z[se],ie=Z[se+1];I.subVectors(ne,P),N.subVectors(ie,P),M.crossVectors(I,N).normalize();for(let de=0;de<S;de++){let le=[ee,K][se]*de/S;h.copy(I).applyAxisAngle(M,le).add(P),z.push(h.clone()),se&&(v(h,P),Y.push([de==0?ne:h.clone(),w.clone()]))}se&&(v(ie,P),Y.push([ie,w.clone()]))}$.push(Y)}B.push($);let H=2*S,X=2;for(let j=0;j<f;j++){let Y=H*j,W=H*((j+1)%f),k=[z[Y]];for(let ee=1;ee<S;ee++){I=z[Y+ee],N=z[W+ee],k.push(I);for(let K=1,te=ee-X+1;K<=te;K++)h.lerpVectors(I,N,K/(te+1)),h.sub(P).setLength(F[j]).add(P),k.push(h.clone());k.push(N)}for(let ee=0;ee<S;ee++)k.push(z[ee+S+Y]);k.push(z[W+S]);let oe=C.map(ee=>k[ee]);s.push(...oe.map(ee=>[ee.x,ee.y,ee.z]).flat()),u.push(...oe.map(ee=>(v(ee,P),[w.x,w.y,w.z])).flat())}}let G=[];for(let L=0;L<x.length;L++)for(let V=0;V<f;V++){let z=x[L][V];if(z<T){let F=x[z].findIndex(H=>H%T==L),$=B[L][V],q=B[z][F];for(let H=0;H<S;H++){let X=$[H],j=q[S-H],Y=$[H+1],W=q[S-(H+1)];[X,j,Y,Y,j,W].forEach(k=>{s.push(k[0].x,k[0].y,k[0].z),u.push(k[1].x,k[1].y,k[1].z)})}G.push($[0][0],q[S][0],$[S][0],q[0][0])}}for(;G.length;){let L,V,z,F;[L,V]=G.splice(0,2);let $=[L];for(;L!=V;)$.push(V),z=G.indexOf(V),F=z%2,V=G.splice(z-F,2)[1-F];w.subVectors($[0],$[1]).cross(h.subVectors($[0],$[2])).normalize();let q=w.dot($[0])<0;q&&w.negate();for(let H=1;H<=$.length-2;H++)[$[H+ +q],$[H+1-+q],$[0]].forEach(X=>{s.push(X.x,X.y,X.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new Ro;for(let A=0;A<s.length;A+=3){p.x=s[A+0],p.y=s[A+1],p.z=s[A+2];let x=v(p)/2/Math.PI+.5,T=_(p)/Math.PI+.5;l.push(x,1-T)}let f=new Ro,h=new Ro,m=new Ro,y=new Ro,g=new lp,b=new lp,S=new lp,w=(A,x,T,C)=>{C<0&&A.x===1&&(l[x]=A.x-1),T.x===0&&T.z===0&&(l[x]=C/2/Math.PI+.5)};for(let A=0,x=0;A<s.length;A+=9,x+=6){f.set(s[A+0],s[A+1],s[A+2]),h.set(s[A+3],s[A+4],s[A+5]),m.set(s[A+6],s[A+7],s[A+8]),g.set(l[x+0],l[x+1]),b.set(l[x+2],l[x+3]),S.set(l[x+4],l[x+5]),y.copy(f).add(h).add(m).divideScalar(3);let T=v(y);w(g,x+0,f,T),w(b,x+2,h,T),w(S,x+4,m,T)}for(let A=0;A<l.length;A+=6){let x=l[A+0],T=l[A+2],C=l[A+4],P=Math.max(x,T,C),O=Math.min(x,T,C);P>.9&&O<.1&&(x<.2&&(l[A+0]+=1),T<.2&&(l[A+2]+=1),C<.2&&(l[A+4]+=1))}function v(A){return Math.atan2(A.z,-A.x)}function _(A){return Math.atan2(-A.y,Math.sqrt(A.x*A.x+A.z*A.z))}}}static fromJSON(t){return new hn(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as FC}from"three";var l0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Gs(t*.5,i,a):new FC(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},Gs=class extends hn{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,t,e,r),this.type=l}static fromJSON(t){return new Gs(t.radius,t.corner,t.cornerSides)}};import{Plane as ZC,Shape as _0,Vector2 as Vo,Vector3 as JC,MathUtils as mp,LineCurve as yp,QuadraticBezierCurve as A0,CubicBezierCurve as Qc}from"three";import{CubicBezierCurve as $c,EllipseCurve as jC,LineCurve as Yc,LineCurve3 as UC,MathUtils as HC,QuadraticBezierCurve as up,SplineCurve as qC,Vector2 as Gt,Vector3 as d0}from"three";var ks=1e-12,ca=class{constructor(t){this.position=new Gt;this.startPosition=new Gt;this.uuid=HC.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new ca(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ua=class extends ca{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ua(this.parent).copy(this)}},Rr=class extends ca{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ua(this),new ua(this))}static create(e,r){let o=new Rr(e,new Gt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Rr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new Gt,r=new Gt){let[o,i]=this.computeTangents();return o&&i&&(c0(o,e),c0(i,r)),[e,r]}computeTangent(e=new Gt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new Gt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function c0(n,t=new Gt){let e=n.length();return t.set(-n.y/e,n.x/e)}var dp=n=>n,da=new Gt,Xc=new Gt,WC=new Gt,$C=new Gt,YC=new Gt,XC=new Gt,p0=new d0,f0=new d0;function h0(n){let t=new Gt;t.addVectors(n.v0,da.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Gt;return e.addVectors(n.v2,Xc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new $c(n.v0,t,e,n.v2)}function Fs(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function QC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function KC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function pp(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+r*r-i*i)/(2*o*r))}function m0(n,t,e){return u0(n,t)&&u0(t,e)&&cp(n.position,t.position,e.position)}function cp(n,t,e){return da.copy(t).sub(n).cross(Xc.copy(e).sub(n))===0}function y0(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),a=(n.y+t.y)/2,s=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(s+l,a+u),o.set(s-l,a-u),[r,o]}function g0(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function x0(n,t,e,r,o,i){let a=t.x-n.x,s=t.y-n.y,l=e.x-n.x,u=e.y-n.y,c=Math.sqrt((a+l)*(a+l)+(s+u)*(s+u)),d;return pp(t,n,e)>Math.PI&&(c*=-1),Fs(u,s)?d=(s+u)*(r/c-.5)*8/3/(a-l):d=(a+l)*(r/c-.5)*8/3/(u-s),o.set(t.x-d*s,t.y+d*a),i.set(e.x+d*u,e.y-d*l),[o,i]}function fp(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function u0(n,t){return cp(n.position,n.controls[1].position,t.position)&&cp(n.position,t.controls[0].position,t.position)}function b0(n,t,e,r,o=.5){let i=da.subVectors(t,n).multiplyScalar(o).add(n),a=Xc.subVectors(e,t).multiplyScalar(o).add(t),s=WC.subVectors(r,e).multiplyScalar(o).add(e),l=i,u=$C.subVectors(a,i).multiplyScalar(o).add(i),c=YC.subVectors(s,a).multiplyScalar(o).add(a),d=s,p=XC.subVectors(c,u).multiplyScalar(o).add(u);return[n.x,n.y,l.x,l.y,u.x,u.y,p.x,p.y,c.x,c.y,d.x,d.y,r.x,r.y]}function v0(n,t,e=12,r=!0){let o=f0.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let u=dp(t[l]),c=da,d=mn(u,e);s.push(d);for(let p=0;p<=d;p++)if(u instanceof $c||u instanceof up||u instanceof Yc){if(u.getPoint(p/d,c),o.set(c.x,c.y,0),i!==void 0&&KC(i,o))continue;i===void 0&&(i=p0),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return r&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function S0(n,t,e,r=12,o=!0){let i=f0.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let u,c=dp(t[l]),d=da,p=mn(c,r);s.push(p);for(let f=0;f<=p;f++)if(c instanceof $c||c instanceof up||c instanceof Yc){if(c.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=p0:(n.setXYZ(a,u.x,u.y,u.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),u.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function hp(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=mn(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=mn(a.curveAfter,t)),r.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=mn(n[0].roundedCurveCorner,t)*.5),r}function mn(n,t=12){return n&&n instanceof jC?t*2:n&&(n instanceof Yc||n instanceof UC)?1:n&&n instanceof qC?t*n.points.length:t}function w0(n,t,e=12,r=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=dp(t[a]),l=mn(s,e),u=da;for(let c=0;c<=l;c++)if(s instanceof $c||s instanceof up||s instanceof Yc){if(s.getPoint(c/l,u),o!==void 0&&QC(o,u,ks))continue;o===void 0&&(o=Xc),o.copy(u),n.push(u.x,u.y),i++}}return Fs(n[0],n[n.length-2],ks)&&Fs(n[1],n[n.length-1],ks)&&(n.pop(),n.pop()),r&&i>1&&!(Fs(n[i-1],n[1],ks)&&Fs(n[i-2],n[0],ks))&&(n.push(n[0],n[1]),i++),n}var gp=new Vo,eT=new Vo,tT=new Vo,rT=new Vo,oT=new Vo,nT=new Vo,Le=class extends _0{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new ZC(new JC(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=mp.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Le;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Rr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Le.createFromState(a)),r!==void 0&&o!==void 0&&i.applySize(r,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],u=l.points.length,c=l.getPointIndexById(e);if(c<0)i+=u;else return c+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let r=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=gp.set(e,r);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,r);this._update()}createPoint(e,r=0,o=mp.generateUUID()){let i;e instanceof Vo?i=e:i=new Vo(e,r);let a=new Rr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return v0(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=hp(this.points,e,!1),this.roundedCurveDivisions=hp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return S0(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),w0(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=mn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,u)=>l+u,0));for(let l=0,u=i.length;l<u;l++){let c=i[l];if(s<o+c)return[l,(s-o+1)/c];o+=c}return[0,1]}getCurveT(e,r,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(fp(i,a)){let d=i.position.distanceTo(a.position);return i.position.distanceTo(gp.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=s[d];return(r-u)/l}dispose(){}_applyCurveForPoint(e,r){fp(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(r===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,i=this.points.length;o<i;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],u=a.roundness,c=s&&l&&m0(s,a,l);if(!a.controlsMoved()&&u>0&&!c){let d=a.curveBefore,p=a.curveAfter;if(d===void 0||p===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=d.getLength(),y=p.getLength(),g=Math.min(u,m*.499),b=Math.min(u,y*.499),S=Math.min(g,b),w=1-S/m,v=S/y,_=d.getPointAt(w,gp),A=p.getPointAt(v,eT);this._subSplitCurve(d,f,w,_,void 0),this._subSplitCurve(p,h,v,void 0,A);let x;if(this.useCubicForRoundedCorners){let T=pp(_,a.position,A)/2,C=Math.tan(T)*_.distanceTo(a.position),[P,O]=y0(_,A,C,tT,rT),M=g0(P,O,a.position),[I,N]=x0(M,_,A,C,oT,nT);x=new Qc(_.clone(),I.clone(),N.clone(),A.clone())}else x=new A0(_.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+r,0,x),r++}}}}_subSplitCurve(e,r,o,i,a){if(e instanceof yp)i!==void 0&&r.v2.copy(i),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,u=s.getUtoTmapping(o,0),c=b0(s.v0,s.v1,s.v2,s.v3,u);return i!==void 0&&(l.v0.set(c[0],c[1]),l.v1.set(c[2],c[3]),l.v2.set(c[4],c[5]),l.v3.set(c[6],c[7])),a!==void 0&&(l.v0.set(c[6],c[7]),l.v1.set(c[8],c[9]),l.v2.set(c[10],c[11]),l.v3.set(c[12],c[13])),l}return r}clone(){let e=new Le(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],u=e.points[i+3],c=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Rr(mp.generateUUID(),new Vo(a,s));f.controls[0].position.set(l,u),f.controls[1].position.set(c,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Le;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof Qc&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,u;for(l=0,u=a.length;l<u;l++)a[l]instanceof A0&&(a[l]=h0(a[l]));for(l=0,u=a.length;l<u;l++){let p=a[l],f=l>0?a[l-1]:null,h;p instanceof Qc?(h=this.createPoint(p.v0),h.controls[1].position.copy(p.v1)):p instanceof yp&&(h=this.createPoint(p.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let c=a[a.length-1],d=!1;return c instanceof Qc?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),d=!0):c instanceof yp&&c.v2.equals(s[0].position)&&(d=!0),this.isClosed=d,s};return this.points=i(e.curves),e instanceof _0&&(this.shapeHoles=e.holes.map(a=>{let s=new Le;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let i=this.getPointByUuid(e)?.controls[0];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let i=this.getPointByUuid(e)?.controls[1];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}};var bp=Math.PI*2;function xp({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function iT(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),a=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function P0(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function aT(n,t,e,r,o,i,a,s,l,u){let c=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),h=c*d-c*f-d*p;h<0&&(h=0),h/=c*f+d*p,h=Math.sqrt(h)*(l===u?-1:1);let m=h*o/i*s,y=h*-i/o*a,g=m+(n+e)/2,b=y+(t+r)/2,S=(a-m)/o,w=(s-y)/i,v=(-a-m)/o,_=(-s-y)/i,A=P0(1,0,S,w),x=P0(S,w,v,_);return!u&&x>0&&(x-=bp),u&&x<0&&(x+=bp),{centerx:g,centery:b,ang1:A,ang2:x}}function O0({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let u=(n-e)/2,c=(t-r)/2;if(u===0&&c===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(c,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=aT(n,t,e,r,o,i,u,c,a,s),{ang1:f,ang2:h}=p,{centerx:m,centery:y}=p,g=Math.abs(h)/(bp/4);Math.abs(1-g)<1e-7&&(g=1);let b=Math.max(Math.ceil(g),1);h/=b;for(let S=0;S<b;S++)l.push(iT(f,h)),f+=h;return l.map(S=>{let{x:w,y:v}=xp(S[0],o,i,m,y),{x:_,y:A}=xp(S[1],o,i,m,y),{x,y:T}=xp(S[2],o,i,m,y);return{x1:w,y1:v,x2:_,y2:A,x,y:T}})}import{BufferAttribute as tu,BufferGeometry as xT}from"three";var Ie;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ie||(Ie={}));var tt;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(tt||(tt={}));function ye(n,t){if(!n)throw t||"Assertion Failed!"}var fe=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ye(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){ye(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){ye(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){ye(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var a,s,l;n.vertLeq(t,e)||(l=t,t=e,e=l),n.vertLeq(r,o)||(l=r,r=o,o=l),n.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.vertLeq(r,e)?n.vertLeq(e,o)?(a=n.edgeEval(t,r,e),s=n.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,e.s)):(a=n.edgeSign(t,r,e),s=-n.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(l=t,t=e,e=l),n.transLeq(r,o)||(l=r,r=o,o=l),n.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.transLeq(r,e)?n.transLeq(e,o)?(a=n.transEval(t,r,e),s=n.transEval(r,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,e.t)):(a=n.transSign(t,r,e),s=-n.transSign(t,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,o.t)):i.t=(r.t+e.t)/2},n}(),js=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Kc=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),pa=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),C0=function(){function n(){var t=new pa,e=new js,r=new Kc(0),o=new Kc(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 Kc(0),r=new Kc(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;ye(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ye(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var t=new pa,e=new pa,r=new js,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new pa;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var a=new js;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new js;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new pa;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var a=new js;this.makeFace_(a,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=t&&fe.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&fe.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,a,s,l,u;for(i=t,i=t;(o=i.next)!==t;i=o){ye(o.prev===i),l=o.anEdge;do ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l),ye(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(ye(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){ye(a.prev===s),l=a.anEdge;do ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l),ye(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(ye(a.prev===s&&a.anEdge===null),u=r,u=r;(l=u.next)!==r;u=l)ye(l.Sym.next===u.Sym),ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Org!==null),ye(l.Dst!==null),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l);ye(l.Sym.next===u.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),T0=function(){function n(){this.handle=null}return n}(),M0=function(){function n(){this.key=null,this.node=0}return n}(),sT=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new T0,this.handles[r]=new M0;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,ye(a<=this.max),i=e[a].handle,a>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t>>1,i=e[a].handle,a===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new T0;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new M0}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;ye(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),vp=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),I0=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),lT=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new I0,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new I0;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),cT=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,a=r.eUp;if(i.Dst===o)return a.Dst===o?fe.vertLeq(i.Org,a.Org)?fe.edgeSign(a.Dst,i.Org,a.Org)<=0:fe.edgeSign(i.Dst,a.Org,i.Org)>=0:fe.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return fe.edgeSign(i.Dst,o,i.Org)>=0;var s=fe.edgeEval(i.Dst,o,i.Org),l=fe.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&ye(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ye(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new vp;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Ie.ODD:return(e&1)!==0;case Ie.NONZERO:return e!==0;case Ie.POSITIVE:return e>0;case Ie.NEGATIVE:return e<0;case Ie.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),n.finishRegion(t,a),s=i.eUp,a=i}return s},n.addRightEdges=function(t,e,r,o,i,a){var s,l,u,c,d=!0;u=r;do ye(fe.vertLeq(u.Org,u.Dst)),n.addRegionBelow(t,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,c=i;s=n.regionBelow(l),u=s.eUp.Sym,u.Org===c.Org;)u.Onext!==c&&(t.mesh.splice(u.Oprev,u),t.mesh.splice(c.Oprev,u)),s.windingNumber=l.windingNumber-u.winding,s.inside=n.isWindingInside(t,s.windingNumber),l.dirty=!0,!d&&n.checkForRightSplice(t,l)&&(n.addWinding(u,c),n.deleteRegion(t,l),t.mesh.delete(c)),d=!1,l=s,c=u;l.dirty=!0,ye(l.windingNumber-u.winding===s.windingNumber),a&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=fe.vertL1dist(e,t),i=fe.vertL1dist(r,t),a=.5*i/(o+i),s=.5*o/(o+i);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(fe.vertLeq(o.Org,i.Org)){if(fe.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;fe.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(fe.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a;if(ye(!fe.vertEq(o.Dst,i.Dst)),fe.vertLeq(o.Dst,i.Dst)){if(fe.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(fe.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,a=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a=o.Org,s=i.Org,l=o.Dst,u=i.Dst,c,d,p=new pa,f,h;if(ye(!fe.vertEq(u,l)),ye(fe.edgeSign(l,t.event,a)<=0),ye(fe.edgeSign(u,t.event,s)>=0),ye(a!==t.event&&s!==t.event),ye(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(c=Math.min(a.t,l.t),d=Math.max(s.t,u.t),c>d))return!1;if(fe.vertLeq(a,s)){if(fe.edgeSign(u,a,s)>0)return!1}else if(fe.edgeSign(l,s,a)<0)return!1;return n.debugEvent(t),fe.intersect(l,a,u,s,p),ye(Math.min(a.t,l.t)<=p.t),ye(p.t<=Math.max(s.t,u.t)),ye(Math.min(u.s,l.s)<=p.s),ye(p.s<=Math.max(s.s,a.s)),fe.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.event.t),f=fe.vertLeq(a,s)?a:s,fe.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),fe.vertEq(p,a)||fe.vertEq(p,s)?(n.checkForRightSplice(t,e),!1):!fe.vertEq(l,t.event)&&fe.edgeSign(l,t.event,p)>=0||!fe.vertEq(u,t.event)&&fe.edgeSign(u,t.event,p)<=0?u===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),h=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,h,!0),!0):(fe.edgeSign(l,t.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),fe.edgeSign(u,t.event,p)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,a,l,s,u),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,u=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(t,e),fe.vertEq(s.Org,t.event)&&(t.mesh.splice(i.Oprev,s),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),a),u=!0),fe.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,a,null),u=!0),u){n.addRightEdges(t,e,r.Onext,i,i,!0);return}fe.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,a,s,l;if(o=e.eUp,fe.vertEq(o.Org,r)){ye(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!fe.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}ye(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(ye(i!==a),n.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(r.anEdge,a),fe.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,a,s,l,u=new vp;if(u.eUp=e.anEdge.Sym,r=t.dict.search(u).key,o=n.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,fe.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=fe.vertLeq(s.Dst,a.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var c=t.mesh.connect(s.Dnext,e.anEdge);l=c.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,l):n.computeWinding(t,n.addRegionBelow(t,r,l)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);ye(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(t,i,null);s.Onext===a?n.connectRightVertex(t,o,s):n.addRightEdges(t,o,s.Onext,a,a,!0)},n.addSentinel=function(t,e,r,o){var i=new vp,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new lT(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,a=t.bmin[1]-r,s=t.bmax[1]+r;n.addSentinel(t,o,i,a),n.addSentinel(t,o,i,s)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ye(e.fixUpperEdge),ye(++r===1)),ye(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,fe.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new sT(i,fe.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,ye(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!fe.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),uT=function(){function n(){this.mesh=new C0,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ie.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,a,s,l=[0,0,0],u=[0,0,0],c=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,h[y]=e,l[y]=i,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,h[g]=e),i>l[g]&&(l[g]=i,f[g]=e);var b=0;if(l[1]-u[1]>l[0]-u[0]&&(b=1),l[2]-u[2]>l[b]-u[b]&&(b=2),u[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[b],o=f[b],c[0]=r.coords[0]-o.coords[0],c[1]=r.coords[1]-o.coords[1],c[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=c[1]*d[2]-c[2]*d[1],p[1]=c[2]*d[0]-c[0]*d[2],p[2]=c[0]*d[1]-c[1]*d[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,t[0]=p[0],t[1]=p[1],t[2]=p[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(c)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,u=t.next;u!==t;u=u.next)l?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,l=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;fe.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;fe.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(fe.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(fe.edgeGoesLeft(o.Lnext)||fe.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(fe.edgeGoesRight(r.Lprev)||fe.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var u=t.vHead.next;u!==t.vHead;u=u.next)u.n=-1;for(var c=t.fHead.next;c!==t.fHead;c=c.next)if(c.n=-1,!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;u.n===-1&&(u.n=s,s++),l++,i=i.Lnext}while(i!==c.anEdge);if(l>r)throw"Face vertex greater that support polygon";c.n=a,++a}this.elementCount=a,e===tt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var u=t.vHead.next;u!==t.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,c=t.fHead.next;c!==t.fHead;c=c.next)if(!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;this.elements[p++]=u.n,l++,i=i.Lnext}while(i!==c.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-1;if(e===tt.CONNECTED_POLYGONS){i=c.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==c.anEdge);for(var h=l;h<r;++h)this.elements[p++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,u=0,c=0;i=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[c++]=i,this.elements[c++]=a,i+=a}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new C0),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,a){if(t===void 0&&(t=Ie.ODD),e===void 0&&(e=tt.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),cT.computeInterior(this,a);var s=this.mesh;return e===tt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===tt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},n}();function Vr(n){var t=n.windingRule,e=t===void 0?Ie.ODD:t,r=n.elementType,o=r===void 0?tt.POLYGONS:r,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,u=n.normal,c=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,h=f===void 0?!0:f,m=n.debug,y=m===void 0?!1:m;if(!p&&h)throw new Error("Contours can't be empty");if(!!p){var g=new uT;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var b=0;b<p.length;b++)g.addContour(l||2,p[b]);return g.tesselate(e,o,a,l,c,h),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var Rq=Ie.ODD,Vq=Ie.NONZERO,zq=Ie.POSITIVE,Gq=Ie.NEGATIVE,kq=Ie.ABS_GEQ_TWO,Fq=tt.POLYGONS,jq=tt.CONNECTED_POLYGONS,Uq=tt.BOUNDARY_CONTOURS;import{Box2 as mT,BufferAttribute as eu,BufferGeometry as yT,Vector2 as gT}from"three";var Zc=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*Zc.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*Zc.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*t);a+=3*t;let l=new Float32Array(o,a*i,3*t);a+=3*t;let u=new Float32Array(o,a*i,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),u.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),u.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=u,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Us=Zc;Us.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var B0=Ft(E0()),Hs={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Pp={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Op={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Ap=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),gn=class extends yT{constructor(e,r,o=0,i=12,a=3,s=Ie.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=i,this._bevelSegmentsInput=a;let u=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(P=>{let O=P.extractShapePointsToFlatArray([],i),M=[];for(let I=O.length-1;I>=1;I-=2){let N=O[I-1],B=O[I-0];M.push(N,B)}return M}),d=[],p=[];for(let P=0;P<u.length;P+=2)p.push([u[P],u[P+1]]);d.push(p);for(let P=0;P<c.length;P++){let O=c[P],M=[];for(let I=0;I<O.length;I+=2)M.push([O[I],O[I+1]]);d.push(M)}let f;e.isText?f=new mT().setFromPoints(e.points.map(O=>O.position)).getSize(new gT).length()*.1:d[0].length===0?f=o:f=(0,B0.default)(d).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=Vr({windingRule:s,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[u]})}catch{h=Hs}let m;try{m=Vr({windingRule:Ie.ODD,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]})}catch{m=Pp}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let P=0;P<m.elements.length;P++){let O=m.elements[P],M=P%2===0?h.vertexCount:0;h.elements.push(O+M)}for(let P=0;P<m.vertexIndices.length;P++){let O=m.vertexIndices[P],M=h.vertexCount;h.vertexIndices.push(O+M)}for(let P=0;P<m.vertices.length;P++){let O=m.vertices[P];h.vertices.push(O)}}let g=1/0,b=-1/0,S=1/0,w=-1/0;for(let P=0,O=h.vertexCount;P<O;P++){let M=P*2,I=h.vertices[M+0],N=h.vertices[M+1];I<g&&(g=I),I>b&&(b=I),N<S&&(S=N),N>w&&(w=N)}this._minX=g,this._minY=S,this._width=b-g,this._height=w-S,this._buffer=new Us(this._computeBufferEstimatedSize(h));let v=[],_=[];for(let P=h.elementCount-1;P>=0;P--){let O=P>=y,M=P*2,I=h.elements[M+0],N=h.elements[M+1],B=I+N,D={start:I,count:N,normals:[],continuous:[],concave:[]},G=I,L=B-1,V=I+1,z=this._shape.roundedCurves.length;do{let X=G-I,j=h.vertices[L*2+0],Y=h.vertices[L*2+1],W=h.vertices[G*2+0],k=h.vertices[G*2+1],oe=h.vertices[V*2+0],ee=h.vertices[V*2+1],K=W-j,te=k-Y,Z=Math.sqrt(K*K+te*te);K/=Z,te/=Z;let se=W-oe,ne=k-ee,ie=Math.sqrt(se*se+ne*ne);se/=ie,ne/=ie,D.normals[X*2+0]=-ne,D.normals[X*2+1]=se,D.concave[X]=K*ne-te*se>0;let de=h.vertexIndices[G];if(Array.isArray(de))D.continuous[X]=!1;else{let[le,pe]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(pe>0&&pe<1)D.continuous[X]=!0;else{let ge=pe===1?le+1:le-1;ge=(ge+z)%z;let De=pe===1?0:1,Xe=this._shape.roundedCurves[le].getTangent(pe),Ee=this._shape.roundedCurves[ge].getTangent(De);D.continuous[X]=Xe.dot(Ee)>.95}}O&&(D.normals[X*2+0]*=-1,D.normals[X*2+1]*=-1),[L,G,V]=[G,V,V+1],V>=B&&(V-=N)}while(V!==I+1);let F=[];F.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(I*2,B*2),vertexCount:N,vertexIndices:new Array(N).fill(!0).map((X,j)=>[j,j]),elements:[0,N],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(I*2,B*2)});let $=0;for(let X=1;X<=this._bevelSegments;X++){let j=X/this._bevelSegments*Math.PI/2,Y=(1-Math.cos(j))*this._bevel,W=[],k=[],oe=[],ee=[],K=0;for(let Z=0;Z<N;Z++){let se=Z*2,ne=(Z-1+N)%N*2,ie=h.vertices[D.start*2+se+0],de=h.vertices[D.start*2+se+1],le=-D.normals[ne+0]*Y,pe=-D.normals[ne+1]*Y,ge=-D.normals[se+0]*Y,De=-D.normals[se+1]*Y;if(D.concave[Z]||!D.concave[Z]&&O){let Xe=Math.atan2(pe,le),Ee=Math.atan2(De,ge);Ee>Xe&&(Ee-=Math.PI*2);let je=Ee-Xe;if(D.continuous[Z]||O){let Yt=Xe+je/2,_e=Math.cos(Yt)*Y,yt=Math.sin(Yt)*Y;W[2*K+0]=ie+_e*(O?-1:1),W[2*K+1]=de+yt*(O?-1:1),ee[K]=Z,K++}else{let Yt=Math.max(1,Math.floor(i/4*Math.abs(je)/Math.PI));for(let _e=0;_e<=Yt;_e++){let yt=Xe+je*(_e/Yt),wt=Math.cos(yt)*Y,mi=Math.sin(yt)*Y;W[2*K+0]=ie+wt,W[2*K+1]=de+mi,ee[K]=Z,K++}}}else W[2*K+0]=ie+le,W[2*K+1]=de+pe,ee[K]=Z,k[Z]=K,K++,W[2*K+0]=ie,W[2*K+1]=de,ee[K]=Z,K++,W[2*K+0]=ie+ge,W[2*K+1]=de+De,ee[K]=Z,oe[Z]=K,K++}let te=Vr({windingRule:Ie.POSITIVE,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[W],edgeCreateCallback:Z=>{let ne=Z.Org.idx,ie=ee[ne],de=ee[(ne+1)%ee.length];Z.idx=[ie,de],Z.Sym.idx=[de,ie]},vertexIdCallback:Z=>{let se=Z.Lprev.idx;return[se?se[1]:0,Z.idx?Z.idx[0]:0]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${X}'th loop`);if(!te.vertexCount){let Z=(X-1)/this._bevelSegments*Math.PI/2;$=(1-Math.sin(Z))*this._bevel;break}for(let Z=0;Z<te.vertexIndices.length;Z++){let[se,ne]=te.vertexIndices[Z];if(se===ne)continue;let ie=ne;ne<se&&(ie+=N);for(let de=se;de<ie;de++){let le=de%N,pe=(de+1)%N;if(!D.continuous[le]||!D.continuous[pe]){te.vertexIndices[Z]=[se,le],te.vertexIndices.splice(Z+1,0,[pe,ne]),te.vertices.splice((Z+1)*2,0,te.vertices[Z*2],te.vertices[Z*2+1]);break}}}F.push({bevelI:X,angle:j,size:Y,boundary:te,reverseMap:ee,insetPoints:W})}let q=(X,j,Y)=>{let W=0,k=X.boundary.vertexIndices.length;for(;W<k&&Y(X.boundary.vertexIndices[j]);)j=(j+1)%k,W++;return W},H=v.length;for(let X=1;X<F.length;X++){let j=F[X-1],Y=F[X],W=j.boundary.vertexIndices.length,k=Y.boundary.vertexIndices.length;if(!W||!k)break;let oe=D.concave.length,ee=0,K=Ap(ee,N);for(;!j.boundary.vertexIndices.filter(K).length||!Y.boundary.vertexIndices.filter(K).length;)ee++,K=Ap(ee,N);let te=j.boundary.vertexIndices.findIndex(K),Z=Y.boundary.vertexIndices.findIndex(K);do te=(te+1)%W;while(K(j.boundary.vertexIndices[te]));do Z=(Z+1)%k;while(K(Y.boundary.vertexIndices[Z]));ee=(ee+1)%N;let se=ee,ne=0,ie=this._buildBevelVert(D,j,(te-1+W)%W,void 0,ne),de=this._buildBevelVert(D,Y,(Z-1+k)%k,void 0,ne),le=ie,pe=de,ge,De,Xe=!1;do{ne=(ee||oe)/oe,K=Ap(ee,N);let Ee=q(j,te,K),je=q(Y,Z,K),Yt=Xe;if(Xe=!1,Ee&&!je){for(let _e=0;_e<Ee;_e++)ge=this._buildBevelVert(D,j,(te+_e)%W,_e/(Ee-1),ne),v.push(le.topN,ge.topP,pe.topN),l===!1&&v.push(ge.bottomP,le.bottomN,pe.bottomN),le=ge;Xe=!0}else if(!Ee&&je)for(let _e=0;_e<je;_e++)De=this._buildBevelVert(D,Y,(Z+_e)%k,_e/(je-1),ne),v.push(pe.topN,le.topP,De.topP),l===!1&&v.push(le.bottomP,pe.bottomN,De.bottomP),pe=De;else if(Ee&&je)if(ge=this._buildBevelVert(D,j,te,0,ne),De=this._buildBevelVert(D,Y,Z,0,ne),Yt?(v.push(le.topN,De.topP,pe.topN),v.push(le.topN,ge.topP,De.topP),l===!1&&(v.push(De.bottomP,le.bottomN,pe.bottomN),v.push(De.bottomP,ge.bottomP,le.bottomN))):(v.push(pe.topN,le.topN,ge.topP),v.push(pe.topN,ge.topP,De.topP),l===!1&&(v.push(ge.bottomP,le.bottomN,pe.bottomN),v.push(ge.bottomP,pe.bottomN,De.bottomP))),le=ge,pe=De,Ee===je)for(let _e=1;_e<Ee;_e++)ge=this._buildBevelVert(D,j,(te+_e)%W,_e/(Ee-1),ne),De=this._buildBevelVert(D,Y,(Z+_e)%k,_e/(je-1),ne),v.push(le.topN,ge.topP,pe.topN),v.push(pe.topN,ge.topP,De.topP),l===!1&&(v.push(ge.bottomP,le.bottomN,pe.bottomN),v.push(ge.bottomP,pe.bottomN,De.bottomP)),le=ge,pe=De;else if(Ee>je){let _e=Ee/je,yt=0;for(let wt=1;wt<Ee;wt++)ge=this._buildBevelVert(D,j,(te+wt)%W,wt/(Ee-1),ne),v.push(le.topN,ge.topP,pe.topN),l===!1&&v.push(ge.bottomP,le.bottomN,pe.bottomN),le=ge,wt>(yt+1)*_e&&(yt++,De=this._buildBevelVert(D,Y,(Z+yt)%k,yt/(je-1),ne),v.push(pe.topN,ge.topP,De.topP),l===!1&&v.push(ge.bottomP,pe.bottomN,De.bottomP),pe=De)}else{let _e=je/Ee,yt=0;for(let wt=1;wt<je;wt++)De=this._buildBevelVert(D,Y,(Z+wt)%k,wt/(je-1),ne),v.push(pe.topN,ge.topP,De.topP),l===!1&&v.push(ge.bottomP,pe.bottomN,De.bottomP),pe=De,wt>(yt+1)*_e&&(yt++,ge=this._buildBevelVert(D,j,(te+yt)%W,yt/(Ee-1),ne),v.push(le.topN,ge.topP,pe.topN),l===!1&&v.push(ge.bottomP,le.bottomN,pe.bottomN),le=ge)}te=(te+Ee)%W,Z=(Z+je)%k,ee=(ee+1)%oe}while(ee!==se)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(F,D,v),O){let X=[];for(let j=v.length-1;j>=H+2;j-=3){let Y=v[j-2],W=v[j-1],k=v[j-0];X.push(k,W,Y)}v.splice(H,v.length-H,...X)}if(O){let X=[];for(let j=F[F.length-1].boundary.vertices.length-1;j>=1;j-=2){let Y=F[F.length-1].boundary.vertices[j-1],W=F[F.length-1].boundary.vertices[j-0];X.push(Y,W)}_.push(X)}if(!O){let X=F[F.length-1],j;try{j=Vr({windingRule:F.length>1?Ie.POSITIVE:Ie.ODD,elementType:tt.POLYGONS,vertexSize:2,strict:!0,contours:[X.insetPoints,..._]})}catch{j=Op}if(!j)throw new Error("Error generating geometry for surface");c.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Y=0;Y<j.elementCount*3;Y+=3){let W=this._buildSurfaceVert(j,j.elements[Y+0],$),k=this._buildSurfaceVert(j,j.elements[Y+1],$),oe=this._buildSurfaceVert(j,j.elements[Y+2],$);v.push(W.top,k.top,oe.top),l===!1&&v.push(oe.bottom,k.bottom,W.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new eu(Uint32Array.from(v),1),x=new eu(this._buffer.positions,3),T=new eu(this._buffer.normals,3),C=new eu(this._buffer.uvs,2);x.needsUpdate=!0,T.needsUpdate=!0,C.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",T),this.setAttribute("uv",C),this.setIndex(A)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),u=this._buildBevelVert(r,i,(a+1)%s);o.push(u.topP,l.topN,l.bottomN),o.push(u.topP,l.bottomN,u.bottomP)}}_buildSurfaceVert(e,r,o){let i=r.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,u=(s-this._minY)/this._height;this.forPathBevel&&(u=1);let c=this._buffer.get(this.forPathBevel?1:2),d=c*3,p=c*2,f={top:c+0,bottom:c+1};return this._buffer.positions[d+0]=a,this._buffer.positions[d+1]=s,this._buffer.positions[d+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[d+0]=0,this._buffer.normals[d+1]=0,this._buffer.normals[d+2]=1,this._buffer.uvs[p+0]=l,this._buffer.uvs[p+1]=u,this.forPathBevel===!1&&(this._buffer.positions[d+3]=a,this._buffer.positions[d+4]=s,this._buffer.positions[d+5]=o,this._buffer.normals[d+3]=0,this._buffer.normals[d+4]=0,this._buffer.normals[d+5]=-1,this._buffer.uvs[p+2]=l,this._buffer.uvs[p+3]=u),this.vertexCache[i]=f,f}_buildBevelVert(e,r,o,i=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,u]=r.boundary.vertexIndices[o],c,d,p,f;l!==u?(d=l,c=u,f=!1,p=e.continuous[d]&&e.continuous[c]):(c=l,d=(c-1+e.count)%e.count,f=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,g=c*2,b=d*2,S=r.boundary.vertices[y+0],w=r.boundary.vertices[y+1],v=(1-m)*this._bevel,_=(S-this._minX)/this._width,A=(w-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(_=a),A=1);let x=e.normals[g+0],T=e.normals[g+1],C=e.normals[b+0],P=e.normals[b+1];if(f){let B=C-x,D=P-T;x=x+B*(1-i),T=T+D*(1-i);let G=Math.sqrt(x*x+T*T);x/=G,T/=G}let O=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),M=O*3,I=O*2,N={i:o,fi:c,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1,pathBevelUCoord:a};return this._buffer.positions[M+0]=S,this._buffer.positions[M+1]=w,this._buffer.positions[M+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[M+0]=x*h,this._buffer.normals[M+1]=T*h,this._buffer.normals[M+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[M+3]=S,this._buffer.positions[M+4]=w,this._buffer.positions[M+5]=v,this._buffer.normals[M+3]=x*h,this._buffer.normals[M+4]=T*h,this._buffer.normals[M+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_),p||(this.forPathBevel?(O+=1,M+=3,I+=2):(O+=2,M+=6,I+=4),N.topP=O+0,N.bottomP=O+1,this._buffer.positions[M+0]=S,this._buffer.positions[M+1]=w,this._buffer.positions[M+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[M+0]=C*h,this._buffer.normals[M+1]=P*h,this._buffer.normals[M+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[M+3]=S,this._buffer.positions[M+4]=w,this._buffer.positions[M+5]=v,this._buffer.normals[M+3]=C*h,this._buffer.normals[M+4]=P*h,this._buffer.normals[M+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_)),this.vertexCache[s]=N,N}clone(){let e=new gn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Oo(this.userData),e}};var fa=class extends xT{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ie.ODD;this.elementType=tt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ie.ODD,elementType:tt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,u=!0,c,d;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,g=i[y+0],b=i[y+1];if(c!==void 0&&g!==c&&(l=!1),d!==void 0&&b!==d&&(u=!1),c=g,d=b,!l&&!u)break}if(!l&&!u)try{s=Vr({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=Hs}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new tu(new Float32Array(p*3),3),this._normalAttribute=new tu(new Float32Array(p*3),3),this._uvAttribute=new tu(new Float32Array(p*2),2),this._indexAttribute=new tu(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,g=-1/0;for(let w=0,v=p;w<v;w++){let _=w*2,A=s.vertices[_+0],x=s.vertices[_+1];A<h&&(h=A),A>m&&(m=A),x<y&&(y=x),x>g&&(g=x)}let b=m-h,S=g-y;for(let w=0,v=p;w<v;w++){let _=w*2,A=s.vertices[_+0],x=s.vertices[_+1],T=(A-h)/b,C=(x-y)/S;this._positionAttribute.setXYZ(w,A,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,T,C)}for(let w=0,v=f;w<v;w++){let _=w*3,A=s.elements[_+0],x=s.elements[_+1],T=s.elements[_+2];this._indexAttribute.setX(_+0,A),this._indexAttribute.setX(_+1,x),this._indexAttribute.setX(_+2,T)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new fa(this._shape,this._curveSegments);return e.userData=Oo(this.userData),e}};var ha=class extends gn{constructor(e,r,o=0,i=12,a=3,s=Ie.ODD){super(e,r,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),u=this._buildBevelVert(r,i,(a+1)%s);o.push(u.topP,l.topN,l.bottomN),o.push(u.topP,l.bottomN,u.bottomP)}}clone(){let e=new ha(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Oo(this.userData),e}};var Jt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Ie.ODD},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Le?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new Le(r,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Le(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new fa(n.shape,o,{windingRule:a}):s=new ha(n.shape,t,e,o,r,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as bT,Float32BufferAttribute as vT,MathUtils as Cp,Vector2 as R0}from"three";var V0=Math.PI*2,ya=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=Cp.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,u=n.shape,c=t*.5,d=e*.5,p=ST(u,c,d,o*Math.PI/180,r,i);u.isClosed=!0,u.update();let f;return o===0?(f=new bT,f.setAttribute("position",new vT([],3))):f=Jt.create({shape:u,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function ST(n,t,e,r,o,i){if(r>=V0)return o>30||o%4===0?(_T(n,t,e,i),Math.round(o/4)):L0(n,r,o,t,e,i);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},u=O0({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?wT(n,a.x,a.y,u,o,t,e,i):L0(n,r,o,t,e,i)}function wT(n,t,e,r,o,i,a,s){let l=Math.round(o/r.length);n.addPoint(ma(t,e));for(let u=0,c=r.length;u<c;u++){let d=r[u],p=n.points[u],f=ma(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return s>0?z0(n,i,a,s):n.addPoint(ma(0,0)),l}function L0(n,t,e,r,o,i){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,u=Math.sin(l)*r,c=Math.cos(l)*o;n.addPoint(ma(u,c))}return t<V0?i>0?z0(n,r,o,i):n.addPoint(ma(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&G0(n,r,o,i)),1}function _T(n,t,e,r=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;n.addPoint(ru(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(ru(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(ru(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(ru(o,i-e,o+s,i-e,o-s,i-e)),r>0&&G0(n,t,e,r)}function ma(n,t){return new Rr(Cp.generateUUID(),new R0(n,t))}function ru(n,t,e,r,o,i){let a=ma(n,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,i),a}function z0(n,t,e,r){k0(n,t,e,r).forEach(i=>n.addPoint(i))}function G0(n,t,e,r){let o=k0(n,t,e,r),i=new Le;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function k0(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new R0(o/t,i/e),s=n.points.map(l=>{let u=l.clone();return u.uuid=Cp.generateUUID(),u}).reverse();return s.forEach(l=>{l.position.multiply(a);let u=l.controls[0].position.clone().multiply(a),c=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(c),l.controls[1].position.copy(u)}),s}import{BufferGeometry as AT,Float32BufferAttribute as Tp,Uint32BufferAttribute as PT,Vector3 as F0}from"three";var j0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),a=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:u,cornerRadius:c,cornerSegments:d}=n.parameters,p=new qs(!1,t,e,r,o,i,a,s,l,u,c,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Mp=new PT([0,0,0],1),qs=class extends AT{constructor(t=!0,e=1,r=1,o=1,i=1,a=1,s=1,l=1,u=1,c=1,d=1,p=1){if(super(),a===0)return;let f=t&&a===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let h=()=>new F0,m=new F0,y=h(),g=h(),b=h(),S,w,v,_,A,x,T,C,P=h(),O=h(),M=h(),I=h(),N=h(),B=h(),D=h(),G=h(),L=r-2*l+.001,V=L/a,z=Math.ceil(s*a),F=z+1,$=L/z,q=-L/2,H=c+1,X=2*Math.PI/c,j=Math.PI/2/p,Y=.01,W=Math.min((1-d/100)*l,l-Y),k=l-W,oe=0,ee=2,K=p*ee+ee,te=H*K/ee,Z=te+H*F,se=Math.max(0,H*(F+K)),[ne,ie,de]=[3,3,2].map(ct=>Array(se*ct).fill(0)),le=[],pe=i-l;function ge(ct,ar){let Wr=Math.PI/2;x=ar*$,C=2*Math.PI*(x%V)/V+Wr,x+=q,T=Math.sin(C)*pe,A=Math.cos(C)*pe,t?ct.set(A,T,x):ct.set(A,x,T)}ge(m,-1e-10),ge(y,0),P.copy(m),ge(m,1);let De=m.distanceTo(y),Xe=f?0:k+W,Ee=De*z+2*Xe,je=W,Yt=Ee-Xe;for(let ct=0;ct<=z;ct++){ge(g,ct),G.subVectors(g,P).normalize(),P.copy(g),B.copy(g).setComponent(+t+1,0).normalize(),D.crossVectors(G,B).normalize();let ar=ct===0,Wr=ct===z,LS=ar?3*Math.PI/2:j,RS=ar?je:Yt,VS=ar?H:Z,zS=ar?0:se-H,GS=G.clone().multiplyScalar(ar?-k:k).add(g),kS=G.clone().multiplyScalar(ar?-1:1).normalize();for(let So=0;So<H;So++){let ph=So*X;if(O.addVectors(m.copy(B).multiplyScalar(l*Math.cos(ph)),y.copy(D).multiplyScalar(l*Math.sin(ph))),M.copy(O).normalize(),ar||Wr){f||(oe=zS+So,[0,1,2].forEach(Xt=>{ne[oe*3+Xt]=GS.getComponent(Xt),ie[oe*3+Xt]=kS.getComponent(Xt)}),de[oe*2]=+Wr,de[oe*2+1]=So/c),y.copy(M).multiplyScalar(W),b.addVectors(g,y);for(let Xt=0;Xt<p;Xt++){let sd=Xt*j+LS;I.addVectors(m.copy(G).multiplyScalar(k*Math.sin(sd)),y.copy(M).multiplyScalar(k*Math.cos(sd))),N.copy(I).normalize(),y.addVectors(b,I),I.normalize(),oe=VS+Xt*H+So,[0,1,2].forEach(Al=>{ne[oe*3+Al]=y.getComponent(Al),ie[oe*3+Al]=N.getComponent(Al)});let FS=+ar+Math.sin(sd);de[oe*2]=(RS+k*FS)/Ee,de[oe*2+1]=So/c}}y.addVectors(g,O),oe=te+ct*H+So,[0,1,2].forEach(Xt=>{ne[oe*3+Xt]=y.getComponent(Xt),ie[oe*3+Xt]=M.getComponent(Xt)}),de[oe*2]=(Xe+ct*De)/Ee,de[oe*2+1]=So/c}}let _e=F+2*p+ee,yt=1,[wt,mi]=[+f,_e-1];for(let ct=wt;ct<=mi-1;ct++){let ar=f&&ct===mi-1;for(let Wr=0;Wr<H-1;Wr++)S=ct*H+Wr,w=S+1,v=(ar?Wr:S)+H,_=(ar?Wr+1:w)+H,ct===0?le.push(w,_,v):ct===_e-2?le.push(S,w,v):le.push(S,w,v,w,_,v)}this.setIndex(le),this.setAttribute("position",new Tp(ne,3)),this.setAttribute("normal",new Tp(ie,3)),this.setAttribute("uv",new Tp(de,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,u=6*(e-1)*t.radialSegments,c=e,d=c===e;for(let p=0;p<t.radialSegments;p++)i=c*r+p,a=i+1,s=(d?p:i)+r,l=(d?p+1:a)+r,o[u++]=i,o[u++]=a,o[u++]=s,o[u++]=a,o[u++]=l,o[u++]=s;return o.length=u,Mp.array=o,Mp.count=o.length,Mp}};import{IcosahedronGeometry as OT}from"three";var U0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Ws(t*.5,i,a):new OT(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Ws=class extends hn{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(i,a,s,t,e,r),this.type=s}static fromJSON(t){return new Ws(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as CT,Shape as TT}from"three";var H0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new TT;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new CT(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Z0,BufferGeometryLoader as kT,Vector3 as FT,BoxGeometry as J0}from"three";import{BufferGeometry as RT,Vector2 as Ep,Vector3 as K0}from"three";import{Box3 as MT,BufferAttribute as $s,BufferGeometry as q0,Color as Dp,EventDispatcher as IT,Float32BufferAttribute as ga,Matrix3 as W0,Matrix4 as Q0,MathUtils as NT,Object3D as DT,Sphere as ET,Vector2 as dr,Vector3 as Lt,Vector4 as BT}from"three";var io=new Q0,Ip=new DT,ou=new Lt,xn=class extends IT{constructor(){super(),this.uuid=NT.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new W0().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return io.makeRotationX(t),this.applyMatrix4(io),this}rotateY(t){return io.makeRotationY(t),this.applyMatrix4(io),this}rotateZ(t){return io.makeRotationZ(t),this.applyMatrix4(io),this}translate(t,e,r){return io.makeTranslation(t,e,r),this.applyMatrix4(io),this}scale(t,e,r){return io.makeScale(t,e,r),this.applyMatrix4(io),this}lookAt(t){return Ip.lookAt(t),Ip.updateMatrix(),this.applyMatrix4(Ip.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new Lt().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new Dp().fromBufferAttribute(s,p));function c(p,f,h,m){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[h].clone()],g=a===void 0?[]:[new Lt().fromBufferAttribute(a,p),new Lt().fromBufferAttribute(a,f),new Lt().fromBufferAttribute(a,h)],b=new xa(p,f,h,g,y,m);e.faces.push(b),l!==void 0&&e.faceVertexUvs[0].push([new dr().fromBufferAttribute(l,p),new dr().fromBufferAttribute(l,f),new dr().fromBufferAttribute(l,h)]),u!==void 0&&e.faceVertexUvs[1].push([new dr().fromBufferAttribute(u,p),new dr().fromBufferAttribute(u,f),new dr().fromBufferAttribute(u,h)])}let d=t.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],h=f.start,m=f.count;for(let y=h,g=h+m;y<g;y+=3)r!==void 0?c(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):c(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let p=0;p<r.count;p+=3)c(r.getX(p),r.getX(p+1),r.getX(p+2));else for(let p=0;p<i.count;p+=3)c(p,p+1,p+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(ou).negate(),this.translate(ou.x,ou.y,ou.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Q0;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new Lt,e=new Lt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new Lt;if(t){let r=new Lt,o=new Lt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],u=this.vertices[s.b],c=this.vertices[s.c];r.subVectors(c,u),o.subVectors(l,u),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new xn;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let u=new Lt,c={a:new Lt,b:new Lt,c:new Lt};i.push(u),a.push(c)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],u=o.vertexNormals[i];l.copy(s.normal),u.a.copy(s.vertexNormals[0]),u.b.copy(s.vertexNormals[1]),u.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new MT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ET),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,u=t.faces,c=this.colors,d=t.colors;e!==void 0&&(o=new W0().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let m=s[p].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let p=0,f=d.length;p<f;p++)c.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let h=u[p],m,y,g=h.vertexNormals,b=h.vertexColors,S=new xa(h.a+i,h.b+i,h.c+i);S.normal.copy(h.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,v=g.length;w<v;w++)m=g[w].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),S.vertexNormals.push(m);S.color.copy(h.color);for(let w=0,v=b.length;w<v;w++)y=b[w],S.vertexColors.push(y.clone());S.materialIndex=h.materialIndex+r,l.push(S)}for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],b=[];for(let S=0,w=g.length;S<w;S++)b.push(g[S].clone());this.faceVertexUvs[p].push(b)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let l=0,u=this.vertices.length;l<u;l++){let c=this.vertices[l],d=Math.round(c.x*i)+"_"+Math.round(c.y*i)+"_"+Math.round(c.z*i);e[d]===void 0?(e[d]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[d]]}let a=[];for(let l=0,u=this.faces.length;l<u;l++){let c=this.faces[l];c.a=o[c.a],c.b=o[c.b],c.c=o[c.c];let d=[c.a,c.b,c.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let u=a[l];this.faces.splice(u,1);for(let c=0,d=this.faceVertexUvs.length;c<d;c++)this.faceVertexUvs[c].splice(u,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new Lt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,u){return l.materialIndex-u.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let u=t[l]._id;a&&a.push(o[u]),s&&s.push(i[u])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],i={},a=[],s={},l=[],u={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,g=!1,b=this.faceVertexUvs[0][h]!==void 0,S=m.normal.length()>0,w=m.vertexNormals.length>0,v=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.vertexColors.length>0,A=0;if(A=c(A,0,0),A=c(A,1,y),A=c(A,2,g),A=c(A,3,b),A=c(A,4,S),A=c(A,5,w),A=c(A,6,v),A=c(A,7,_),r.push(A),r.push(m.a,m.b,m.c),r.push(m.materialIndex),b){let x=this.faceVertexUvs[0][h];r.push(f(x[0]),f(x[1]),f(x[2]))}if(S&&r.push(d(m.normal)),w){let x=m.vertexNormals;r.push(d(x[0]),d(x[1]),d(x[2]))}if(v&&r.push(p(m.color)),_){let x=m.vertexColors;r.push(p(x[0]),p(x[1]),p(x[2]))}}function c(h,m,y){return y?h|1<<m:h&~(1<<m)}function d(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[m]}function p(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return u[m]!==void 0||(u[m]=l.length/2,l.push(h.x,h.y)),u[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new xn().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let r=t.colors;for(let p=0,f=r.length;p<f;p++)this.colors.push(r[p].clone());let o=t.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],b=[];for(let S=0,w=g.length;S<w;S++){let v=g[S];b.push(v.clone())}this.faceVertexUvs[p].push(b)}}let i=t.morphTargets;for(let p=0,f=i.length;p<f;p++){let h={};if(h.name=i[p].name,i[p].vertices!==void 0){h.vertices=[];for(let m=0,y=i[p].vertices.length;m<y;m++)h.vertices.push(i[p].vertices[m].clone())}if(i[p].normals!==void 0){h.normals=[];for(let m=0,y=i[p].normals.length;m<y;m++)h.normals.push(i[p].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let p=0,f=a.length;p<f;p++){let h={};if(a[p].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[p].vertexNormals.length;m<y;m++){let g=a[p].vertexNormals[m],b={};b.a=g.a.clone(),b.b=g.b.clone(),b.c=g.c.clone(),h.vertexNormals.push(b)}}if(a[p].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[p].faceNormals.length;m<y;m++)h.faceNormals.push(a[p].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[p].clone());let l=t.skinIndices;for(let p=0,f=l.length;p<f;p++)this.skinIndices.push(l[p].clone());let u=t.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let c=t.boundingBox;c!==null&&(this.boundingBox=c.clone());let d=t.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Np().fromGeometry(this),e=new q0,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",nu.call(new $s(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",nu.call(new $s(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",$0.call(new $s(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",Y0.call(new $s(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",Y0.call(new $s(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let u=a[s],c=new ga(u.data.length*3,3);c.name=u.name,i.push(nu.call(c,u.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new ga(t.skinIndices.length*4,4);e.setAttribute("skinIndex",X0.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new ga(t.skinWeights.length*4,4);e.setAttribute("skinWeight",X0.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new q0,r=t.geometry;if(t.isPoints||t.isLine){let o=new ga(r.vertices.length*3,3),i=new ga(r.colors.length*3,3);if(e.setAttribute("position",nu.call(o,r.vertices)),e.setAttribute("color",$0.call(i,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new ga(r.lineDistances.length,1);e.setAttribute("lineDistance",LT.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};xn.prototype.isGeometry=!0;var Np=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,u;if(l>0){u=[];for(let g=0;g<l;g++)u[g]={name:s[g].name,data:[]};this.morphTargets.position=u}let c=t.morphNormals,d=c.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:c[g].name,data:[]};this.morphTargets.normal=p}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let b=e[g];this.vertices.push(r[b.a],r[b.b],r[b.c]);let S=b.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let v=b.normal;this.normals.push(v,v,v)}let w=b.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let v=b.color;this.colors.push(v,v,v)}if(i===!0){let v=o[0][g];v!==void 0?this.uvs.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new dr,new dr,new dr))}if(a===!0){let v=o[1][g];v!==void 0?this.uvs2.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new dr,new dr,new dr))}for(let v=0;v<l;v++){let _=s[v].vertices;u[v].data.push(_[b.a],_[b.b],_[b.c])}for(let v=0;v<d;v++){let _=c[v].vertexNormals[g];p[v].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[b.a],f[b.b],f[b.c]),y&&this.skinWeights.push(h[b.a],h[b.b],h[b.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},xa=class{constructor(t,e,r,o,i,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new Lt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Dp,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function LT(n){return this.array.set(n),this}function $0(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),i=new Dp),t[e++]=i.r,t[e++]=i.g,t[e++]=i.b}return this}function Y0(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),i=new dr),t[e++]=i.x,t[e++]=i.y}return this}function nu(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),i=new Lt),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z}return this}function X0(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),i=new BT),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z,t[e++]=i.w}return this}var VT=["a","b","c"];function zT(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Bp(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Lp(n,t,e,r,o,i){let a=Math.min(n,t),s=Math.max(n,t),l=a+"_"+s,u;if(r.has(l))u=r.get(l);else{let c=e[a],d=e[s];u={a:c,b:d,newEdge:null,faces:[]},r.set(l,u)}u.faces.push(o),i[n].edges.push(u),i[t].edges.push(u)}function GT(n,t,e,r){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)a=t[o],Lp(a.a,a.b,n,r,a,e),Lp(a.b,a.c,n,r,a,e),Lp(a.c,a.a,n,r,a,e)}function iu(n,t,e,r,o){n.push(new xa(t,e,r,void 0,void 0,o))}function ba(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function au(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var su=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof RT?t=new xn().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new K0,r,o,i,a,s,l=t.vertices,u=t.faces,c=t.faceVertexUvs[0],d=c!==void 0&&c.length>0,p=[],f=new Map;GT(l,u,p,f);let h=[],m,y,g,b,S,w,v;for(let Y of Array.from(f.keys())){for(y=f.get(Y),g=new K0,S=3/8,w=1/8,v=y.faces.length,v!=2&&(S=.5,w=0,v!=1),g.addVectors(y.a,y.b).multiplyScalar(S),e.set(0,0,0),a=0;a<v;a++){for(b=y.faces[a],s=0;s<3&&(m=l[zT(b,VT[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(w),g.add(e),y.newEdge=h.length,h.push(g)}let _,A,x,T,C,P,O,M=[];for(o=0,i=l.length;o<i;o++){for(P=l[o],C=p[o].edges,r=C.length,r==3?_=3/16:r>3&&(_=3/(8*r)),A=1-r*Number(_),x=_,r<=2&&(r==2?(A=3/4,x=1/8):r==1||r==0),O=P.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<r;a++)T=C[a],m=T.a!==P?T.a:T.b,e.add(m);e.multiplyScalar(Number(x)),O.add(e),M.push(O)}let I=M.concat(h),N=M.length,B,D,G,L=[],V=[],z,F,$,q,H=new Ep,X=new Ep,j=new Ep;for(o=0,i=u.length;o<i;o++)b=u[o],B=Number(Bp(b.a,b.b,f).newEdge)+N,D=Number(Bp(b.b,b.c,f).newEdge)+N,G=Number(Bp(b.c,b.a,f).newEdge)+N,iu(L,B,D,G,b.materialIndex),iu(L,b.a,B,G,b.materialIndex),iu(L,b.b,D,B,b.materialIndex),iu(L,b.c,G,D,b.materialIndex),d&&(z=c[o],F=z[0],$=z[1],q=z[2],H.set(ba(F.x,$.x),ba(F.y,$.y)),X.set(ba($.x,q.x),ba($.y,q.y)),j.set(ba(F.x,q.x),ba(F.y,q.y)),au(V,H,X,j),au(V,F,H,j),au(V,$,X,H),au(V,q,j,X));t.vertices=I,t.faces=L,d&&(t.faceVertexUvs[0]=V)}};var xt=new FT,ex=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new Z0().copy(new J0(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(xt),r={width:xt.x,height:xt.y,depth:xt.z,subdivisions:0}):r=t.parameters;let o={...r,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new Z0().copy(new J0(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(xt)):xt.set(a.width,a.height,a.depth),(t!==xt.x||e!==xt.y||r!==xt.z)&&i.scale(xt.x===0?1:t/xt.x,xt.y===0?1:e/xt.y,xt.z===0?1:r/xt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new su(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new kT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(xt);let a=100/xt.x;Object.assign(i.parameters,{width:100,height:xt.y*a,depth:xt.z*a}),t(this.build(i))})}};var lu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,u=t*.5,c=e*.5,d=0,p=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,g=d+Math.sin(y)*u,b=p+Math.cos(y)*c;l.addPoint(l.createPoint(g,b))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=Jt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as jT,Float32BufferAttribute as Rp,Vector2 as ao,Vector3 as Ct}from"three";var tx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,u=new zp(t*.5,e,o,i,a,s,l);return u.scale(1,1,r/t),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Ys(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Vp(n,t,e,r,o,i){let a=t.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let u=a.add(s).normalize();i.copy(n).addScaledVector(u,r/Math.sin(l/2))}else{let u=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(u)),i.addScaledVector(s,r/Math.sin(u))}}function UT(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var zp=class extends jT{constructor(t=.5,e=1,r=4,o=1,i=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],u=[],c=[],d=[],p=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,g=(r-2)*Math.PI/r,b=Math.PI-g,S=new Ct(0,-f,0),w=new Ct(0,f,0),v=new ao(t,-f),_=new ao(m,-f),A=new ao(0,w.y).sub(_),x=new ao(0,w.y).sub(v),T=new ao(A.y,-A.x).normalize(),C=new ao(x.y,-x.x).normalize(),O=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,O);let M;{let V=new Ct(T.x,T.y,0),z=new Ct(Math.cos(y)*V.x,V.y,Math.sin(y)*V.x);M=V.angleTo(z)}let I=a/Math.tan((Math.PI-A.angle())/2),N=a/Math.tan((Math.PI-M)/2),B=new Ct;if(!i){u.push(S.x,S.y,S.z),c.push(0,-1,0),d.push(0,0);let V=p++,z=[],F=v.clone(),$=I/Math.cos(Math.PI/r);F.x-=$;for(let q=0;q<r;q++){let H=q/r*Math.PI*2+h,X=new ao(Math.sin(H),Math.cos(H));Ys(F,X,B),u.push(B.x,B.y,B.z),c.push(0,-1,0),d.push(0,0),z.push(p++)}for(let q=0;q<z.length;q++)l.push(z[q],V,z[(q+1)%z.length])}let D=[];{let V=new Ct,z=new Ct,F=new Ct,$=new Ct,q=new Ct,H=new Ct;for(let X=0;X<r;X++){let j=X/r*Math.PI*2+h,Y=(X+.5)/r*Math.PI*2+h,W=(X+1)/r*Math.PI*2+h,k=new ao(Math.sin(j),Math.cos(j)),oe=new ao(Math.sin(Y),Math.cos(Y)),ee=new ao(Math.sin(W),Math.cos(W));Ys(v,k,z),Ys(v,ee,F),Ys(T,oe,V),Vp(w,z,F,N,N,$),u.push($.x,$.y,$.z),Vp(z,w,F,N,I,q),u.push(q.x,q.y,q.z),Vp(F,z,w,I,N,H),u.push(H.x,H.y,H.z),c.push(V.x,V.y,V.z),c.push(V.x,V.y,V.z),c.push(V.x,V.y,V.z),d.push(0,0),d.push(0,0),d.push(0,0);let K=p++,te=p++,Z=p++;if(l.push(K,te,Z),a>0){{let ie=z.clone().add(F).multiplyScalar(.5),de=w.clone().sub(ie).normalize(),pe=S.clone().sub(ie).normalize().add(de).normalize().multiplyScalar(-1),ge=H.clone().sub(q);G(ie,ge,pe,A.angle())}let se,ne;{let ie=new Ct;Ys(C,ee,ie);let de=H.clone().add($).multiplyScalar(.5);de=UT(de,F,w);let le=H.clone().sub($);[se,ne]=G(de,le,ie,M,$.y)}{let ie=se,de=ie.clone().setY(0).normalize(),le=new Ct(0,-1,0),pe=de.clone().cross(le);L(ie,de,le,pe)}D.concat(ne);{let ie=A.angle(),de=Math.PI-ie,le=w.clone();le.y-=a/Math.sin(ie-Math.PI/2);let pe=new Ct,ge=[];for(let Xe=0;Xe<s;Xe++){let Ee=[],je=Math.PI/2-de*Xe/s,Yt=Math.cos(je),_e=Math.sin(je),yt=Y;for(let wt=0;wt<=Xe;wt++){let mi=Math.cos(yt),ct=Math.sin(yt);V.x=Yt*ct,V.y=_e,V.z=Yt*mi,pe.copy(le).addScaledVector(V,a),u.push(pe.x,pe.y,pe.z),c.push(V.x,V.y,V.z),d.push(0,0),Ee.push(p++),yt+=Math.PI*2/Xe/r}ge.push(Ee)}ne.reverse(),ge.push(ne);let De=ge.length-1;for(let Xe=0;Xe<De;Xe++){let Ee=ge[Xe],je=ge[Xe+1],Yt=Ee.length-1;l.push(je[1],Ee[0],je[0]);for(let _e=1;_e<=Yt;_e++)l.push(Ee[_e],Ee[_e-1],je[_e]),l.push(je[_e+1],Ee[_e],je[_e])}}}}}this.setIndex(l),this.setAttribute("position",new Rp(u,3)),this.setAttribute("normal",new Rp(c,3)),this.setAttribute("uv",new Rp(d,2));function G(V,z,F,$,q){let H=-$/2,X=(Math.PI-$)/2,j=z.clone().normalize().cross(F);V.addScaledVector(F,-a/Math.sin(X));let Y=new Ct,W=new Ct,k=1,oe=p,ee=[];for(let K=0;K<=s;K++){let te=H+K/s*$;W.set(0,0,0),W.addScaledVector(j,Math.sin(te)),W.addScaledVector(F,Math.cos(te));for(let Z=0;Z<=k;Z++){let se=Z/k-.5;if(Y.copy(V),Y.addScaledVector(z,se),Y.addScaledVector(W,a),q!=null){let ne=Math.max(0,Y.y-q);Y.addScaledVector(z,-ne/z.y)}u.push(Y.x,Y.y,Y.z),c.push(W.x,W.y,W.z),d.push(0,0),Z===0&&ee.push(p),p++}}for(let K=0;K<s;K++)for(let te=0;te<k;te++){let Z=oe+te+(k+1)*K,se=Z+(k+1),ne=se+1,ie=Z+1;l.push(Z,se,ie),l.push(se,ne,ie)}return[V.clone().addScaledVector(z,.5),ee]}function L(V,z,F,$){let q=Math.PI/2,H=x.angle()-q,X=[],j=new Ct,Y=new Ct;for(let k=0;k<=s;k++){let oe=[],ee=k/s;for(let K=0;K<=k;K++){let Z=((k?K/k:0)-.5)*b,se=Math.cos(Z),ne=Math.sin(Z),ie=Math.atan(Math.tan(H)*se),de=(q+ie)*ee,le=Math.cos(de),pe=Math.sin(de);j.set(0,0,0),j.addScaledVector(z,pe*se),j.addScaledVector(F,le),j.addScaledVector($,pe*ne),Y.copy(V).addScaledVector(j,a),u.push(Y.x,Y.y,Y.z),c.push(j.x,j.y,j.z),d.push(0,0),oe.push(p++)}X.push(oe)}let W=X.length-1;for(let k=0;k<W;k++){let oe=X[k],ee=X[k+1],K=oe.length-1;l.push(oe[0],ee[1],ee[0]);for(let te=1;te<=K;te++)l.push(oe[te-1],oe[te],ee[te]),l.push(oe[te],ee[te+1],ee[te])}}}};var va=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,u={x:e*.5,y:r*.5},c={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,v,_){return v>e&&_>r?Math.min(w*e/v,w*r/_):v>e?w*e/v:_>r?w*r/_:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let h=c.x,m=d.x,y=d.y,g=c.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.isClosed=!0;let b=!0;for(let w=0,v=t.points.length;w<v;w++)t.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(b=!1);b&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let S=Jt.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as HT,Float32BufferAttribute as qT,MathUtils as rx,SphereGeometry as WT}from"three";var ox=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=rx.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:u}=n.parameters,c;return u===0?(c=new HT,c.setAttribute("position",new qT([],3))):c=new WT(.5*t,o,i,a,s,l,u*rx.DEG2RAD),c.scale(1,e/t,r/t),Object.assign(c,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as $T}from"three";var nx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new $T(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as YT,Float32BufferAttribute as Gp,Vector3 as XT}from"three";var ix=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new kp(t,e,r,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},kp=class extends YT{constructor(t=1,e=1,r=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],u=[],c=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-c,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(Y=0,W=0,k=0)=>new XT(Y,W,k),h=f(),m=f(),[y,g,b]=[e/2,t/2,r/2],S=-g,w=+g,[v,_,A]=[f(S,-y,+b),f(S,-y,-b),f(S,+y,-b)],x=(Y,W=!1)=>Math.sin(Y-Math.PI/(1+ +W)),T=(Y,W=!1)=>Math.cos(Y-Math.PI/(1+ +W));A.y=Math.sin(o)*e-y;let C=Math.cos(o)*e-b,P=v.z-c;o<=p?(A.z=Math.min(C,P),A.z==P&&(A.y-=(C-P)/Math.tan(p-o))):_.z=Math.min(_.z-C-b,v.z-c),h.subVectors(v,_),m.subVectors(A,_);let O=Math.min(h.length(),m.length())*i/100,M=O*Math.tan(o/2),I=O/Math.cos(o/2),N=h.clone().normalize().add(m.normalize()).setLength(I).add(_);h.set(0,x(o,!0),T(o,!0)),d.push([A,h.clone()]);let B=(Math.PI-o)/a;for(let Y=0;Y<=a;Y++){let W=p+o+Y*B;h.set(0,Math.sin(W)*M,Math.cos(W)*M),h.add(N),m.set(0,x(W),T(W)),d.push([h.clone(),m.clone()])}d.push([v,f(0,1,0)]);let D=Math.sin(B/2)*M*2,G=d.length-1,L=d[0][0].distanceTo(d[1][0]),V=d[G-1][0].distanceTo(d[G][0]),z=L+D*a+V;d[0].push(1);for(let Y=0;Y<=a;Y++)d[Y+1].push(1-(L+Y*D)/z);d[G].push(0);let[F,$,q]=d[0],H,X,j;for(let Y=1;Y<d.length;Y++)[H,X,j]=d[Y],s.push(S,F.y,F.z,S,H.y,H.z,w,F.y,F.z,w,F.y,F.z,S,H.y,H.z,w,H.y,H.z),l.push(0,$.y,$.z,0,X.y,X.z,0,$.y,$.z,0,$.y,$.z,0,X.y,X.z,0,X.y,X.z),u.push(0,q,0,j,1,q,1,q,0,j,1,j),[F,$,q]=[H,X,j];this.setAttribute("position",new Gp(s,3)),this.setAttribute("normal",new Gp(l,3)),this.setAttribute("uv",new Gp(u,2))}};var cu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}=n.parameters,c=n.shape,d=t*.5,p=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*r/100,b=p*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let w=0;w<o;w++){let v=m*w,_=f+Math.sin(v)*d,A=h+Math.cos(v)*p;c.addPoint(c.createPoint(_,A))}}else for(let w=0;w<o;w++){let v=f+Math.cos(y)*d,_=h+Math.sin(y)*p;c.addPoint(c.createPoint(v,_)),y+=m,v=f+Math.cos(y)*g,_=h+Math.sin(y)*b,w<=o,c.addPoint(c.createPoint(v,_)),y+=m}c.isClosed=!0;for(let w=0,v=c.points.length;w<v;w++)c.points[w].roundness=i;c.roundness=i,c.update();let S=Jt.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as QT}from"three";var ax=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new QT(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as KT,Float32BufferAttribute as ZT,MathUtils as JT}from"three";var sx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,u=eM(t,e,r,t*.5,a,i,0,0,o,s,l);return u.scale(1,e/t,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function eM(n,t,e,r,o,i,a,s,l,u,c){[t,e]=[e,t],a=t/2;let d=JT.clamp(o/360,0,1);if(d===0){let p=new KT;return p.setAttribute("position",new ZT([],3)),p}return d===1&&(u=0),new qs(!0,n,t,e,r,d,i,a,s,l,u,c)}import{TorusKnotGeometry as tM}from"three";var lx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:a}=n.parameters,s=t*.5;s!==e&&(s-=e);let l=new tM(s,e,r,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var cx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,u=t*.5,c=e*.5;s?(l.addPoint(l.createPoint(-u,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))),l.isClosed=!0;for(let p=0,f=l.points.length;p<f;p++)l.points[p].roundness=r;l.roundness=r,l.update();let d=Jt.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as dx,Vector3 as Tt,Matrix3 as rM,Matrix4 as $n,BufferGeometry as px,BufferAttribute as Sa,MathUtils as uu}from"three";function ux(n,t){let e=2*Math.PI;return(n%e+e)%e===(t%e+e)%e}var oM=new $n,nM=new $n;function iM(n,t,e){let r=[new Tt,new Tt,new Tt],o=[new Tt,new Tt,new Tt];return n.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((i,a)=>{let s=o[a],l=uu.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new $n().makeBasis(r[0],r[1],r[2])}var fx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=t?.shapeData??ya.create({parameters:Ld}).userData.shape;return{path:n.path??Xi.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:i,extrusion:{...wc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new Fp(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new px,{userData:{...n,type:"PathGeometry"}})}},Fp=class extends px{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!ux(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),u=Math.min(Math.max(2,l-s+1),a+2),c=[],d=[];for(let L=0;L<u;L++){let V=this.inputs.path.isClosed?(L+s)%e.length:Math.min(L+s,e.length-1);c.push(e[V].clone()),d.push(r[V].clone())}let p=(L,V,z)=>{c[L]=c[L].clone().lerp(c[V],z),d[L]=iM(d[L],d[V],z)},f=0,h=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||i===0)&&(f=h,p(0,1,f));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,p(c.length-1,c.length-2,1-m)),o===0){let L=c.length-1;c[L].copy(c[0]),d[L].copy(d[0])}this._applyPathModifiers(d,f,m);let{bevel:g,bevelSides:b}=this.inputs.parameters.extrusion,S=g>0?this.inputs.parameters.extrusion.capType:"flat",w=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(w=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:v,infos:_,vertices:A}=this._computeShapePoints(w),x=0,T;S==="round"&&(T=new gn(this.inputs.shapeData,2*g,g,w,b,void 0,!0),x=T.getAttribute("position").count);let C=0,P=0;_.sort((L,V)=>L.start-V.start),_.forEach(L=>{L.verticesStart=C,L.verticesCount=L.continuous.reduce((V,z,F)=>V+(F===0||!z?2:1),0),P+=L.verticesCount,C=P});let O=P*u,M,I=0;if(this._isOpenEnded()&&S==="flat"){try{M=Vr({windingRule:Ie.ODD,elementType:tt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:v})}catch{M=Op}I=M.vertexCount}let N=O+2*I+x*2,B=O+2*I,D={positions:new Float32Array(N*3),normals:new Float32Array(N*3),uvs:new Float32Array(N*2)},G=[];if(_.forEach(L=>{this._extrudeRegion(L,A,d,c,D,G,this._isGeometryClosed()&&!this._isOpenEnded())}),M&&(this._closeEnd(M,O,G,D,d[0],c[0],!1),this._closeEnd(M,O+I,G,D,d[d.length-1],c[c.length-1],!0)),T){D.positions.set(T.getAttribute("position").array,B*3),D.normals.set(T.getAttribute("normal").array,B*3),D.uvs.set(T.getAttribute("uv").array,B*2);let L=G.length;G.push(...T.getIndex().array.map(F=>F+B)),B+=x,D.positions.set(T.getAttribute("position").array,B*3),D.normals.set(T.getAttribute("normal").array,B*3),D.uvs.set(T.getAttribute("uv").array,B*2);let V=G.length;G.push(...T.getIndex().array.map(F=>F+B)),this.setAttribute("position",new Sa(D.positions,3)),this.setAttribute("normal",new Sa(D.normals,3)),this.setAttribute("uv",new Sa(D.uvs,2)),this.setIndex(G);let z=oM;z.copy(d[d.length-1]).setPosition(c[c.length-1]),this.applyMatrix4OnRange(z,B,N),z.copy(d[0]).setPosition(c[0]).multiply(nM.makeScale(1,1,-1)),this.applyMatrix4OnRange(z,B-x,B),this.reverseIndicesOnRange(L,V)}else this.setAttribute("position",new Sa(D.positions,3)),this.setAttribute("normal",new Sa(D.normals,3)),this.setAttribute("uv",new Sa(D.uvs,2)),this.setIndex(G)}_extractPathPoints(){let r=Uc(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,i=this.inputs.path.isClosed,a=new Tt,s=new Tt,l=new Tt,u=new Tt,c=new Tt(0,1,0);for(let y=0;y<o;y++){let g=e[y],b;y===0?b=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):b=e[y-1];let S;y===o-1?S=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):S=e[y+1];let w=g.clone().sub(b).normalize(),v=S.clone().sub(g).normalize(),_=w.clone().add(v).normalize();l.copy(_),y===0&&(_.equals(c)||_.clone().negate().equals(c))&&c.set(0,0,1);let A=c.clone().cross(_).normalize(),x=_.clone().cross(A).normalize();c.copy(x),u.copy(A),y===0&&(a.copy(x),s.copy(_));let T=new $n().makeBasis(A,x,_);r.push(T)}let d=i?s:l,p=i?a:new Tt(0,1,0),f=d.clone().cross(u).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);d.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let g=new $n().makeRotationZ(h*y/r.length);r[y].multiply(g)}return r}_applyPathModifiers(e,r,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:u}=this.inputs.parameters.extrusion,c=new $n,d=new $n;return e.forEach((p,f)=>{let h=f===0?0:f===i-1?1:(f-r)/(i-(o===0?0:1)-(r+(1-o)));c.makeRotationZ(uu.lerp(a,a+s,h)*uu.DEG2RAD);let m=uu.lerp(l,u,h);d.makeScale(m,m,m),p.multiply(c).multiply(d)}),e}_computeShapePoints(e=12,r=Ie.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let b=y.length-1;b>=1;b-=2){let S=y[b-1],w=y[b-0];g.push(S,w)}return g}),s;try{s=Vr({windingRule:r,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=Hs}let l;try{l=Vr({windingRule:Ie.ODD,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Pp}if(!s)throw new Error("error generating geometry");let u=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let c=1/0,d=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,b=s.vertices[g+0],S=s.vertices[g+1];b<c&&(c=b),b>d&&(d=b),S<p&&(p=S),S>f&&(f=S)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=u,g=m*2,b=s.elements[g+0],S=s.elements[g+1],w=b+S,v={start:b,count:S,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(v);let _=b,A=w-1,x=b+1,T=o.roundedCurves.length;do{let C=_-b,P=s.vertices[A*2+0],O=s.vertices[A*2+1],M=s.vertices[_*2+0],I=s.vertices[_*2+1],N=s.vertices[x*2+0],B=s.vertices[x*2+1],D=M-P,G=I-O,L=Math.sqrt(D*D+G*G);D/=L,G/=L;let V=M-N,z=I-B,F=Math.sqrt(V*V+z*z);V/=F,z/=F,v.normals[C*2+0]=-z,v.normals[C*2+1]=V;let $=s.vertexIndices[_];if(Array.isArray($))v.continuous[C]=!1;else{let[q,H]=o.getCurveIndexFromVertexId($-1,!0);if(H>0&&H<1)v.continuous[C]=!0;else{let X=H===1?q+1:q-1;X=(X+T)%T;let j=H===1?0:1,Y=o.roundedCurves[q].getTangent(H),W=o.roundedCurves[X].getTangent(j);v.continuous[C]=Y.dot(W)>.95}}y&&(v.normals[C*2+0]*=-1,v.normals[C*2+1]*=-1),[A,_,x]=[_,x,x+1],x>=w&&(x-=S)}while(x!==b+1)}return{regions:[i,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,i,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,i,a,s,l){let u=new Tt,c=new Tt,d=new Tt,p=new Tt,f=new dx;o.forEach((m,y)=>{let g=i[y],b=e.verticesStart*o.length+e.verticesCount*y;for(let S=0;S<e.count;S++){let w=(e.start+S)*2;if(u.set(r[w+0],r[w+1],0),d.copy(u).applyMatrix4(m).add(g),e.continuous[S])p.set(e.normals[S*2+0],e.normals[S*2+1],0);else{let v=S===0?(e.start+e.count-1)*2:w-2;c.set(r[v+0],r[v+1],0),p.copy(u).sub(c),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(m).normalize(),f.set(S===0?1:S/e.count,y/(o.length-1)),this._insertVertex(a,b,d,p,f),b++,!e.continuous[S]||S===0){if(S===0)p.set(e.normals[S*2+0],e.normals[S*2+1],0),f.set(0,y/(o.length-1));else{let v=S===e.count-1?e.start*2:w+2;c.set(r[v+0],r[v+1],0),p.copy(c).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,b,d,p,f),b++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),b=0;for(let S=0;S<e.count;S++){(!e.continuous[S]||S===0)&&b++;let w=S===e.count-1?0:b+1,v=y+b,_=y+w,A=g+w,x=g+b;e.isHole?s.push(v,A,_,v,x,A):s.push(v,_,A,v,A,x),b++}}}_closeEnd(e,r,o,i,a,s,l){let u=e.vertexCount,c=new Tt(0,0,l?-1:1).applyMatrix4(a),d=new Tt,p=new dx;for(let h=0;h<u;h++){let m=2*h;d.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,r+h,d,c,p)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,g=f[m+(l?1:2)]+r,b=f[m+(l?2:1)]+r;o.push(y,g,b)}}applyMatrix4OnRange(e,r,o){let i=e.elements,a=new rM().getNormalMatrix(e).elements,s,l,u,c,d=this.attributes.position,p=this.attributes.normal;if(!d||!p)return;let f=d.array,h=p.array,m=d.itemSize;for(let y=r*m,g=o*m;y<g;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],u=f[y+2],c=1/(i[3]*s+i[7]*l+i[11]*u+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*u+i[12])*c,f[y+1]=(i[1]*s+i[5]*l+i[9]*u+i[13])*c,f[y+2]=(i[2]*s+i[6]*l+i[10]*u+i[14])*c,s=h[y+0],l=h[y+1],u=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*u,h[y+1]=a[1]*s+a[4]*l+a[7]*u,h[y+2]=a[2]*s+a[5]*l+a[8]*u}d.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let i=e;i<r;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as hx,BufferGeometry as jp}from"three";import{mergeBufferGeometries as sM}from"three/examples/jsm/utils/BufferGeometryUtils.js";function mx(){let n=new jp;return n.setAttribute("position",new hx(new Float32Array([]),3)),n.setIndex(new hx(new Uint16Array([]),1)),n}var lM=mx().attributes,cM=12,uM=1,wa=class extends jp{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,lM),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,r).then(()=>{this.update(e),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let r=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!r?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:u,textTransform:c}=e,d=Nc.getDisplayedValue(u),p=c===2?d.toUpperCase():c===3?d.toLowerCase():d,f=dM(e,r,p),{shapes:h,charWidths:m,charCoords:y}=r.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,b=(typeof i=="number"?i:1)*.5,S=h.map(_=>new Le().fromShape(_,!0));this.vectorShapes=S;let w=S.map(_=>Jt.create({shape:_,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Ie.NONZERO:Ie.ODD,subdivisions:this.isLowResolution&&a>0?uM:cM}})),v=w.length?sM(w):mx();v.translate(-g,b,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(v.attributes).forEach(([_,A])=>{this.setAttribute(_,A)}),this.setIndex(v.index),this.computeBoundingSphere()}clone(){let e=jt(new jp,wa.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function dM(n,t,e){let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
16
16
  `?(r[r.length-1]+=o,o="",i===`
17
- `&&r.push("")):t.getTextWidth(r[r.length-1]+o,n)>n.width&&(r[r.length-1].length&&r.push(""),t.getTextWidth(r[r.length-1]+o,n)>n.width&&(o.length===1?(r[r.length-1]+=o,o=""):(r[r.length-1]+=o.slice(0,-1),o=o[o.length-1],r.push(""))));return r[r.length-1]+=o,r}import{BufferGeometry as Hp,BufferAttribute as bx,Uint32BufferAttribute as qp,Float32BufferAttribute as Wp,Matrix4 as yM,Vector3 as Qs,Sphere as gM,Box3 as xM,BoxGeometry as bM}from"three";var gx,wa=new Promise(n=>{gx=n}),yx=!1;var du;function xx(){if(yx)return;if(du)return du;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.0.2/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(u=>u.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});gx(l),yx=!0}return du=n(),du}import{BufferGeometryLoader as pM}from"three";var fM=["font"];function Go(n,t,e,r){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let u of a){let c=i;for(let d of u)c=c[d];for(o in c){let d=c[o];Dd(d)&&!fM.includes(o)&&(c[o]=t.getVariable(d,[r.uuid,"geometry",...u,o]),Dd(c[o])&&(c[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let u=Le.createFromState(i.shape,i.width,i.height);s.shape=u}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(u=>u.materialIndex=Math.max(u.materialIndex??0,0)),s.geometry=new pM().parse(i);else if(i.type==="SubdivGeometry"){let u=new pt(i,e);return u.data=n,u}else{if(i.type==="TextGeometry")return new Sa(i,t);if(i.type==="UIGeometry")return ba.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=Up(s)}catch(u){console.error(u)}if(!l){let u=Le.createFromState($i.defaultData(),100,100);s.shape=u,l=Up(s)}return l}import{Matrix4 as hM}from"three";var mM=new hM;function Xs(n,t,e,r){let o=n.position.array,i=n.normal.array,a=mM.makeScale(t,e,r).invert().elements,s,l,u;for(var c=0,d=o.length;c<d;c+=3)o[c]*=t,o[c+1]*=e,o[c+2]*=r,s=i[c],l=i[c+1],u=i[c+2],i[c]=a[0]*s+a[4]*l+a[8]*u,i[c+1]=a[1]*s+a[5]*l+a[9]*u,i[c+2]=a[2]*s+a[6]*l+a[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var pu=new xM,_a=new Qs,me;wa.then(n=>{me=n});var vx=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Sx=new Uint32Array([0,1,2,3]),wx=new Uint8Array([4]),pt=class extends Hp{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,i=an.div(r,o);this.subdividedGeometry&&Xs(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Xs(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(_a.fromArray(i));let s=_a.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=pt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new bM(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(pt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new gM,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;pu.setFromBufferAttribute(r),pu.getCenter(o),e.boundingSphere.radius=o.distanceTo(pu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),pu.getSize(_a);let i={width:_a.x,height:_a.y,depth:_a.z};return this.userData.parameters=i,i}static build(e,r,o,i){let a,s,l,u=e?.phongAngle??35;o===!1&&(u=-1),r&&(me.free_bvh(r),me.free_subdivision_surface(r));try{a=pt.allocate(e,i)}catch(c){console.error(c,e),a=pt.allocate({positionWASM:vx,indexWASM:Sx,verticesPerFaceWASM:wx},i)}if(me.set_destination_refinement_level(a,0),s=pt.buildLevel(a,!0,u),e.subdivisions>0)try{me.set_destination_refinement_level(a,e.subdivisions),l=pt.buildLevel(a,!1,u)}catch{try{me.set_destination_refinement_level(a,e.subdivisions-1),l=pt.buildLevel(a,!1,u)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?r.geometry:Go(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,u,c;({positions:s,triIndices:c}=Qp(i.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:l,verticesPerFace:u}=Kp(s,c,i,d),{positions:s,indices:l,verticesPerFace:u}}static allocate(e,r){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=vx,i=Sx,a=wx);let u=o.length,c=i.length,d=a.length,p=o.length+s.length+l.length,f=i.length+a.length,h=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=me._malloc(h),b=new Float32Array(me.HEAPF32.buffer,g,p),S=new Uint32Array(me.HEAPU32.buffer,g+m,f);b.set(o,0),b.set(s,o.length),b.set(l,o.length+s.length),S.set(i,0),S.set(a,i.length);let w;e?.scaleBaked?.some(_=>_!==1)&&(w=new yM().makeScale(...e.scaleBaked)),r&&(w?w.premultiply(r):w=r);let v=w?me.alloc_subdivision_surface2(g,u,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):me.alloc_subdivision_surface(g,u,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return me._free(g),v}static buildLevel(e,r,o,i,a){let s=a?me.get_mesh_data2(e,r?me.Level.CONTROL:me.Level.REFINED,o,a.elements):me.get_mesh_data(e,r?me.Level.CONTROL:me.Level.REFINED,o),l=8,u=me.HEAPU32.subarray(s>>2,(s>>2)+l),c=u.subarray(4,4+4),d=0,p=me.HEAPU32[u[d]>>2],f=me.HEAPF32.subarray(p>>2,(p>>2)+c[d]);d++;let h=me.HEAPU32[u[d]>>2],m=me.HEAPF32.subarray(h>>2,(h>>2)+c[d]);d++;let y=me.HEAPU32[u[d]>>2],g=me.HEAPU32.subarray(y>>2,(y>>2)+c[d]);d++;let b=me.HEAPU32[u[d]>>2],S=me.HEAPU32.subarray(b>>2,(b>>2)+c[d]);if(d++,i===void 0){let w=new Hp;if(w.setIndex(new qp(S,1)),w.setAttribute("position",new Wp(f,3)),w.setAttribute("normal",new Wp(m,3)),r){w.setAttribute("faceMap",new qp(g,1));let v=new Float32Array(m.length/3*4).fill(0);w.setAttribute("color",new bx(v,4))}return me.free_mesh_data(s),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,me.free_mesh_data(s)}static freeSubdivPointer(e){me.free_bvh(e),me.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let i=me.get_wireframe_data_for_base_level(e),a=4,s=me.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),u=0,c=me.HEAPU32[s[u]>>2],d=me.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let p=me.HEAPU32[s[u]>>2],f=me.HEAPU32.subarray(p>>2,(p>>2)+l[u]);if(r===void 0){let h=new Hp;h.setAttribute("position",new Wp(d,3));let m=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new bx(m,3)),h.setIndex(new qp(f,1)),me.free_wireframe_data_for_base_level(i),h}r.getAttribute("position").copyArray(d),r.attributes.position.needsUpdate=!0,me.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,r,o){let i=r===0;i||me.set_destination_refinement_level(e,r);let a=o?me.get_topological_data2(e,i?me.Level.CONTROL:me.Level.REFINED,o.elements):me.get_topological_data(e,i?me.Level.CONTROL:me.Level.REFINED),s=6,l=me.HEAPU32.subarray(a>>2,(a>>2)+s),u=l.subarray(3,3+3),c=0,d=me.HEAPU32[l[c]>>2],p=new Float32Array(me.HEAPF32.subarray(d>>2,(d>>2)+u[c]));c++;let f=me.HEAPU32[l[c]>>2],h=new Uint32Array(me.HEAPU32.subarray(f>>2,(f>>2)+u[c]));c++;let m=me.HEAPU32[l[c]>>2],y=new Uint8Array(me.HEAPU32.subarray(m>>2,(m>>2)+u[c]));return me.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var _x=["getX","getY","getZ"];function Qp(n,t){let e={},r=t?t.count:n.count,o=0,i=[],a=[],s=1e4;for(let u=0;u<r;u++){let c=t?t.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[_x[p]](c)*s)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)a.push(n[_x[p]](c));e[d]=o,i.push(o),o++}}let l=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||l.push(i[u],i[u+1],i[u+2]);return{positions:a,triIndices:l}}var fu=new Qs,$p=new Qs,Yp=new Qs,Xp=new Qs;function Kp(n,t,e,r){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),u=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&u<=24&&u%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/u;l=l.filter((f,h)=>Math.floor(h/2)%p===0)}let c=0;for(let p=0;p<l.length;p+=2)c+=(l[p]-l[(p===0?l.length:p)-2])*(l[p+1]+l[(p===0?l.length:p)-1]);n.length=0;let d=0;if(c<0)for(let p=0;p<l.length;p+=2)n.push(l[p],l[p+1],0),o.push(d++);else for(let p=l.length-2;p>=0;p-=2)n.push(l[p],l[p+1],0),o.push(d++);return i.push(d),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[t[s]*3+2]===a||n[t[s]*3+2]===0)&&l++,(n[t[s+1]*3+2]===a||n[t[s+1]*3+2]===0)&&l++,(n[t[s+2]*3+2]===a||n[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){fu.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),$p.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Yp.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Xp.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),$p.sub(fu).normalize(),Yp.sub(fu).normalize(),Xp.sub(fu).normalize();let l=$p.cross(Yp).dot(Xp);Math.abs(l)>.005||r&&r.some((u,c)=>c%2===1?!1:s>=r[c]&&s<r[c+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],u=[],c=0;for(let d=0,p=0;d<n.length;d+=3,p++)n[d+2]===0&&(l.push(p),c++),n[d+2]===a&&u.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=u[0];u[0]=u[1],u[1]=d}l.reverse(),o.push(...l,...u),i.push(c,c)}return{indices:o,verticesPerFace:i}}var br={};YS(br,{calcBoolean:()=>AM,calcBooleanTopological:()=>_M,freeMeshSet:()=>TM,getMeshSet:()=>PM,hasOpenEdges:()=>OM,transformMeshSet:()=>CM});var vM,Ax=new Promise(n=>{vM=n});import{Float32BufferAttribute as Px,Sphere as SM}from"three";var Ae,Aa;Ax.then(n=>Ae=n);function wM(n,t,e){let r,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=Qp(n.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:u}=Kp(i,a,n);s=u.length,r=[];for(let c=0,d=0;c<s;c++){r.push(u[c]);for(let p=0;p<u[c];p++)r.push(l[d++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let u=0,c=0;c<r.length;)r[c++]=3,s++,r[c++]=a[u++],r[c++]=a[u++],r[c++]=a[u++]}return{positions:i,faceIndices:r,nFaces:s}}function Ox(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=Ae._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Ae.HEAPU32.buffer,i,t):new Float32Array(Ae.HEAPF32.buffer,i,t)).set(n,0),i}function Cx(n){switch(n){case 0:return Ae.OP.UNION;case 1:return Ae.OP.INTERSECTION;case 2:return Ae.OP.A_MINUS_B;case 3:return Ae.OP.B_MINUS_A;case 4:return Ae.OP.SYMMETRIC_DIFFERENCE;case 5:return Ae.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function _M(n,t){Aa===void 0&&(Aa=Ae.init_csg());let e=Ox(n),r=Ae.csg_calc_topological(Aa,e,n.length,Cx(t));Ae._free(e);let o=6,i=Ae.HEAPU32.subarray(r>>2,(r>>2)+o),a=i.subarray(3,3+3),s=0,l=Ae.HEAPU32[i[s]>>2],u=new Float32Array(Ae.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=Ae.HEAPU32[i[s]>>2],d=new Uint32Array(Ae.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let p=Ae.HEAPU32[i[s]>>2],f=new Uint8Array(Ae.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return Ae.free_mesh_data(r),{positions:u,indices:d,verticesPerFace:f}}function AM(n,t,e,r){Aa===void 0&&(Aa=Ae.init_csg());let o=Ox(n),i=Ae.csg_calc(Aa,o,n.length,r,Cx(t));Ae._free(o);let a=5,s=Ae.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),u=0,c=Ae.HEAPU32[s[u]>>2],d=Ae.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let p=Ae.HEAPU32[s[u]>>2],f=Ae.HEAPF32.subarray(p>>2,(p>>2)+l[u]);u++;let h=l[u];e.setAttribute("position",new Px(d,3)),e.setAttribute("normal",new Px(f,3));let m=Ae.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new SM),e.boundingSphere.radius=-1,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ae.free_mesh_data(i),h}function PM(n,t,e){if(Ae===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((b,S)=>b+S,0)+i);for(let b=0,S=0,w=0;b<g.verticesPerFace.length;b++){o[w++]=g.verticesPerFace[b];for(let v=0;v<g.verticesPerFace[b];v++)o[w++]=g.indices[S++]}}else({positions:r,faceIndices:o,nFaces:i}=wM(n,t,e));let a=r.length,s=o.length,l=r.length,u=o.length,c=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=l*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=Ae._malloc(c),h=new Float32Array(Ae.HEAPF32.buffer,f,l),m=new Uint32Array(Ae.HEAPU32.buffer,f+d,u);h.set(r,0),m.set(o,0);let y=Ae.get_csg_mesh(f,a,f+d,s,i);return Ae._free(f),y}function OM(n){return Ae.has_open_edges(n)}function CM(n,t){Ae.transform_csg_mesh(n,t.elements)}function TM(n){Ae.free_csg_mesh(n)}var MM={ConeGeometry:a0,CubeGeometry:s0,CylinderGeometry:i0,DodecahedronGeometry:l0,EllipseGeometry:ma,HelixGeometry:j0,IcosahedronGeometry:U0,LatheGeometry:H0,NonParametricGeometry:ex,PolygonGeometry:lu,PyramidGeometry:tx,RectangleGeometry:ba,SphereGeometry:ox,PlaneGeometry:nx,BackdropGeometry:ix,StarGeometry:cu,TextFrameGeometry:ax,TorusGeometry:sx,TorusKnotGeometry:lx,TriangleGeometry:cx,PathGeometry:fx,VectorGeometry:Jt},Up=n=>MM[n.type].create(n);function Pa(n){return n!==null&&"booleanOp"in n}var Oa=class extends sa(NM){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new IM}updateVisible(e){super.updateVisible(e),this.visible=!Pa(this.parent)&&this.visible,Pa(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(br.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Pa(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Oa&&(e.freeBooleanPointer(),Pa(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Pa(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Pa(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var hu=new DM;function Ks(n,t=0,e=n.count,r,o){let i=1/0,a=1/0,s=1/0,l=-1/0,u=-1/0,c=-1/0;for(let d=t;d<e;d++){let p=n.getX(d),f=n.getY(d),h=n.getZ(d);p<i&&(i=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>u&&(u=f),h>c&&(c=h)}hu.min.set(i,a,s),hu.max.set(l,u,c),hu.getCenter(r),hu.getSize(o).multiplyScalar(.5)}var LM=new EM,RM=new BM,bt=class extends Oa{constructor(t,e){super(LM,RM),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?Ks(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as XI,Matrix4 as QI,Sphere as hb,Vector3 as KI}from"three";import{BufferAttribute as WI,Float32BufferAttribute as fb,MathUtils as Of,Vector3 as Cf}from"three";import{ShaderMaterial as NI}from"three";import{CubeReflectionMapping as YM,CubeRefractionMapping as XM,CubeUVReflectionMapping as QM,LinearEncoding as Vx,sRGBEncoding as KM}from"three";var Zs=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as VM}from"three";var Mt=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=VM.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,a){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof Mt&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var Zp=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},vt=new Zp;import{Vector2 as Tx}from"three";import{MathUtils as zM}from"three";var ae=class extends Mt{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=zM.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,l,r);{u=super.generate(e,r,o,s.output,i);let c=this.generate(e,l,o);return e.addNodeCode(u+" = "+c+";"),e.format(u,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var ke=class extends ae{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}};var rt=class extends ke{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Tx?e:new Tx(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as Mx}from"three";var Rt=class extends ke{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Mx?e:new Mx(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};import{Color as GM}from"three";var St=class extends GM{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var er=class extends ke{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof St?e:new St(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var kM=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Ix=/[a-z_0-9]+/gi,Q=class extends ae{constructor(e,r,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,a){let s,l=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let c=[];for(;s=Ix.exec(this.src);)c.push(s);for(let d=0;d<c.length;d++){let p=c[d],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&vt.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=vt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||vt.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&u[p.index+l-1]!=="."&&(u=u.substring(0,p.index+l)+m+u.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&vt.contains(m)&&e.include(vt.get(m))}return r==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=kM.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Ix);if(s){let l=0;for(;l<s.length;){let u=s[l++],c;u==="in"||u==="out"||u==="inout"?c=s[l++]:(c=u,u="");let d=s[l++];this.inputs.push({name:d,type:c,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var FM=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Jp=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Jp.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,a){this.src=e||"";let s,l,u="",c=FM.exec(e);this.useDefine=a??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],s=c[2],u=c[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=u}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,a){return e.format(this.name,this.getType(e),r)}},Ee=Jp;Ee.PI="PI",Ee.PI2="PI2",Ee.RECIPROCAL_PI="RECIPROCAL_PI",Ee.RECIPROCAL_PI2="RECIPROCAL_PI2",Ee.LOG2="LOG2",Ee.EPSILON="EPSILON";var jM=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
18
- )*?)}`,"gim"),UM=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Ca=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,a){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=jM.exec(e);if(r){let o=r[2],i;for(;i=UM.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Ta=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),r)}};vt.addKeyword("uv",function(){return new Ta});vt.addKeyword("uv2",function(){return new Ta(1)});import{LinearEncoding as HM,sRGBEncoding as qM}from"three";var $n=class extends ae{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??$n.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case HM:return["Linear"];case qM:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),a=$n.Nodes[this.method],s=e.include(a);if(s===$n.LINEAR_TO_LINEAR)return e.format(o,i,r);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,r)}else return e.format(s+"( "+o+" )",i,r)}fromEncoding(e){let r=$n.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=$n.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},Ht=$n;Ht.Nodes={LinearToLinear:new Q(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
17
+ `&&r.push("")):t.getTextWidth(r[r.length-1]+o,n)>n.width&&(r[r.length-1].length&&r.push(""),t.getTextWidth(r[r.length-1]+o,n)>n.width&&(o.length===1?(r[r.length-1]+=o,o=""):(r[r.length-1]+=o.slice(0,-1),o=o[o.length-1],r.push(""))));return r[r.length-1]+=o,r}import{BufferGeometry as Hp,BufferAttribute as bx,Uint32BufferAttribute as qp,Float32BufferAttribute as Wp,Matrix4 as yM,Vector3 as Qs,Sphere as gM,Box3 as xM,BoxGeometry as bM}from"three";var gx,_a=new Promise(n=>{gx=n}),yx=!1;var du;function xx(){if(yx)return;if(du)return du;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.0.3/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(u=>u.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});gx(l),yx=!0}return du=n(),du}import{BufferGeometryLoader as pM}from"three";var fM=["font"];function Go(n,t,e,r){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let u of a){let c=i;for(let d of u)c=c[d];for(o in c){let d=c[o];Dd(d)&&!fM.includes(o)&&(c[o]=t.getVariable(d,[r.uuid,"geometry",...u,o]),Dd(c[o])&&(c[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let u=Le.createFromState(i.shape,i.width,i.height);s.shape=u}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(u=>u.materialIndex=Math.max(u.materialIndex??0,0)),s.geometry=new pM().parse(i);else if(i.type==="SubdivGeometry"){let u=new pt(i,e);return u.data=n,u}else{if(i.type==="TextGeometry")return new wa(i,t);if(i.type==="UIGeometry")return va.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=Up(s)}catch(u){console.error(u)}if(!l){let u=Le.createFromState(Yi.defaultData(),100,100);s.shape=u,l=Up(s)}return l}import{Matrix4 as hM}from"three";var mM=new hM;function Xs(n,t,e,r){let o=n.position.array,i=n.normal.array,a=mM.makeScale(t,e,r).invert().elements,s,l,u;for(var c=0,d=o.length;c<d;c+=3)o[c]*=t,o[c+1]*=e,o[c+2]*=r,s=i[c],l=i[c+1],u=i[c+2],i[c]=a[0]*s+a[4]*l+a[8]*u,i[c+1]=a[1]*s+a[5]*l+a[9]*u,i[c+2]=a[2]*s+a[6]*l+a[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var pu=new xM,Aa=new Qs,me;_a.then(n=>{me=n});var vx=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Sx=new Uint32Array([0,1,2,3]),wx=new Uint8Array([4]),pt=class extends Hp{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,i=an.div(r,o);this.subdividedGeometry&&Xs(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Xs(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Aa.fromArray(i));let s=Aa.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=pt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new bM(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(pt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new gM,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;pu.setFromBufferAttribute(r),pu.getCenter(o),e.boundingSphere.radius=o.distanceTo(pu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),pu.getSize(Aa);let i={width:Aa.x,height:Aa.y,depth:Aa.z};return this.userData.parameters=i,i}static build(e,r,o,i){let a,s,l,u=e?.phongAngle??35;o===!1&&(u=-1),r&&(me.free_bvh(r),me.free_subdivision_surface(r));try{a=pt.allocate(e,i)}catch(c){console.error(c,e),a=pt.allocate({positionWASM:vx,indexWASM:Sx,verticesPerFaceWASM:wx},i)}if(me.set_destination_refinement_level(a,0),s=pt.buildLevel(a,!0,u),e.subdivisions>0)try{me.set_destination_refinement_level(a,e.subdivisions),l=pt.buildLevel(a,!1,u)}catch{try{me.set_destination_refinement_level(a,e.subdivisions-1),l=pt.buildLevel(a,!1,u)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?r.geometry:Go(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,u,c;({positions:s,triIndices:c}=Qp(i.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:l,verticesPerFace:u}=Kp(s,c,i,d),{positions:s,indices:l,verticesPerFace:u}}static allocate(e,r){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=vx,i=Sx,a=wx);let u=o.length,c=i.length,d=a.length,p=o.length+s.length+l.length,f=i.length+a.length,h=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=me._malloc(h),b=new Float32Array(me.HEAPF32.buffer,g,p),S=new Uint32Array(me.HEAPU32.buffer,g+m,f);b.set(o,0),b.set(s,o.length),b.set(l,o.length+s.length),S.set(i,0),S.set(a,i.length);let w;e?.scaleBaked?.some(_=>_!==1)&&(w=new yM().makeScale(...e.scaleBaked)),r&&(w?w.premultiply(r):w=r);let v=w?me.alloc_subdivision_surface2(g,u,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):me.alloc_subdivision_surface(g,u,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return me._free(g),v}static buildLevel(e,r,o,i,a){let s=a?me.get_mesh_data2(e,r?me.Level.CONTROL:me.Level.REFINED,o,a.elements):me.get_mesh_data(e,r?me.Level.CONTROL:me.Level.REFINED,o),l=8,u=me.HEAPU32.subarray(s>>2,(s>>2)+l),c=u.subarray(4,4+4),d=0,p=me.HEAPU32[u[d]>>2],f=me.HEAPF32.subarray(p>>2,(p>>2)+c[d]);d++;let h=me.HEAPU32[u[d]>>2],m=me.HEAPF32.subarray(h>>2,(h>>2)+c[d]);d++;let y=me.HEAPU32[u[d]>>2],g=me.HEAPU32.subarray(y>>2,(y>>2)+c[d]);d++;let b=me.HEAPU32[u[d]>>2],S=me.HEAPU32.subarray(b>>2,(b>>2)+c[d]);if(d++,i===void 0){let w=new Hp;if(w.setIndex(new qp(S,1)),w.setAttribute("position",new Wp(f,3)),w.setAttribute("normal",new Wp(m,3)),r){w.setAttribute("faceMap",new qp(g,1));let v=new Float32Array(m.length/3*4).fill(0);w.setAttribute("color",new bx(v,4))}return me.free_mesh_data(s),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,me.free_mesh_data(s)}static freeSubdivPointer(e){me.free_bvh(e),me.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let i=me.get_wireframe_data_for_base_level(e),a=4,s=me.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),u=0,c=me.HEAPU32[s[u]>>2],d=me.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let p=me.HEAPU32[s[u]>>2],f=me.HEAPU32.subarray(p>>2,(p>>2)+l[u]);if(r===void 0){let h=new Hp;h.setAttribute("position",new Wp(d,3));let m=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new bx(m,3)),h.setIndex(new qp(f,1)),me.free_wireframe_data_for_base_level(i),h}r.getAttribute("position").copyArray(d),r.attributes.position.needsUpdate=!0,me.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,r,o){let i=r===0;i||me.set_destination_refinement_level(e,r);let a=o?me.get_topological_data2(e,i?me.Level.CONTROL:me.Level.REFINED,o.elements):me.get_topological_data(e,i?me.Level.CONTROL:me.Level.REFINED),s=6,l=me.HEAPU32.subarray(a>>2,(a>>2)+s),u=l.subarray(3,3+3),c=0,d=me.HEAPU32[l[c]>>2],p=new Float32Array(me.HEAPF32.subarray(d>>2,(d>>2)+u[c]));c++;let f=me.HEAPU32[l[c]>>2],h=new Uint32Array(me.HEAPU32.subarray(f>>2,(f>>2)+u[c]));c++;let m=me.HEAPU32[l[c]>>2],y=new Uint8Array(me.HEAPU32.subarray(m>>2,(m>>2)+u[c]));return me.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var _x=["getX","getY","getZ"];function Qp(n,t){let e={},r=t?t.count:n.count,o=0,i=[],a=[],s=1e4;for(let u=0;u<r;u++){let c=t?t.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[_x[p]](c)*s)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)a.push(n[_x[p]](c));e[d]=o,i.push(o),o++}}let l=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||l.push(i[u],i[u+1],i[u+2]);return{positions:a,triIndices:l}}var fu=new Qs,$p=new Qs,Yp=new Qs,Xp=new Qs;function Kp(n,t,e,r){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),u=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&u<=24&&u%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/u;l=l.filter((f,h)=>Math.floor(h/2)%p===0)}let c=0;for(let p=0;p<l.length;p+=2)c+=(l[p]-l[(p===0?l.length:p)-2])*(l[p+1]+l[(p===0?l.length:p)-1]);n.length=0;let d=0;if(c<0)for(let p=0;p<l.length;p+=2)n.push(l[p],l[p+1],0),o.push(d++);else for(let p=l.length-2;p>=0;p-=2)n.push(l[p],l[p+1],0),o.push(d++);return i.push(d),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[t[s]*3+2]===a||n[t[s]*3+2]===0)&&l++,(n[t[s+1]*3+2]===a||n[t[s+1]*3+2]===0)&&l++,(n[t[s+2]*3+2]===a||n[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){fu.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),$p.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Yp.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Xp.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),$p.sub(fu).normalize(),Yp.sub(fu).normalize(),Xp.sub(fu).normalize();let l=$p.cross(Yp).dot(Xp);Math.abs(l)>.005||r&&r.some((u,c)=>c%2===1?!1:s>=r[c]&&s<r[c+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],u=[],c=0;for(let d=0,p=0;d<n.length;d+=3,p++)n[d+2]===0&&(l.push(p),c++),n[d+2]===a&&u.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=u[0];u[0]=u[1],u[1]=d}l.reverse(),o.push(...l,...u),i.push(c,c)}return{indices:o,verticesPerFace:i}}var br={};YS(br,{calcBoolean:()=>AM,calcBooleanTopological:()=>_M,freeMeshSet:()=>TM,getMeshSet:()=>PM,hasOpenEdges:()=>OM,transformMeshSet:()=>CM});var vM,Ax=new Promise(n=>{vM=n});import{Float32BufferAttribute as Px,Sphere as SM}from"three";var Ae,Pa;Ax.then(n=>Ae=n);function wM(n,t,e){let r,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=Qp(n.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:u}=Kp(i,a,n);s=u.length,r=[];for(let c=0,d=0;c<s;c++){r.push(u[c]);for(let p=0;p<u[c];p++)r.push(l[d++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let u=0,c=0;c<r.length;)r[c++]=3,s++,r[c++]=a[u++],r[c++]=a[u++],r[c++]=a[u++]}return{positions:i,faceIndices:r,nFaces:s}}function Ox(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=Ae._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Ae.HEAPU32.buffer,i,t):new Float32Array(Ae.HEAPF32.buffer,i,t)).set(n,0),i}function Cx(n){switch(n){case 0:return Ae.OP.UNION;case 1:return Ae.OP.INTERSECTION;case 2:return Ae.OP.A_MINUS_B;case 3:return Ae.OP.B_MINUS_A;case 4:return Ae.OP.SYMMETRIC_DIFFERENCE;case 5:return Ae.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function _M(n,t){Pa===void 0&&(Pa=Ae.init_csg());let e=Ox(n),r=Ae.csg_calc_topological(Pa,e,n.length,Cx(t));Ae._free(e);let o=6,i=Ae.HEAPU32.subarray(r>>2,(r>>2)+o),a=i.subarray(3,3+3),s=0,l=Ae.HEAPU32[i[s]>>2],u=new Float32Array(Ae.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=Ae.HEAPU32[i[s]>>2],d=new Uint32Array(Ae.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let p=Ae.HEAPU32[i[s]>>2],f=new Uint8Array(Ae.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return Ae.free_mesh_data(r),{positions:u,indices:d,verticesPerFace:f}}function AM(n,t,e,r){Pa===void 0&&(Pa=Ae.init_csg());let o=Ox(n),i=Ae.csg_calc(Pa,o,n.length,r,Cx(t));Ae._free(o);let a=5,s=Ae.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),u=0,c=Ae.HEAPU32[s[u]>>2],d=Ae.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let p=Ae.HEAPU32[s[u]>>2],f=Ae.HEAPF32.subarray(p>>2,(p>>2)+l[u]);u++;let h=l[u];e.setAttribute("position",new Px(d,3)),e.setAttribute("normal",new Px(f,3));let m=Ae.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new SM),e.boundingSphere.radius=-1,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ae.free_mesh_data(i),h}function PM(n,t,e){if(Ae===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((b,S)=>b+S,0)+i);for(let b=0,S=0,w=0;b<g.verticesPerFace.length;b++){o[w++]=g.verticesPerFace[b];for(let v=0;v<g.verticesPerFace[b];v++)o[w++]=g.indices[S++]}}else({positions:r,faceIndices:o,nFaces:i}=wM(n,t,e));let a=r.length,s=o.length,l=r.length,u=o.length,c=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=l*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=Ae._malloc(c),h=new Float32Array(Ae.HEAPF32.buffer,f,l),m=new Uint32Array(Ae.HEAPU32.buffer,f+d,u);h.set(r,0),m.set(o,0);let y=Ae.get_csg_mesh(f,a,f+d,s,i);return Ae._free(f),y}function OM(n){return Ae.has_open_edges(n)}function CM(n,t){Ae.transform_csg_mesh(n,t.elements)}function TM(n){Ae.free_csg_mesh(n)}var MM={ConeGeometry:a0,CubeGeometry:s0,CylinderGeometry:i0,DodecahedronGeometry:l0,EllipseGeometry:ya,HelixGeometry:j0,IcosahedronGeometry:U0,LatheGeometry:H0,NonParametricGeometry:ex,PolygonGeometry:lu,PyramidGeometry:tx,RectangleGeometry:va,SphereGeometry:ox,PlaneGeometry:nx,BackdropGeometry:ix,StarGeometry:cu,TextFrameGeometry:ax,TorusGeometry:sx,TorusKnotGeometry:lx,TriangleGeometry:cx,PathGeometry:fx,VectorGeometry:Jt},Up=n=>MM[n.type].create(n);function Oa(n){return n!==null&&"booleanOp"in n}var Ca=class extends la(NM){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new IM}updateVisible(e){super.updateVisible(e),this.visible=!Oa(this.parent)&&this.visible,Oa(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(br.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Oa(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ca&&(e.freeBooleanPointer(),Oa(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Oa(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Oa(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var hu=new DM;function Ks(n,t=0,e=n.count,r,o){let i=1/0,a=1/0,s=1/0,l=-1/0,u=-1/0,c=-1/0;for(let d=t;d<e;d++){let p=n.getX(d),f=n.getY(d),h=n.getZ(d);p<i&&(i=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>u&&(u=f),h>c&&(c=h)}hu.min.set(i,a,s),hu.max.set(l,u,c),hu.getCenter(r),hu.getSize(o).multiplyScalar(.5)}var LM=new EM,RM=new BM,bt=class extends Ca{constructor(t,e){super(LM,RM),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?Ks(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as XI,Matrix4 as QI,Sphere as hb,Vector3 as KI}from"three";import{BufferAttribute as WI,Float32BufferAttribute as fb,MathUtils as Of,Vector3 as Cf}from"three";import{ShaderMaterial as NI}from"three";import{CubeReflectionMapping as YM,CubeRefractionMapping as XM,CubeUVReflectionMapping as QM,LinearEncoding as Vx,sRGBEncoding as KM}from"three";var Zs=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as VM}from"three";var Mt=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=VM.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,a){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof Mt&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var Zp=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},vt=new Zp;import{Vector2 as Tx}from"three";import{MathUtils as zM}from"three";var ae=class extends Mt{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=zM.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,l,r);{u=super.generate(e,r,o,s.output,i);let c=this.generate(e,l,o);return e.addNodeCode(u+" = "+c+";"),e.format(u,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var ke=class extends ae{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}};var rt=class extends ke{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Tx?e:new Tx(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as Mx}from"three";var Rt=class extends ke{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Mx?e:new Mx(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};import{Color as GM}from"three";var St=class extends GM{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var er=class extends ke{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof St?e:new St(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var kM=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Ix=/[a-z_0-9]+/gi,Q=class extends ae{constructor(e,r,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,a){let s,l=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let c=[];for(;s=Ix.exec(this.src);)c.push(s);for(let d=0;d<c.length;d++){let p=c[d],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&vt.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=vt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||vt.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&u[p.index+l-1]!=="."&&(u=u.substring(0,p.index+l)+m+u.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&vt.contains(m)&&e.include(vt.get(m))}return r==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=kM.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Ix);if(s){let l=0;for(;l<s.length;){let u=s[l++],c;u==="in"||u==="out"||u==="inout"?c=s[l++]:(c=u,u="");let d=s[l++];this.inputs.push({name:d,type:c,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var FM=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Jp=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Jp.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,a){this.src=e||"";let s,l,u="",c=FM.exec(e);this.useDefine=a??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],s=c[2],u=c[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=u}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,a){return e.format(this.name,this.getType(e),r)}},Be=Jp;Be.PI="PI",Be.PI2="PI2",Be.RECIPROCAL_PI="RECIPROCAL_PI",Be.RECIPROCAL_PI2="RECIPROCAL_PI2",Be.LOG2="LOG2",Be.EPSILON="EPSILON";var jM=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
18
+ )*?)}`,"gim"),UM=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Ta=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,a){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=jM.exec(e);if(r){let o=r[2],i;for(;i=UM.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Ma=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),r)}};vt.addKeyword("uv",function(){return new Ma});vt.addKeyword("uv2",function(){return new Ma(1)});import{LinearEncoding as HM,sRGBEncoding as qM}from"three";var Yn=class extends ae{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??Yn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case HM:return["Linear"];case qM:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),a=Yn.Nodes[this.method],s=e.include(a);if(s===Yn.LINEAR_TO_LINEAR)return e.format(o,i,r);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,r)}else return e.format(s+"( "+o+" )",i,r)}fromEncoding(e){let r=Yn.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=Yn.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},Ht=Yn;Ht.Nodes={LinearToLinear:new Q(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
19
19
  `)),sRGBToLinear:new Q(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
20
20
  `)),LinearTosRGB:new Q(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
21
- `))},Ht.LINEAR_TO_LINEAR="LinearToLinear",Ht.SRGB_TO_LINEAR="sRGBToLinear",Ht.LINEAR_TO_SRGB="LinearTosRGB";var Re=class extends Q{constructor(e="",r,o,i,a){super(e,a,i,o,r);this.nodeType="Expression"}};import{Texture as WM}from"three";var qt=class extends ke{constructor(e=new WM,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new Ta,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new Ht(new Re("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,c),e.removeContext(),e.format(l,c,r)}};var J=class extends ke{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var Js=class extends ae{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,r)+"( ",u=[];if(s.inputs){for(let c=0;c<s.inputs.length;c++){let d=s.inputs[c],p=this.inputs[c]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}l+=u.join(", ")+" )"}return e.format(l,i,r)}};var ef=class extends ae{constructor(e,r,o=ef.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,r)}},It=ef;It.ADD="+",It.SUB="-",It.MUL="*",It.DIV="/";var Fe=class extends ae{constructor(e,r=Fe.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:i=r,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case 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 r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Fe.LENGTH:case Fe.DISTANCE:case Fe.DOT:return"f";case Fe.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,c=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Fe.NEGATE:return e.format("( -"+this.a.build(e,c)+" )",c,r);case Fe.INVERT:return e.format("( 1.0 - "+this.a.build(e,c)+" )",c,r);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 p=[];p.push(o),i&&p.push(i),a&&p.push(a);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,r)}},xe=Fe;xe.RAD="radians",xe.DEG="degrees",xe.EXP="exp",xe.EXP2="exp2",xe.LOG="log",xe.LOG2="log2",xe.SQRT="sqrt",xe.INV_SQRT="inversesqrt",xe.FLOOR="floor",xe.CEIL="ceil",xe.NORMALIZE="normalize",xe.FRACT="fract",xe.SATURATE="saturate",xe.SIN="sin",xe.COS="cos",xe.TAN="tan",xe.ASIN="asin",xe.ACOS="acos",xe.ARCTAN="atan",xe.ABS="abs",xe.SIGN="sign",xe.LENGTH="length",xe.NEGATE="negate",xe.INVERT="invert",xe.MIN="min",xe.MAX="max",xe.MOD="mod",xe.STEP="step",xe.REFLECT="reflect",xe.DISTANCE="distance",xe.DOT="dot",xe.CROSS="cross",xe.POW="pow",xe.MIX="mix",xe.CLAMP="clamp",xe.REFRACT="refract",xe.SMOOTHSTEP="smoothstep",xe.FACEFORWARD="faceforward";var Ma=class extends ae{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){let a=new Js(Ma.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new Ht(new Re("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Ht(new Re("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Ht(new Re("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Ht(new Re("","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 Re(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Re(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Re(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Re(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Re("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new Js(Ma.Nodes.roughnessToMip,[i]),s=new xe(a,Ma.Nodes.m0,Ma.Nodes.cubeUV_maxMipLevel,xe.CLAMP),l=new xe(s,xe.FLOOR),u=new xe(s,xe.FRACT),c=this.bilinearCubeUV(e,this.value,o,l),d=this.bilinearCubeUV(e,this.value,o,new It(l,new J(1).setReadonly(!0),It.ADD)),p=new xe(c,d,u,xe.MIX);return e.format(p.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},Ia=Ma;Ia.Nodes=function(){let e=new Ca(`struct TextureCubeUVData {
21
+ `))},Ht.LINEAR_TO_LINEAR="LinearToLinear",Ht.SRGB_TO_LINEAR="sRGBToLinear",Ht.LINEAR_TO_SRGB="LinearTosRGB";var Re=class extends Q{constructor(e="",r,o,i,a){super(e,a,i,o,r);this.nodeType="Expression"}};import{Texture as WM}from"three";var qt=class extends ke{constructor(e=new WM,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new Ma,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new Ht(new Re("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,c),e.removeContext(),e.format(l,c,r)}};var J=class extends ke{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var Js=class extends ae{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,r)+"( ",u=[];if(s.inputs){for(let c=0;c<s.inputs.length;c++){let d=s.inputs[c],p=this.inputs[c]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}l+=u.join(", ")+" )"}return e.format(l,i,r)}};var ef=class extends ae{constructor(e,r,o=ef.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,r)}},It=ef;It.ADD="+",It.SUB="-",It.MUL="*",It.DIV="/";var Fe=class extends ae{constructor(e,r=Fe.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:i=r,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case 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 r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Fe.LENGTH:case Fe.DISTANCE:case Fe.DOT:return"f";case Fe.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,c=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Fe.NEGATE:return e.format("( -"+this.a.build(e,c)+" )",c,r);case Fe.INVERT:return e.format("( 1.0 - "+this.a.build(e,c)+" )",c,r);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 p=[];p.push(o),i&&p.push(i),a&&p.push(a);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,r)}},xe=Fe;xe.RAD="radians",xe.DEG="degrees",xe.EXP="exp",xe.EXP2="exp2",xe.LOG="log",xe.LOG2="log2",xe.SQRT="sqrt",xe.INV_SQRT="inversesqrt",xe.FLOOR="floor",xe.CEIL="ceil",xe.NORMALIZE="normalize",xe.FRACT="fract",xe.SATURATE="saturate",xe.SIN="sin",xe.COS="cos",xe.TAN="tan",xe.ASIN="asin",xe.ACOS="acos",xe.ARCTAN="atan",xe.ABS="abs",xe.SIGN="sign",xe.LENGTH="length",xe.NEGATE="negate",xe.INVERT="invert",xe.MIN="min",xe.MAX="max",xe.MOD="mod",xe.STEP="step",xe.REFLECT="reflect",xe.DISTANCE="distance",xe.DOT="dot",xe.CROSS="cross",xe.POW="pow",xe.MIX="mix",xe.CLAMP="clamp",xe.REFRACT="refract",xe.SMOOTHSTEP="smoothstep",xe.FACEFORWARD="faceforward";var Ia=class extends ae{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){let a=new Js(Ia.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new Ht(new Re("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Ht(new Re("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Ht(new Re("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Ht(new Re("","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 Re(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Re(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Re(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Re(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Re("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new Js(Ia.Nodes.roughnessToMip,[i]),s=new xe(a,Ia.Nodes.m0,Ia.Nodes.cubeUV_maxMipLevel,xe.CLAMP),l=new xe(s,xe.FLOOR),u=new xe(s,xe.FRACT),c=this.bilinearCubeUV(e,this.value,o,l),d=this.bilinearCubeUV(e,this.value,o,new It(l,new J(1).setReadonly(!0),It.ADD)),p=new xe(c,d,u,xe.MIX);return e.format(p.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},Na=Ia;Na.Nodes=function(){let e=new Ta(`struct TextureCubeUVData {
22
22
  vec4 tl;
23
23
  vec4 tr;
24
24
  vec4 br;
25
25
  vec4 bl;
26
26
  vec2 f;
27
- }`),r=new Ee("float cubeUV_maxMipLevel 8.0",!0),o=new Ee("float cubeUV_minMipLevel 4.0",!0),i=new Ee("float cubeUV_maxTileSize 256.0",!0),a=new Ee("float cubeUV_minTileSize 16.0",!0),s=new Q(`float getFace(vec3 direction) {
27
+ }`),r=new Be("float cubeUV_maxMipLevel 8.0",!0),o=new Be("float cubeUV_minMipLevel 4.0",!0),i=new Be("float cubeUV_maxTileSize 256.0",!0),a=new Be("float cubeUV_minTileSize 16.0",!0),s=new Q(`float getFace(vec3 direction) {
28
28
  vec3 absDirection = abs(direction);
29
29
  float face = -1.0;
30
30
  if (absDirection.x > absDirection.z) {
@@ -83,7 +83,7 @@ var jS=Object.create;var Pl=Object.defineProperty;var US=Object.getOwnPropertyDe
83
83
  uv.x -= texelSize;
84
84
  vec4 bl = texture2D(envMap, uv);
85
85
  return TextureCubeUVData( tl, tr, br, bl, f );
86
- }`,[e,s,l,r,o,i,a]);u.useKeywords=!1;let c=new Ee("float r0 1.0",!0),d=new Ee("float v0 0.339",!0),p=new Ee("float m0 -2.0",!0),f=new Ee("float r1 0.8",!0),h=new Ee("float v1 0.276",!0),m=new Ee("float m1 -1.0",!0),y=new Ee("float r4 0.4",!0),g=new Ee("float v4 0.046",!0),b=new Ee("float m4 2.0",!0),S=new Ee("float r5 0.305",!0),w=new Ee("float v5 0.016",!0),v=new Ee("float m5 3.0",!0),_=new Ee("float r6 0.21",!0),A=new Ee("float v6 0.0038",!0),x=new Ee("float m6 4.0",!0),T=[c,d,p,f,h,m,y,g,b,S,w,v,_,A,x],C=new Q(`float roughnessToMip(float roughness) {
86
+ }`,[e,s,l,r,o,i,a]);u.useKeywords=!1;let c=new Be("float r0 1.0",!0),d=new Be("float v0 0.339",!0),p=new Be("float m0 -2.0",!0),f=new Be("float r1 0.8",!0),h=new Be("float v1 0.276",!0),m=new Be("float m1 -1.0",!0),y=new Be("float r4 0.4",!0),g=new Be("float v4 0.046",!0),b=new Be("float m4 2.0",!0),S=new Be("float r5 0.305",!0),w=new Be("float v5 0.016",!0),v=new Be("float m5 3.0",!0),_=new Be("float r6 0.21",!0),A=new Be("float v6 0.0038",!0),x=new Be("float m6 4.0",!0),T=[c,d,p,f,h,m,y,g,b,S,w,v,_,A,x],C=new Q(`float roughnessToMip(float roughness) {
87
87
  float mip = 0.0;
88
88
  if (roughness >= r1) {
89
89
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -97,7 +97,7 @@ var jS=Object.create;var Pl=Object.defineProperty;var US=Object.getOwnPropertyDe
97
97
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
98
98
  }
99
99
  return mip;
100
- }`,T);return{bilinearCubeUV:u,roughnessToMip:C,m0:p,cubeUV_maxMipLevel:r}}();var Yn=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Yn.VIEW}getShared(){return this.scope===Yn.WORLD}build(e,r,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,a){let s;switch(this.scope){case Yn.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case Yn.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case Yn.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),r)}},Nt=Yn;Nt.LOCAL="local",Nt.WORLD="world",Nt.VIEW="view",Nt.NORMAL="normal";vt.addKeyword("viewNormal",function(){return new Nt(Nt.VIEW)});vt.addKeyword("localNormal",function(){return new Nt(Nt.NORMAL)});vt.addKeyword("worldNormal",function(){return new Nt(Nt.WORLD)});var so=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??so.LOCAL}getType(){switch(this.scope){case so.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case so.LOCAL:case so.WORLD:return!1}return!0}generate(e,r,o,i,a){let s;switch(this.scope){case so.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case so.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case so.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case so.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),r)}},tr=so;tr.LOCAL="local",tr.WORLD="world",tr.VIEW="view",tr.PROJECTION="projection";vt.addKeyword("position",function(){return new tr});vt.addKeyword("worldPosition",function(){return new tr(tr.WORLD)});vt.addKeyword("viewPosition",function(){return new tr(tr.VIEW)});var zr=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??zr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case zr.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case zr.VECTOR:{let a=new Nt(Nt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),u=new tr(tr.VIEW).build(e,"v3"),c=s?s.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${l} )`;c&&(d=`normalize( mix( ${d}, ${l}, ${c} * ${c} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case zr.CUBE:{let a=new zr(zr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case zr.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new zr(zr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${s};`),i="reflectSphereVec"):i=s;break}}return e.format(i,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}},lo=zr;lo.CUBE="cube",lo.SPHERE="sphere",lo.VECTOR="vector";var mu=class extends ae{constructor(e=new qt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Ia(this.value,r??new lo(lo.VECTOR),o),this.irradianceNode=new Ia(this.value,new Nt(Nt.WORLD),new J(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}};import{CubeTexture as $M}from"three";var yu=class extends ke{constructor(e=new $M,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new lo,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv?.build(e,"v3"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s;a?s="texCubeBias( "+o+", "+i+", "+a+" )":s="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new Ht(new Re("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,u),e.removeContext(),e.format(s,u,r)}};var Nx=`
100
+ }`,T);return{bilinearCubeUV:u,roughnessToMip:C,m0:p,cubeUV_maxMipLevel:r}}();var Xn=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Xn.VIEW}getShared(){return this.scope===Xn.WORLD}build(e,r,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,a){let s;switch(this.scope){case Xn.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case Xn.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case Xn.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),r)}},Nt=Xn;Nt.LOCAL="local",Nt.WORLD="world",Nt.VIEW="view",Nt.NORMAL="normal";vt.addKeyword("viewNormal",function(){return new Nt(Nt.VIEW)});vt.addKeyword("localNormal",function(){return new Nt(Nt.NORMAL)});vt.addKeyword("worldNormal",function(){return new Nt(Nt.WORLD)});var so=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??so.LOCAL}getType(){switch(this.scope){case so.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case so.LOCAL:case so.WORLD:return!1}return!0}generate(e,r,o,i,a){let s;switch(this.scope){case so.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case so.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case so.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case so.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),r)}},tr=so;tr.LOCAL="local",tr.WORLD="world",tr.VIEW="view",tr.PROJECTION="projection";vt.addKeyword("position",function(){return new tr});vt.addKeyword("worldPosition",function(){return new tr(tr.WORLD)});vt.addKeyword("viewPosition",function(){return new tr(tr.VIEW)});var zr=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??zr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case zr.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case zr.VECTOR:{let a=new Nt(Nt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),u=new tr(tr.VIEW).build(e,"v3"),c=s?s.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${l} )`;c&&(d=`normalize( mix( ${d}, ${l}, ${c} * ${c} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case zr.CUBE:{let a=new zr(zr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case zr.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new zr(zr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${s};`),i="reflectSphereVec"):i=s;break}}return e.format(i,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}},lo=zr;lo.CUBE="cube",lo.SPHERE="sphere",lo.VECTOR="vector";var mu=class extends ae{constructor(e=new qt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Na(this.value,r??new lo(lo.VECTOR),o),this.irradianceNode=new Na(this.value,new Nt(Nt.WORLD),new J(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}};import{CubeTexture as $M}from"three";var yu=class extends ke{constructor(e=new $M,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new lo,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv?.build(e,"v3"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s;a?s="texCubeBias( "+o+", "+i+", "+a+" )":s="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new Ht(new Re("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,u),e.removeContext(),e.format(s,u,r)}};var Nx=`
101
101
  uniform int frameIndex;
102
102
  uniform vec2 resolution;
103
103
  uniform mat4 previousModelViewMatrix;
@@ -206,7 +206,7 @@ layout(location = 1) out vec4 gVelocity;
206
206
  if (gl_FragColor.a <= 0.0) discard;
207
207
 
208
208
  gVelocity = vec4(0.0, 0.0, 0.0, 1.0);
209
- `;var zx=["x","y","z","w"],ZM=["float","vec2","vec3","vec4"],JM={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},eI={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[]"},Na=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let a="";i=i.sort(t);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
209
+ `;var zx=["x","y","z","w"],ZM=["float","vec2","vec3","vec4"],JM={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},eI={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[]"},Da=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let a="";i=i.sort(t);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
210
210
  `);return a}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
211
211
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
212
212
  #define SPE_BLENDING_NORMAL 0
@@ -251,13 +251,13 @@ layout(location = 1) out vec4 gVelocity;
251
251
  `}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",a=""){let s=this.getVars(o),l=s[t];if(!l){let u=s.length;l={name:r||"node"+i+u+(a?"_"+a:""),type:e},s.push(l),s[t]=l}return l}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
252
252
  `)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,i=t.length;o<i;++o){let a=t[o],s=a.type,l=a.name,u=a.size,c=this.getFormatByType(s);if(c===void 0)throw new Error("Node pars "+c+" not found.");c.includes("[]")?r+=e+" "+c.substring(0,c.length-2)+" "+l+`[${u}];
253
253
  `:r+=e+" "+c+" "+l+`;
254
- `}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof Mt?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,u=new Zs({type:e,size:r.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(u),s[t].push(u),s[t][u.name]=u,this.uniforms[u.name]=u,u}else{let s=this.inputs.uniforms,l=s.list.length,u=new Zs({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(u),s[t].push(u),s[t][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?vt.get(t):t,this.context.include===!1)return t.name;t instanceof Q?o=this.includes.functions:t instanceof Ee?o=this.includes.consts:t instanceof Ca&&(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 Q&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let s=0;do this.include(t.includes[s++],e);while(s<t.includes.length)}return r&&(a.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return ZM[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case YM:case XM:return new yu(r);case QM:return new mu(new qt(r));default:return new qt(r)}else{if(r.isVector2)return new rt(r);if(r.isVector3)return new Rt(r);if(r.isVector4)return new er(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return JM[t]||t}getFormatByType(t){return eI[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return zx[t]}getIndexByElement(t){return zx.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=Vx,e===Vx&&this.context.gamma&&(e=KM),e}};import{Vector2 as jr,Vector3 as po,Vector4 as Ya}from"three";var ze=class extends ke{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof St?e:new St(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let c=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${c};`)}return u?this.generateReadonly(e,r,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}generateReadonly(e,r,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var Pe=class extends ke{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,a,s){return e.format(this.value.toString(),i,r)}};import{UniformsLib as iI,UniformsUtils as aI}from"three";var st=class extends ke{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}};var Gr=class extends ke{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}};import{Vector3 as tI}from"three";var bn=class extends ke{};var gu=class extends bn{constructor(e){super("v3");this.image=e;this._value=new tI}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Xn=class extends bn{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};import{Matrix3 as rI}from"three";var Da=class extends ke{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new rI}generateReadonly(e,r,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as oI}from"three";var Vt=class extends ke{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new oI}generateReadonly(e,r,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix3 as nI}from"three";function Gx(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var xu=class extends Da{constructor(e,r){super(new nI);this.repeat=e;this.offset=r;Gx(this.value,e,r)}updateMatrix(){Gx(this.value,this.repeat,this.offset)}};import{Vector4 as kx}from"three";var kr=class extends ke{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof kx?new Array(e).fill(r):new Array(e).fill(new kx(0))}};var Ea=class extends ae{constructor(e,r,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=i}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var tf=class extends ae{constructor(e,r){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(tf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Qn=tf;Qn.Nodes=function(){return{customColor:new Q(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
254
+ `}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof Mt?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,u=new Zs({type:e,size:r.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(u),s[t].push(u),s[t][u.name]=u,this.uniforms[u.name]=u,u}else{let s=this.inputs.uniforms,l=s.list.length,u=new Zs({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(u),s[t].push(u),s[t][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?vt.get(t):t,this.context.include===!1)return t.name;t instanceof Q?o=this.includes.functions:t instanceof Be?o=this.includes.consts:t instanceof Ta&&(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 Q&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let s=0;do this.include(t.includes[s++],e);while(s<t.includes.length)}return r&&(a.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return ZM[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case YM:case XM:return new yu(r);case QM:return new mu(new qt(r));default:return new qt(r)}else{if(r.isVector2)return new rt(r);if(r.isVector3)return new Rt(r);if(r.isVector4)return new er(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return JM[t]||t}getFormatByType(t){return eI[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return zx[t]}getIndexByElement(t){return zx.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=Vx,e===Vx&&this.context.gamma&&(e=KM),e}};import{Vector2 as jr,Vector3 as po,Vector4 as Xa}from"three";var ze=class extends ke{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof St?e:new St(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let c=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${c};`)}return u?this.generateReadonly(e,r,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}generateReadonly(e,r,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var Pe=class extends ke{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,a,s){return e.format(this.value.toString(),i,r)}};import{UniformsLib as iI,UniformsUtils as aI}from"three";var st=class extends ke{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}};var Gr=class extends ke{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}};import{Vector3 as tI}from"three";var bn=class extends ke{};var gu=class extends bn{constructor(e){super("v3");this.image=e;this._value=new tI}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Qn=class extends bn{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};import{Matrix3 as rI}from"three";var Ea=class extends ke{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new rI}generateReadonly(e,r,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as oI}from"three";var Vt=class extends ke{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new oI}generateReadonly(e,r,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix3 as nI}from"three";function Gx(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var xu=class extends Ea{constructor(e,r){super(new nI);this.repeat=e;this.offset=r;Gx(this.value,e,r)}updateMatrix(){Gx(this.value,this.repeat,this.offset)}};import{Vector4 as kx}from"three";var kr=class extends ke{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof kx?new Array(e).fill(r):new Array(e).fill(new kx(0))}};var Ba=class extends ae{constructor(e,r,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=i}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var tf=class extends ae{constructor(e,r){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(tf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Kn=tf;Kn.Nodes=function(){return{customColor:new Q(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
255
255
  float lalpha = alpha * mask;
256
256
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
257
257
  accumAlpha += (1.0 - accumAlpha) * lalpha;
258
258
 
259
259
  return color;
260
- }`)}}();var rf=class extends ae{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(rf.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ba=rf;Ba.Nodes=function(){return{customNormal:new Q(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
260
+ }`)}}();var rf=class extends ae{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(rf.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},La=rf;La.Nodes=function(){return{customNormal:new Q(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
261
261
  vec3 normal = packNormalToRGB( norm ).rgb;
262
262
  normal *= step( vec3(0.5), cnormal );
263
263
 
@@ -266,7 +266,7 @@ layout(location = 1) out vec4 gVelocity;
266
266
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
267
267
 
268
268
  return normal;
269
- }`)}}();var La=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=a,this.side=s,this.size=l,this.blending=u,this.mat=c,this.isMask=f,this.alpha=d,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(La.Nodes.cylindrical);break;case 2:i=e.include(La.Nodes.spherical);break;case 1:let s=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=["zy","xz","xy"][this.axis.value],u=new Q(`
269
+ }`)}}();var Ra=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=a,this.side=s,this.size=l,this.blending=u,this.mat=c,this.isMask=f,this.alpha=d,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(Ra.Nodes.cylindrical);break;case 2:i=e.include(Ra.Nodes.spherical);break;case 1:let s=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=["zy","xz","xy"][this.axis.value],u=new Q(`
270
270
  vec3 ${o}_planarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
271
271
  vec2 projected = (1. + (position.${l})) / 2.;
272
272
  vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
@@ -290,7 +290,7 @@ layout(location = 1) out vec4 gVelocity;
290
290
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
291
291
 
292
292
  return col;
293
- }`);i=e.include(u);break;case 4:i=e.include(La.Nodes.triplanar);break;default:i=e.include(La.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let a=[];if(a.push("normal"),a.push(this.texture.generate(e,"t")),a.push(this.textureSize.build(e,"v2")),a.push(this.crop.build(e,"f")),a.push(this.mat.build(e,"mat3")),a.push(this.size.build(e,"v2")),a.push(this.blending.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),this.projection.value===4){let s=`${o}_writeUvs`,l=s+"0",u=s+"1",c=s+"2",d=`${o}_triplanarWeights`;e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(d,"vec3"),a.push(l),a.push(u),a.push(c),a.push(d)}else{let s=`${o}_writeUvs`;e.addFragmentVariable(s,"vec2"),a.push(s)}return e.format(i+"("+a.join(",")+")",this.getType(e),r)}},vn=La;vn.Nodes=function(){let e=new Q(`
293
+ }`);i=e.include(u);break;case 4:i=e.include(Ra.Nodes.triplanar);break;default:i=e.include(Ra.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let a=[];if(a.push("normal"),a.push(this.texture.generate(e,"t")),a.push(this.textureSize.build(e,"v2")),a.push(this.crop.build(e,"f")),a.push(this.mat.build(e,"mat3")),a.push(this.size.build(e,"v2")),a.push(this.blending.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),this.projection.value===4){let s=`${o}_writeUvs`,l=s+"0",u=s+"1",c=s+"2",d=`${o}_triplanarWeights`;e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(d,"vec3"),a.push(l),a.push(u),a.push(c),a.push(d)}else{let s=`${o}_writeUvs`;e.addFragmentVariable(s,"vec2"),a.push(s)}return e.format(i+"("+a.join(",")+")",this.getType(e),r)}},vn=Ra;vn.Nodes=function(){let e=new Q(`
294
294
  vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
295
295
  vec3 posN = normalize(position);
296
296
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -445,7 +445,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
445
445
 
446
446
  return col;//n * 0.5 + 0.5;
447
447
  }
448
- `);return{cylindrical:e,spherical:r,uv:o,triplanar:i}}();var Ra=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=u,this.colors=c,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new Q(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
448
+ `);return{cylindrical:e,spherical:r,uv:o,triplanar:i}}();var Va=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=u,this.colors=c,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new Q(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
449
449
  vec4 color = colors[0];
450
450
  #ifdef ${o}_IS_VECTOR
451
451
  #ifdef ${o}_LINEAR
@@ -485,7 +485,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
485
485
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
486
486
 
487
487
  return color.rgb;
488
- }`,[Ra.Nodes.vectorLinearWorldSpaceDepth,Ra.Nodes.vectorLinearObjectSpaceDepth,Ra.Nodes.vectorSphericalObjectSpaceDepth,Ra.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let a=e.include(i),s=[];return s.push(this.near.build(e,"f")),s.push(this.far.build(e,"f")),s.push(this.origin.build(e,"v3")),s.push(this.direction.build(e,"v3")),s.push(this.colors.build(e,"v4[]")),s.push(this.steps.build(e,"f[]")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),e.format(a+"("+s.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Va=Ra;Va.Nodes=function(){let e=new Q(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
488
+ }`,[Va.Nodes.vectorLinearWorldSpaceDepth,Va.Nodes.vectorLinearObjectSpaceDepth,Va.Nodes.vectorSphericalObjectSpaceDepth,Va.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let a=e.include(i),s=[];return s.push(this.near.build(e,"f")),s.push(this.far.build(e,"f")),s.push(this.origin.build(e,"v3")),s.push(this.direction.build(e,"v3")),s.push(this.colors.build(e,"v4[]")),s.push(this.steps.build(e,"f[]")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),e.format(a+"("+s.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},za=Va;za.Nodes=function(){let e=new Q(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
489
489
  vec3 n = normalize(direction);
490
490
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
491
491
  return ( dist - near ) / ( far - near );
@@ -507,7 +507,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
507
507
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
508
508
 
509
509
  return color;
510
- }`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var of=class extends ae{constructor(e,r,o,i,a,s,l,u,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=a,this.morph=s,this.angle=l,this.isMask=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(of.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},za=of;za.Nodes=function(){return{gradient:new Q(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
510
+ }`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var of=class extends ae{constructor(e,r,o,i,a,s,l,u,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=a,this.morph=s,this.angle=l,this.isMask=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(of.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ga=of;Ga.Nodes=function(){return{gradient:new Q(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
511
511
  vec4 color = colors[0];
512
512
  vec2 m = morph / vUv.xy;
513
513
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -549,7 +549,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
549
549
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
550
550
 
551
551
  return color.xyz;
552
- }`)}}();var nf=class extends ae{constructor(e,r,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(nf.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ga=nf;Ga.Nodes=function(){return{matcap:new Q(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
552
+ }`)}}();var nf=class extends ae{constructor(e,r,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(nf.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ka=nf;ka.Nodes=function(){return{matcap:new Q(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
553
553
  vec3 viewDir = normalize( vViewPosition );
554
554
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
555
555
  vec3 y = cross( viewDir, x );
@@ -601,7 +601,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
601
601
  d *= w;
602
602
 
603
603
  return dot(d, vec4(52.0));
604
- }`,[t]);e.keywords.F3=new Ee("float F3 0.3333333"),e.keywords.G3=new Ee("float G3 0.1666667");let r=new Q(`float simplex3dFractal(vec3 m) {
604
+ }`,[t]);e.keywords.F3=new Be("float F3 0.3333333"),e.keywords.G3=new Be("float G3 0.1666667");let r=new Q(`float simplex3dFractal(vec3 m) {
605
605
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
606
606
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
607
607
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -679,7 +679,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
679
679
  a *= 0.5;
680
680
  }
681
681
  return v;
682
- }`,[u]);c.keywords.NUM_OCTAVES=new Ee(`int NUM_OCTAVES ${5}`);let d=new Q("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new Q(`float perlin(vec3 P){
682
+ }`,[u]);c.keywords.NUM_OCTAVES=new Be(`int NUM_OCTAVES ${5}`);let d=new Q("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new Q(`float perlin(vec3 P){
683
683
  vec3 Pi0 = floor(P);
684
684
  vec3 Pi1 = Pi0 + vec3(1.0);
685
685
  Pi0 = mod(Pi0, 289.0);
@@ -914,7 +914,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
914
914
  return hashwithoutsine13(vec3(p + mb) + seed);
915
915
  }
916
916
  }
917
- `,[f,h,m,y,g,b]);return{simplex:e,simplexFractal:r,simplexAshima:a,fbm:c,perlin:p,voronoi:S}}();var ka=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d,p,f,h,m,y,g,b,S,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=i,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=u,this.colorC=c,this.colorD=d,this.noiseType=f,this.voronoiStyle=m,this.highCut=y,this.lowCut=g,this.smoothness=b,this.seed=S,this.quality=w,this.isMask=h,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let s=Object.values(tl)[this.noiseType.value],l=s=="voronoi"?`
917
+ `,[f,h,m,y,g,b]);return{simplex:e,simplexFractal:r,simplexAshima:a,fbm:c,perlin:p,voronoi:S}}();var Fa=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d,p,f,h,m,y,g,b,S,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=i,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=u,this.colorC=c,this.colorD=d,this.noiseType=f,this.voronoiStyle=m,this.highCut=y,this.lowCut=g,this.smoothness=b,this.seed=S,this.quality=w,this.isMask=h,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let s=Object.values(tl)[this.noiseType.value],l=s=="voronoi"?`
918
918
  float v = ${s}(st + move, voronoiStyle, smoothness, seed, quality);
919
919
 
920
920
  // Apply clipping to colors
@@ -951,7 +951,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
951
951
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
952
952
 
953
953
  return clamp(color, 0.0, 1.0).rgb;
954
- }`,[Dt.simplex,Dt.simplexFractal,Dt.simplexAshima,Dt.fbm,Dt.perlin,Dt.voronoi]),c=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(c+"("+d.join(",")+")",this.getType(e),r)}};ka.numOctaves=5;var af=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d,p,f,h,m,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=u,this.contourDirection=c,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=h,this.depthMap=m,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),a=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(a,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
954
+ }`,[Dt.simplex,Dt.simplexFractal,Dt.simplexAshima,Dt.fbm,Dt.perlin,Dt.voronoi]),c=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(c+"("+d.join(",")+")",this.getType(e),r)}};Fa.numOctaves=5;var af=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d,p,f,h,m,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=u,this.contourDirection=c,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=h,this.depthMap=m,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),a=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(a,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
955
955
  vID = randomColor.r;
956
956
  vec2 ${o}_offset = vec2(0.0);
957
957
  if (${s}) {
@@ -966,7 +966,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
966
966
  // if this offset is the biggest of all the potential offsets
967
967
  gl_Position = ${o}_clipPosition;
968
968
  }
969
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(af.Nodes.outline),a=[];return a.push(this.outlineColor.build(e,"c")),a.push(this.contourColor.build(e,"c")),a.push(this.outlineWidth.build(e,"f")),a.push(this.contourWidth.build(e,"f")),a.push(this.contourThreshold.build(e,"f")),a.push(this.outlineThreshold.build(e,"f")),a.push(this.contourFrequency.build(e,"f")),a.push(this.outlineSmoothing.build(e,"f")),a.push(this.contourDirection.build(e,"v3")),a.push(this.positionalLines.build(e,"b")),a.push(this.resolution.build(e,"v2")),a.push(this.normalMap.getTexture(e,"t")),a.push(this.depthMap.getTexture(e,"t")),a.push(this.pixelRatio.build(e,"f")),a.push(this.compensation.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Fa=af;Fa.Nodes=function(){let e=new Q(`
969
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(af.Nodes.outline),a=[];return a.push(this.outlineColor.build(e,"c")),a.push(this.contourColor.build(e,"c")),a.push(this.outlineWidth.build(e,"f")),a.push(this.contourWidth.build(e,"f")),a.push(this.contourThreshold.build(e,"f")),a.push(this.outlineThreshold.build(e,"f")),a.push(this.contourFrequency.build(e,"f")),a.push(this.outlineSmoothing.build(e,"f")),a.push(this.contourDirection.build(e,"v3")),a.push(this.positionalLines.build(e,"b")),a.push(this.resolution.build(e,"v2")),a.push(this.normalMap.getTexture(e,"t")),a.push(this.depthMap.getTexture(e,"t")),a.push(this.pixelRatio.build(e,"f")),a.push(this.compensation.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},ja=af;ja.Nodes=function(){let e=new Q(`
970
970
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
971
971
  {
972
972
  vec2 halton = haltonSequence[frameIndex];
@@ -1201,7 +1201,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1201
1201
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1202
1202
 
1203
1203
  return clamp(color, 0.0, 1.0).rgb;
1204
- }`,[s,a,co.DrawFunctions.circle,co.DrawFunctions.ring,co.DrawFunctions.polygon,co.DrawFunctions.cross,co.DrawFunctions.diamond,co.DrawFunctions.checkerboard,co.DrawFunctions.line,co.DrawFunctions.wave]),c=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(c+"("+d.join(",")+")",this.getType(e),r)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),r)}},ja=co;ja.DrawFunctions=function(){let e=new Q(`float hashwithoutsine12(vec2 p) {
1204
+ }`,[s,a,co.DrawFunctions.circle,co.DrawFunctions.ring,co.DrawFunctions.polygon,co.DrawFunctions.cross,co.DrawFunctions.diamond,co.DrawFunctions.checkerboard,co.DrawFunctions.line,co.DrawFunctions.wave]),c=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(c+"("+d.join(",")+")",this.getType(e),r)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),r)}},Ua=co;Ua.DrawFunctions=function(){let e=new Q(`float hashwithoutsine12(vec2 p) {
1205
1205
  vec3 p3 = fract(vec3(p.xyx) * 0.1031);
1206
1206
  p3 += dot(p3, p3.yzx + 33.33);
1207
1207
  return fract((p3.x + p3.y) * p3.z);
@@ -1366,7 +1366,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1366
1366
  float s = mix(size, size * rand, variation);
1367
1367
 
1368
1368
  return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
1369
- }`);return{tileAndCenter:r,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:u,line:c,wave:d}}();var sf=class extends ae{constructor(e,r,o,i,a,s,l,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=u,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(sf.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ua=sf;Ua.Nodes=function(){let e=new Q(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1369
+ }`);return{tileAndCenter:r,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:u,line:c,wave:d}}();var sf=class extends ae{constructor(e,r,o,i,a,s,l,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=u,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(sf.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ha=sf;Ha.Nodes=function(){let e=new Q(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1370
1370
  vec3 st = position / noiseScale;
1371
1371
  vec3 q = vec3(simplex3d(st),
1372
1372
  simplex3d(st + vec3(1.0)),
@@ -1389,7 +1389,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1389
1389
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1390
1390
 
1391
1391
  return res;
1392
- }`,[e])}}();var lf=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=u,this.offset=c,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(lf.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ha=lf;Ha.Nodes=function(){let e=new Q(`float rand(float n) {
1392
+ }`,[e])}}();var lf=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=u,this.offset=c,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(lf.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},qa=lf;qa.Nodes=function(){let e=new Q(`float rand(float n) {
1393
1393
  return fract(sin(n) * 43758.5453123);
1394
1394
  }`),r=new Q(`float hash1(float p) {
1395
1395
  p = fract(p * 0.011);
@@ -1689,7 +1689,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1689
1689
  vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
1690
1690
  vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
1691
1691
  return mix( fSample, cSample, fract( lod ) );
1692
- }`)}}();function Ux(n,t){return n>=t?new jx(t/n,1):new jx(1,n/t)}var cf=class extends ae{constructor(e,r,o,i,a,s,l,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,Se.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(cf.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},qa=cf;qa.Nodes=function(){let e=new Q(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1692
+ }`)}}();function Ux(n,t){return n>=t?new jx(t/n,1):new jx(1,n/t)}var cf=class extends ae{constructor(e,r,o,i,a,s,l,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,Se.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(cf.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Wa=cf;Wa.Nodes=function(){let e=new Q(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1693
1693
  // Slightly modified version of this:
1694
1694
  // https://www.shadertoy.com/view/ltScRG
1695
1695
 
@@ -1780,7 +1780,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1780
1780
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1781
1781
 
1782
1782
  return transmission;
1783
- }`,[a])}}();var uf=(e=>(e.NOISE="noise",e.MAP="map",e))(uf||{}),df=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d,p){super("v3");this.displacementTypeIndex=new Pe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(uf)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Da(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=u,this.quality=c}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(uf)[this.displacementTypeIndex.value]){case"map":{o=e.include(df.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(tl)[this.noiseFunctionIndex.value],l=new Q(`vec3 orthogonal(vec3 v) {
1783
+ }`,[a])}}();var uf=(e=>(e.NOISE="noise",e.MAP="map",e))(uf||{}),df=class extends ae{constructor(e,r,o,i,a,s,l,u,c,d,p){super("v3");this.displacementTypeIndex=new Pe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(uf)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Ea(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=u,this.quality=c}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(uf)[this.displacementTypeIndex.value]){case"map":{o=e.include(df.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(tl)[this.noiseFunctionIndex.value],l=new Q(`vec3 orthogonal(vec3 v) {
1784
1784
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1785
1785
  }`),u=s=="voronoi"?`
1786
1786
  float v = ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
@@ -1809,7 +1809,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1809
1809
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1810
1810
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1811
1811
  return displaced_position;
1812
- }`,[c,l]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Wa=df;Wa.Nodes=function(){let e=new Q(`vec3 orthogonal(vec3 v) {
1812
+ }`,[c,l]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},$a=df;$a.Nodes=function(){let e=new Q(`vec3 orthogonal(vec3 v) {
1813
1813
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1814
1814
  }`),r=new Q(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1815
1815
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
@@ -1831,7 +1831,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1831
1831
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1832
1832
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1833
1833
  return displaced_position;
1834
- }`,[e,r])}}();var Se={normalRenderTarget:new qt,normalRenderTargetDepth:new qt,transmissionRenderTarget:new qt,aspectRatio:new rt,transmissionSize:new rt(2048,2048),transmissionRenderTargetDepth:new qt,aoRenderTarget:new qt,aoEnabled:new st,pixelRatioNode:new J(1),resolution:new rt,penumbraSize:new Gr(5,.5),frameIndex:new Pe(0),transmissionLod:new Pe(2)};for(let n of Object.values(Se))n.isRenderGlobal=!0;var Hx={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.0.2/build/ui.wasm"};var ko=class extends Mt{constructor(){super("basic");this.nodeType="Basic";this.color=new ze(dt),this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0),this.previousModelViewMatrix=new Vt,this.previouseProjectionMatrix=new Vt}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Se.frameIndex}),e.mergeUniform({resolution:Se.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(aI.merge([iI.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1834
+ }`,[e,r])}}();var Se={normalRenderTarget:new qt,normalRenderTargetDepth:new qt,transmissionRenderTarget:new qt,aspectRatio:new rt,transmissionSize:new rt(2048,2048),transmissionRenderTargetDepth:new qt,aoRenderTarget:new qt,aoEnabled:new st,pixelRatioNode:new J(1),resolution:new rt,penumbraSize:new Gr(5,.5),frameIndex:new Pe(0),transmissionLod:new Pe(2)};for(let n of Object.values(Se))n.isRenderGlobal=!0;var Hx={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.0.3/build/ui.wasm"};var ko=class extends Mt{constructor(){super("basic");this.nodeType="Basic";this.color=new ze(dt),this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0),this.previousModelViewMatrix=new Vt,this.previouseProjectionMatrix=new Vt}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Se.frameIndex}),e.mergeUniform({resolution:Se.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(aI.merge([iI.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1835
1835
  `));let i=["#include <beginnormal_vertex>",`
1836
1836
  #if !defined( USE_LAYER_DISPLACE )
1837
1837
  #include <defaultnormal_vertex>
@@ -2233,11 +2233,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2233
2233
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
2234
2234
  }
2235
2235
  `),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&p.push(`gl_FragColor.a *= ${d.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
2236
- `)}return r}};import{VideoTexture as dI,Texture as pI,CanvasTexture as fI}from"three";var bu=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var hf=class extends bu{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},ff;function Yx(n){return typeof n=="string"?n:(ff||(ff=new hf),ff.load(n))}var vu=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Su=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var $a=class extends vu{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isCanvas=!1;this.isVideo=e.type==="video",this.isCanvas=e.nodeName==="CANVAS",this.updateSrc(this.isCanvas?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let a of i){let s=this[a];s&&(s.image=this.img,s.needsUpdate=!0)}this.shared.requestRender()};if(this.isCanvas)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=Yx(e),this.img.onload=r}getTexture(e){let r=this[e];if(r)return r;{let o;return this.isCanvas&&(o=new fI(this.img,void 0,e,e)),this.isVideo?o=new dI(this.img,void 0,e,e):o=new pI(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}setNeedsUpdate(e){let r=[1e3,1001,1002];for(let o of r){let i=this[o];i&&(i.needsUpdate=e)}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var pr=class extends $a{};import{Vector2 as jo,Vector3 as uo,Vector4 as wu}from"three";function zt(n,t){return t.color(n)}function Xx(n,t){switch(n.type){case"fresnel":return yI(n,t);case"gradient":return gI(n,t);case"depth":return xI(n,t);case"normal":return bI(n,t);case"noise":return vI(n,t);case"rainbow":return SI(n,t);case"toon":return wI(n,t);case"outline":return _I(n,t);case"transmission":return AI(n,t);case"color":return mI(n,t);case"pattern":return PI(n,t)}}function hI(n){return{type:n.type}}function Fr(n,t){let{alpha:e,mode:r,isMask:o}=n,i=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...hI(n),alpha:i,mode:r,isMask:o}}function mI(n,t){return{...Fr(n,t),color:zt(n.color,t)}}function yI(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:a}=n;return{...Fr(n,t),color:zt(a,t),bias:e,scale:r,intensity:o,factor:i}}function gI(n,t){let{gradientType:e,smooth:r,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...Fr(n,t),gradientType:e,smooth:r,colors:o.map(u=>new wu(u[0],u[1],u[2],u[3])),num:o.length,steps:i,offset:new jo(...s),morph:new jo(...l),angle:a}}function xI(n,t){let{gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:u,steps:c,smooth:d}=n;return{...Fr(n,t),gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:new uo(...s),direction:l?new uo(...l):new uo(1,0,0),colors:u.map(p=>p!==void 0?new wu(p[0],p[1],p[2],p[3]):new wu(0,0,0,0)),steps:c.slice(0,u.length),smooth:d}}function bI(n,t){let{cnormal:e}=n;return{...Fr(n,t),cnormal:new uo(e[0],e[1],e[2])}}function vI(n,t){return{...Fr(n,t),scale:n.scale,move:n.move,fA:new jo(...n.fA),fB:new jo(...n.fB),size:new uo(...n.size),distortion:new jo(...n.distortion),colorA:zt(n.colorA,t),colorB:zt(n.colorB,t),colorC:zt(n.colorC,t),colorD:zt(n.colorD,t),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function SI(n,t){return{...Fr(n,t),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new uo(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new uo(...n.offset)}}function wI(n,t){return{...Fr(n,t),positioning:n.positioning,colors:n.colors.map(e=>new wu(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new uo(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:zt(n.shadowColor,t),offset:new uo(...n.offset)}}function _I(n,t){return{...Fr(n,t),outlineColor:zt(n.outlineColor,t),contourColor:zt(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new uo(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function AI(n,t){return{...Fr(n,t),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function PI(n,t){return{...Fr(n,t),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new jo(...n.offset),colorA:zt(n.colorA,t),colorB:zt(n.colorB,t),frequency:new jo(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new jo(...n.vertical),horizontal:new jo(...n.horizontal),sides:n.sides}}var Sn=class extends St{};import{Vector4 as OI}from"three";var mf={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},yf={depth:["colors"]};function CI(n,t,e){if(t==="isMask")return!0;let r=mf[n.type],o=yf[n.type];if(o!==void 0){let i=n.color;if(o.includes(t)){let a=i[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function gf(n,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=t.image(a),l=r;l.image instanceof pr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=t.video(a),l=r;l.image instanceof pr||l.image.deref(),l.image=s}if("wrapping"in i){let a=r;a.wrap=i.wrapping}if("repeat"in i||"offset"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),s.updateMatrix()}return o}function Qx(n,t,e,r){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if(xf(i,e,r,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof bn))switch(o=o||CI(e,i,a),s.constructor){case ze:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Sn?s.value=new St(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case er:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Sn?s.value=new St(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case rt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Rt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case qt:{gf(a,t,e);break}case kr:{s.value=a.map(l=>new OI(...l));break}default:{s.value=a;break}}}return o}var wn=(n,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,fo=class{constructor(t,e,r,o,i){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)xf(a,this,r,i)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Wt.createLigherLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let i=r.type==="texture"?o.canvas(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new Xn(i,r.texture.wrapping),s=new gu(i),l=new xu(r.texture.repeat,r.texture.offset),u=new J(r.crop?1:0),c=new Pe(r.projection??0),d=new Pe(["x","y","z"].indexOf(r.axis)??0),p=new Pe(r.side??0),f=new rt(r.size?new jr(r.size[0],r.size[1]):new jr(100,100)),h=new J(r.blending??0),m=new J(wn(r.alpha,o)),y=new Pe(r.mode??0),g=new st(r.isMask??!1),b=new vn(a,s,u,c,d,p,f,h,l,m,y,g),S=new Re(b.calpha,"f");return new Ke(t,e,r,{texture:a,textureSize:s,crop:u,projection:c,axis:d,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:g},b,y,S,g,o)}else if(r.type==="matcap"){let i=o.image(r.texture.image),a=new Xn(i,r.texture.wrapping),s=new J(wn(r.alpha,o)),l=new Pe(r.mode??0),u=new st(r.isMask??!1),c=new Ga(a,s,l,u),d=new Re(c.calpha,"f");return new Ke(t,e,r,{texture:a,alpha:s,mode:l,isMask:u},c,l,d,u,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Rt(new po(...r.offset)),a=new J(r.scale??10),s=new J(r.intensity??8),l=new J(r.movement??1),u=new Pe(r.noiseType??0),c=new Pe(r.voronoiStyle??0),d=new J(r.smoothness??.5),p=new J(r.seed??0),f=new J(r.highCut??1),h=new J(r.lowCut??0),m=new Pe(r.quality??1),y=new Wa(s,l,i,c,d,p,f,h,m,a,u);return new al(t,e,r,{offset:i,scale:a,intensity:s,movement:l,noiseType:u,voronoiStyle:c,smoothness:d,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return II(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):Qx(o.props,r.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?gf(o.props,r.shared,this):!0;return!1}dispose(){if(TI(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof pr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},Ke=class extends fo{constructor(e,r,o,i,a,s,l,u,c){super(e,r,o,i,c);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=u}},al=class extends fo{constructor(e,r,o,i,a,s){super(e,r,o,i,s);this.position=a}},Wt=class extends fo{constructor(e,r,o,i,a,s){super(e,r,o,a,s);this.node=i}static createLigherLayer(e,r,o,i){let a,s=new J(wn(o.alpha,i)),l=new Pe(o.mode),u=new J(o.bumpMapIntensity),c=new J(wn(o.alphaOverride,i)),d;if(!o.visible)a=new ko,d={};else if(o.category==="lambert"){a=new rl;let p=new ze(i.color(o.emissive)??0),f=new st(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new il;let p=new J(o.shininess??30),f=new ze(i.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new nl;let p=new J(o.roughness??.3),f=new J(o.metalness??0),h=new J(o.reflectivity??.5),m=new st(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new ol;let p=new J(o.shininess??30),f=new ze(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new st(o.occlusion??!0);d={shininess:p,specular:f,occlusion:h},a.shininess=p,a.specular=f,a.occlusion=h}return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=u,a.alphaOverride=c,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new Wt(e,r,o,a,d,i)}get category(){return this.node.category}};function TI(n){let t=n instanceof fo?n.type:n;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function vr(n){return{alpha:new J(n.alpha??1),mode:new Pe(n.mode??0),isMask:new st(n.isMask??!1)}}function MI(n,t,e,r,o){switch(n.type){case"color":{let i=new ze(r.color??dt),a=vr(r),s=new Qn(i,a.alpha),l=new Re(s.calpha,"f");return new Ke(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new ze(r.color??16777215),a=new J(r.bias??.1),s=new J(r.scale??1),l=new J(r.intensity??2),u=new J(r.factor??1),c=vr(r),d=new el(i,a,s,l,u,c.alpha,c.mode,c.isMask),p=new Re(d.calpha,"f");return new Ke(t,e,n,{color:i,bias:a,scale:s,intensity:l,factor:u,...c},d,c.mode,p,c.isMask,o)}case"rainbow":{let i=new J(r.filmThickness??30),a=new J(r.movement??0),s=new Rt(r.wavelengths??new po(0,0,0)),l=new J(r.noiseStrength??0),u=new J(r.noiseScale??1),c=new Rt(r.offset??new po(0,0,0)),d=vr(r),p=new Ua(i,a,s,l,u,c,d.alpha,d.isMask),f=new Re(p.calpha,"f");return new Ke(t,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:u,offset:c,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let i=new J(r.thickness??10),a=new J(r.ior??1.5),s=new J(r.roughness??.5),l=Se.transmissionSize,u=Se.transmissionRenderTarget,c=Se.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new rt(p/d,1):new rt(1,d/p),h=vr(r),m=new qa(i,a,s,l,u,c,f,h.alpha),y=new Re(m.calpha,"f");return new Ke(t,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new Pe(r.positioning??0),a;r.colors?a=new kr(r.colors.length,r.colors):(a=new kr(10,new Ya(0,0,0,1)),a.value[1]=new Ya(1,1,1,1));let s;r.steps?s=new Gr(r.steps.length,r.steps):(s=new Gr(10,1),s.value[0]=0);let l=new Rt(r.source??new po(0,0,0)),u=new st(r.isWorldSpace??!0),c=new J(r.noiseStrength??0),d=new J(r.noiseScale??1),p=new er(r.shadowColor),f=new Rt(r.offset??new po(0,0,0)),h=vr(r),m=new Ha(i,a,s,l,u,c,d,p,f,h.alpha),y=new Re(m.calpha,"f");return new Ke(t,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:u,noiseStrength:c,noiseScale:d,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let i=new ze(r.outlineColor??16777215),a=new ze(r.contourColor??16777215),s=new J(r.outlineWidth??.1),l=new J(r.contourWidth??.1),u=new J(r.outlineThreshold??.1),c=new J(r.contourThreshold??.1),d=new J(r.outlineSmoothing??.1),p=new J(r.contourFrequency??.1),f=new Rt(r.contourDirection??new po(0,1,0)),h=new st(r.positionalLines??!1),m=new st(r.compensation??!0),y=Se.normalRenderTarget,g=Se.normalRenderTargetDepth,b=Se.pixelRatioNode,S=Se.resolution,w=vr(r),v=new Fa(i,a,s,l,u,c,d,p,f,h,m,S,y,g,b,w.alpha),_=new Re(v.calpha,"f");return new Ke(t,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:u,contourThreshold:c,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...w},v,w.mode,_,w.isMask,o)}case"depth":{let i=new Pe(r.gradientType??0),a=new st(r.smooth??!1),s=new J(r.near??50),l=new J(r.far??200),u=new J(r.isVector??1),c=new J(r.isWorldSpace??0),d=new Rt(r.origin??new po),p=new Rt(r.direction??new po),f;r.colors?f=new kr(r.colors.length,r.colors):(f=new kr(2,new Ya(0,0,0,1)),f.value[1]=new Ya(1,1,1,1));let h;r.steps?h=new Gr(r.steps.length,r.steps):(h=new Gr(2,1),h.value[0]=0);let m=vr(r),y=new Va(i,a,s,l,u,c,d,p,f,h,m.alpha,m.isMask),g=new Re(y.calpha,"f");return new Ke(t,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:u,isWorldSpace:c,origin:d,direction:p,colors:f,steps:h,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new J(r.scale??1),a=new Rt(r.size??new po(100,100,100)),s=new J(r.move??1),l=new rt(r.fA??new jr(1.7,9.2)),u=new rt(r.fB??new jr(8.3,2.8)),c=new rt(r.distortion??new jr(1,1)),d=new er(r.colorA),p=new er(r.colorB),f=new er(r.colorC),h=new er(r.colorD),m=new Pe(r.noiseType??0),y=new Pe(r.voronoiStyle??0),g=new J(r.highCut??1),b=new J(r.lowCut??0),S=new J(r.smoothness??.5),w=new J(r.seed??.5),v=new Pe(r.quality??1),_=vr(r),A=new ka(i,a,s,l,u,c,d,p,f,h,_.alpha,m,_.isMask,y,g,b,S,w,v),x=new Re(A.calpha,"f");return new Ke(t,e,n,{scale:i,size:a,move:s,fA:l,fB:u,distortion:c,colorA:d,colorB:p,colorC:f,colorD:h,noiseType:m,..._,voronoiStyle:y,highCut:g,lowCut:b,smoothness:S,seed:w,quality:v},A,_.mode,x,_.isMask,o)}case"normal":{let i=new Rt(r.cnormal??new po(1,1,1)),a=vr(r),s=new Ba(i,a.alpha),l=new Re(s.calpha,"f");return new Ke(t,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Pe(r.gradientType??0),a=new st(r.smooth??!1),s;r.colors?s=new kr(r.colors.length,r.colors):(s=new kr(10,new Ya(0,0,0,1)),s.value[1]=new Ya(1,1,1,1));let l;r.steps?l=new Gr(r.steps.length,r.steps):(l=new Gr(10,1),l.value[0]=0);let u=new rt(r.offset??new jr(0,0)),c=new rt(r.morph??new jr(0,0)),d=new J(r.angle??0),p=vr(r),f=new za(i,a,s,l,u,c,d,p.alpha,p.isMask),h=new Re(f.calpha,"f");return new Ke(t,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:u,morph:c,angle:d,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let i=new Pe(r.style??0),a=new Pe(r.projection??0),s=new Pe(["x","y","z"].indexOf(r.axis)??0),l=new J(r.blending??0),u=new rt(r.offset??new jr(0,0)),c=new er(r.colorA),d=new er(r.colorB),p=new rt(r.frequency??new jr(10,10)),f=new J(r.size??.5),h=new J(r.variation??0),m=new J(r.smoothness??.5),y=new J(r.zigzag??0),g=new J(r.rotation??0),b=new rt(r.vertical??new jr(0,1)),S=new rt(r.horizontal??new jr(0,1)),w=new Pe(r.sides??6),v=vr(r),_=new ja(i,a,s,l,u,c,d,p,f,h,m,y,g,b,S,w,v.alpha,v.isMask),A=new Re(_.calpha,"f");return new Ke(t,e,n,{style:i,projection:a,axis:s,blending:l,offset:u,colorA:c,colorB:d,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:g,vertical:b,horizontal:S,sides:w,...v},_,v.mode,A,v.isMask,o)}default:{let i=new ze(1,0,0,1),a=vr(r),s=new Qn(i,a.alpha),l=new Re(s.calpha,"f");return new Ke(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function II(n,t,e,r){let o=Xx(e,r);return MI(e,n,t,o,r)}function xf(n,t,e,r){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=wn(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=t.uniforms[`f${t.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function _u(n,t){let e=0,r=n.layers.find(o=>o.data.type==="light");if(r){let o=r.data,i=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(t.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,u=t.color(o.data.colorD).a,c=Math.min(a,Math.min(s,Math.min(l,u)));c<1&&(i=c)}e+=(1-e)*i}}return e<1}var rr=class extends NI{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Au=class extends rr{constructor(e,r,o,i){super();this.flatShading=e;this.side=r;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o){return this.root.getFlavor(e,r,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Zn=class extends rr{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,r)}get nodeMaterial(){return this}getFlavor(e,r,o){let i=o?6:(e?3:0)+r;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Au(e,r,o,this),this.flavors[i]=a,a.flatShading=e,a.side=r,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r,o=!1){(this.data!==e||o)&&this.reset0(e,r)}reset0(e,r){this.data=e;let o=e.layers??Bt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>fo.create(this.layerIdGen++,i.id,i.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=_u(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=_u(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=_u(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)))):s.setValue(a,r))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(r=>r instanceof Wt),this.lightLayer===void 0&&(this.lightLayer=new Wt(0,"",{...ht.defaultData("light","phong"),visible:!1},new ko,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Wt);if(!e)return;let r=e.data,o=r.bumpMap,i=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof Ke&&s.color instanceof vn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(r!==void 0?this.data=r:r=this.data,this.transparent=_u(r,o.shared),e.path[0]==="layers"){this.data=r;let i=o.shared,a=e.path[1];if(a===void 0){if(this.layers.reverse(),e.type===4){let s=fo.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,s),o.scene.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene.markNeedsUpdateRendererDirty();else if(e.type===6){let s=this.layers.findIndex(u=>u.uuid===e.id),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate(o.shared)}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),u;if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?u={...e.props,alpha:wn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:u={...e.props,alphaOverride:wn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...u?{props:u}:{},path:e.path.slice(2)},l,o)){let d=fo.create(this.layerIdGen++,a,l,i);this.layers.splice(this.layers.findIndex(p=>p.uuid===a),1,d),this.onUpdate(o.shared)}}}}else this.reset(r,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof Ke?r.color.mask=void 0:r instanceof Wt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof Ke&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Wt?i.node.mask=new It(r.color,r.alpha,It.MUL):i instanceof Ke&&(i.isMask.value||(i.color.mask=new It(r.color,r.alpha,It.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof Ke),r=this.layers.findIndex(o=>o instanceof Wt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let a=this.layers[i];if(a instanceof Ke){if(a.isMask.value)continue;o=new Ea(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Re("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Wt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof Ke){if(i.isMask.value)continue;e=new Ea(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof al);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new It(r,e[o].position,It.ADD),r=new It(r,new J(.5).setReadonly(!0),It.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=a}}computeCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.visible?r.category.toUpperCase():"Basic"}"`;else{let o=(mf[r.type]??[]).map(u=>r[u]),i=(yf[r.type]??[]).map(u=>r[u]?.length??0),a=[...o,...i],s="isMask"in r&&r.isMask,l=`"${r.type}-${r.visible}-${s}"`;a.length?e+=`[${l}, "${a.join('","')}"],`:e+=l}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new Na;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof Ke){let r=e.params.texture;if(r instanceof Xn&&!r.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(rr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Jn=class extends Zn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var eb=Ft(Kx());var Zx=new Map;function Jx(n){if(typeof n=="string")return n;let t=Zx.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},Zx.set(n,t)),t.url}var ei=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof t=="string"?i={src:t}:i={src:Jx(t),format:"wav"},this.sound=new eb.Howl(i),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as DI,Vector2 as ti,Path as tb,Shape as EI,ShapeUtils as BI,Color as LI}from"three";var Ou=class{constructor(){this.type="ShapePath";this.color=new LI;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new tb,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,i,a){return this.currentPath?.bezierCurveTo(t,e,r,o,i,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,g,b){let S=m.x,w=y.x,v=g.x,_=b.x,A=m.y,x=y.y,T=g.y,C=b.y,P=(_-v)*(A-T)-(C-T)*(S-v),O=(w-S)*(A-T)-(x-A)*(S-v),M=(C-T)*(w-S)-(_-v)*(x-A),I=P/M,N=O/M;if(M===0&&P!==0||I<=0||I>=1||N<0||N>1)return null;if(P===0&&M===0){for(let B=0;B<2;B++)if(i(B===0?g:b,m,y),r.loc===e.ORIGIN){let D=B===0?g:b;return{x:D.x,y:D.y,t:r.t}}else if(r.loc===e.BETWEEN){let D=+(S+r.t*(w-S)).toPrecision(10),G=+(A+r.t*(x-A)).toPrecision(10);return{x:D,y:G,t:r.t}}return null}else{for(let G=0;G<2;G++)if(i(G===0?g:b,m,y),r.loc===e.ORIGIN){let L=G===0?g:b;return{x:L.x,y:L.y,t:r.t}}let B=+(S+I*(w-S)).toPrecision(10),D=+(A+I*(x-A)).toPrecision(10);return{x:B,y:D,t:I}}}function i(m,y,g){let b=g.x-y.x,S=g.y-y.y,w=m.x-y.x,v=m.y-y.y,_=b*v-w*S;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===g.x&&m.y===g.y){r.loc=e.DESTINATION,r.t=1;return}if(_<-Number.EPSILON){r.loc=e.LEFT;return}if(_>Number.EPSILON){r.loc=e.RIGHT;return}if(b*w<0||S*v<0){r.loc=e.BEHIND;return}if(Math.sqrt(b*b+S*S)<Math.sqrt(w*w+v*v)){r.loc=e.BEYOND;return}let A;b!==0?A=w/b:A=v/S,r.loc=e.BETWEEN,r.t=A}function a(m,y){let g=[],b=[];for(let S=1;S<m.length;S++){let w=m[S-1],v=m[S];for(let _=1;_<y.length;_++){let A=y[_-1],x=y[_],T=o(w,v,A,x);T!==null&&g.find(C=>C.t<=T.t+Number.EPSILON&&C.t>=T.t-Number.EPSILON)===void 0&&(g.push(T),b.push(new ti(T.x,T.y)))}}return b}function s(m,y,g){let b=new ti;y.getCenter(b);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(b)&&a(m,w.points).forEach(_=>{S.push({identifier:w.identifier,isCW:w.isCW,point:_})})}),S.sort((w,v)=>w.point.x-v.point.x),S}function l(m,y,g,b,S){(S==null||S==="")&&(S="nonzero");let w=new ti;m.boundingBox.getCenter(w);let v=[new ti(g,w.y),new ti(b,w.y)],_=s(v,m.boundingBox,y);_.sort((O,M)=>O.point.x-M.point.x);let A=[],x=[];_.forEach(O=>{O.identifier===m.identifier?A.push(O):x.push(O)});let T=A[0].point.x,C=[],P=0;for(;P<x.length&&x[P].point.x<T;)C.length>0&&C[C.length-1]===x[P].identifier?C.pop():C.push(x[P].identifier),P++;if(C.push(m.identifier),S==="evenodd"){let O=C.length%2===0,M=C[C.length-2];return{identifier:m.identifier,isHole:O,for:M}}else if(S==="nonzero"){let O=!0,M=null,I=null;for(let N=0;N<C.length;N++){let B=C[N];y[B]&&(O?(I=y[B].isCW,O=!1,M=B):I!==y[B].isCW&&(I=y[B].isCW,O=!0))}return{identifier:m.identifier,isHole:O,for:M}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let u=0,c=999999999,d=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,b=999999999,S=-999999999,w=999999999;for(let v=0;v<y.length;v++){let _=y[v];_.y>g&&(g=_.y),_.y<b&&(b=_.y),_.x>S&&(S=_.x),_.x<w&&(w=_.x)}d<=S&&(d=S+1),c>=w&&(c=w-1),y.length&&p.push({curves:m.curves,points:y,isCW:BI.isClockWise(y),identifier:u++,boundingBox:new DI(new ti(w,b),new ti(S,g))})});let f=p.map(m=>l(m,p,c,d,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let g=new EI;g.curves=m.curves,f.filter(S=>S?.isHole&&S.for===m.identifier).forEach(S=>{if(S){let w=p[S.identifier],v=new tb;v.curves=w.curves,g.holes.push(v)}}),h.push(g)}}),h}};var bf=!1,ob,vf=new Promise(n=>{ob=n}),rb=!1;var Cu;function nb(){if(bf=!0,rb)return;if(Cu)return Cu;async function n(){let e=await import("./opentype.js");ob(e),rb=!0}return Cu=n(),Cu}var sl=class{async load(t,e,r=()=>{}){let{load:o}=await vf;o(t,(i,a)=>{i||!a?r(i??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await vf;try{let o=e(t),i=new r,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function RI(n){return await(await fetch(n)).arrayBuffer()}var VI=new sl;async function Sf(n){let t,e,r=!1;if(n.url?(t=await RI(n.url),e=n.url,r=n.url.startsWith("/")):n.data&&(t=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),t)if(bf){let o=await VI.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as zI,LineCurve as GI,QuadraticBezierCurve as kI}from"three";function FI(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var Tu=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=Sf(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=Sf(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=r.length===i.length;for(let u=0;u<r.length;u++){let c=r[u].index,d=String.fromCharCode(r[u].unicode),p=i[s];if(FI(c,p)||l)a.push({char:d,index:c,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,h="",m=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===c&&(g=!0),s>e.length&&(g=!0);a.push({char:d,index:c,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e){if(!this._isLoaded)return;let r=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=t.map(b=>this.getTextWidth(b,e)),s=e.width,l=this.getCharWidth(`
2236
+ `)}return r}};import{VideoTexture as dI,Texture as pI,CanvasTexture as fI}from"three";var bu=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var hf=class extends bu{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},ff;function Yx(n){return typeof n=="string"?n:(ff||(ff=new hf),ff.load(n))}var vu=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Su=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var Ya=class extends vu{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isCanvas=!1;this.isVideo=e.type==="video",this.isCanvas=e.nodeName==="CANVAS",this.updateSrc(this.isCanvas?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let a of i){let s=this[a];s&&(s.image=this.img,s.needsUpdate=!0)}this.shared.requestRender()};if(this.isCanvas)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=Yx(e),this.img.onload=r}getTexture(e){let r=this[e];if(r)return r;{let o;return this.isCanvas&&(o=new fI(this.img,void 0,e,e)),this.isVideo?o=new dI(this.img,void 0,e,e):o=new pI(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}setNeedsUpdate(e){let r=[1e3,1001,1002];for(let o of r){let i=this[o];i&&(i.needsUpdate=e)}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var pr=class extends Ya{};import{Vector2 as jo,Vector3 as uo,Vector4 as wu}from"three";function zt(n,t){return t.color(n)}function Xx(n,t){switch(n.type){case"fresnel":return yI(n,t);case"gradient":return gI(n,t);case"depth":return xI(n,t);case"normal":return bI(n,t);case"noise":return vI(n,t);case"rainbow":return SI(n,t);case"toon":return wI(n,t);case"outline":return _I(n,t);case"transmission":return AI(n,t);case"color":return mI(n,t);case"pattern":return PI(n,t)}}function hI(n){return{type:n.type}}function Fr(n,t){let{alpha:e,mode:r,isMask:o}=n,i=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...hI(n),alpha:i,mode:r,isMask:o}}function mI(n,t){return{...Fr(n,t),color:zt(n.color,t)}}function yI(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:a}=n;return{...Fr(n,t),color:zt(a,t),bias:e,scale:r,intensity:o,factor:i}}function gI(n,t){let{gradientType:e,smooth:r,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...Fr(n,t),gradientType:e,smooth:r,colors:o.map(u=>new wu(u[0],u[1],u[2],u[3])),num:o.length,steps:i,offset:new jo(...s),morph:new jo(...l),angle:a}}function xI(n,t){let{gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:u,steps:c,smooth:d}=n;return{...Fr(n,t),gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:new uo(...s),direction:l?new uo(...l):new uo(1,0,0),colors:u.map(p=>p!==void 0?new wu(p[0],p[1],p[2],p[3]):new wu(0,0,0,0)),steps:c.slice(0,u.length),smooth:d}}function bI(n,t){let{cnormal:e}=n;return{...Fr(n,t),cnormal:new uo(e[0],e[1],e[2])}}function vI(n,t){return{...Fr(n,t),scale:n.scale,move:n.move,fA:new jo(...n.fA),fB:new jo(...n.fB),size:new uo(...n.size),distortion:new jo(...n.distortion),colorA:zt(n.colorA,t),colorB:zt(n.colorB,t),colorC:zt(n.colorC,t),colorD:zt(n.colorD,t),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function SI(n,t){return{...Fr(n,t),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new uo(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new uo(...n.offset)}}function wI(n,t){return{...Fr(n,t),positioning:n.positioning,colors:n.colors.map(e=>new wu(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new uo(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:zt(n.shadowColor,t),offset:new uo(...n.offset)}}function _I(n,t){return{...Fr(n,t),outlineColor:zt(n.outlineColor,t),contourColor:zt(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new uo(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function AI(n,t){return{...Fr(n,t),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function PI(n,t){return{...Fr(n,t),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new jo(...n.offset),colorA:zt(n.colorA,t),colorB:zt(n.colorB,t),frequency:new jo(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new jo(...n.vertical),horizontal:new jo(...n.horizontal),sides:n.sides}}var Sn=class extends St{};import{Vector4 as OI}from"three";var mf={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},yf={depth:["colors"]};function CI(n,t,e){if(t==="isMask")return!0;let r=mf[n.type],o=yf[n.type];if(o!==void 0){let i=n.color;if(o.includes(t)){let a=i[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function gf(n,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=t.image(a),l=r;l.image instanceof pr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=t.video(a),l=r;l.image instanceof pr||l.image.deref(),l.image=s}if("wrapping"in i){let a=r;a.wrap=i.wrapping}if("repeat"in i||"offset"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),s.updateMatrix()}return o}function Qx(n,t,e,r){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if(xf(i,e,r,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof bn))switch(o=o||CI(e,i,a),s.constructor){case ze:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Sn?s.value=new St(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case er:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Sn?s.value=new St(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case rt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Rt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case qt:{gf(a,t,e);break}case kr:{s.value=a.map(l=>new OI(...l));break}default:{s.value=a;break}}}return o}var wn=(n,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,fo=class{constructor(t,e,r,o,i){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)xf(a,this,r,i)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Wt.createLigherLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let i=r.type==="texture"?o.canvas(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new Qn(i,r.texture.wrapping),s=new gu(i),l=new xu(r.texture.repeat,r.texture.offset),u=new J(r.crop?1:0),c=new Pe(r.projection??0),d=new Pe(["x","y","z"].indexOf(r.axis)??0),p=new Pe(r.side??0),f=new rt(r.size?new jr(r.size[0],r.size[1]):new jr(100,100)),h=new J(r.blending??0),m=new J(wn(r.alpha,o)),y=new Pe(r.mode??0),g=new st(r.isMask??!1),b=new vn(a,s,u,c,d,p,f,h,l,m,y,g),S=new Re(b.calpha,"f");return new Ke(t,e,r,{texture:a,textureSize:s,crop:u,projection:c,axis:d,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:g},b,y,S,g,o)}else if(r.type==="matcap"){let i=o.image(r.texture.image),a=new Qn(i,r.texture.wrapping),s=new J(wn(r.alpha,o)),l=new Pe(r.mode??0),u=new st(r.isMask??!1),c=new ka(a,s,l,u),d=new Re(c.calpha,"f");return new Ke(t,e,r,{texture:a,alpha:s,mode:l,isMask:u},c,l,d,u,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Rt(new po(...r.offset)),a=new J(r.scale??10),s=new J(r.intensity??8),l=new J(r.movement??1),u=new Pe(r.noiseType??0),c=new Pe(r.voronoiStyle??0),d=new J(r.smoothness??.5),p=new J(r.seed??0),f=new J(r.highCut??1),h=new J(r.lowCut??0),m=new Pe(r.quality??1),y=new $a(s,l,i,c,d,p,f,h,m,a,u);return new al(t,e,r,{offset:i,scale:a,intensity:s,movement:l,noiseType:u,voronoiStyle:c,smoothness:d,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return II(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):Qx(o.props,r.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?gf(o.props,r.shared,this):!0;return!1}dispose(){if(TI(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof pr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},Ke=class extends fo{constructor(e,r,o,i,a,s,l,u,c){super(e,r,o,i,c);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=u}},al=class extends fo{constructor(e,r,o,i,a,s){super(e,r,o,i,s);this.position=a}},Wt=class extends fo{constructor(e,r,o,i,a,s){super(e,r,o,a,s);this.node=i}static createLigherLayer(e,r,o,i){let a,s=new J(wn(o.alpha,i)),l=new Pe(o.mode),u=new J(o.bumpMapIntensity),c=new J(wn(o.alphaOverride,i)),d;if(!o.visible)a=new ko,d={};else if(o.category==="lambert"){a=new rl;let p=new ze(i.color(o.emissive)??0),f=new st(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new il;let p=new J(o.shininess??30),f=new ze(i.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new nl;let p=new J(o.roughness??.3),f=new J(o.metalness??0),h=new J(o.reflectivity??.5),m=new st(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new ol;let p=new J(o.shininess??30),f=new ze(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new st(o.occlusion??!0);d={shininess:p,specular:f,occlusion:h},a.shininess=p,a.specular=f,a.occlusion=h}return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=u,a.alphaOverride=c,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new Wt(e,r,o,a,d,i)}get category(){return this.node.category}};function TI(n){let t=n instanceof fo?n.type:n;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function vr(n){return{alpha:new J(n.alpha??1),mode:new Pe(n.mode??0),isMask:new st(n.isMask??!1)}}function MI(n,t,e,r,o){switch(n.type){case"color":{let i=new ze(r.color??dt),a=vr(r),s=new Kn(i,a.alpha),l=new Re(s.calpha,"f");return new Ke(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new ze(r.color??16777215),a=new J(r.bias??.1),s=new J(r.scale??1),l=new J(r.intensity??2),u=new J(r.factor??1),c=vr(r),d=new el(i,a,s,l,u,c.alpha,c.mode,c.isMask),p=new Re(d.calpha,"f");return new Ke(t,e,n,{color:i,bias:a,scale:s,intensity:l,factor:u,...c},d,c.mode,p,c.isMask,o)}case"rainbow":{let i=new J(r.filmThickness??30),a=new J(r.movement??0),s=new Rt(r.wavelengths??new po(0,0,0)),l=new J(r.noiseStrength??0),u=new J(r.noiseScale??1),c=new Rt(r.offset??new po(0,0,0)),d=vr(r),p=new Ha(i,a,s,l,u,c,d.alpha,d.isMask),f=new Re(p.calpha,"f");return new Ke(t,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:u,offset:c,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let i=new J(r.thickness??10),a=new J(r.ior??1.5),s=new J(r.roughness??.5),l=Se.transmissionSize,u=Se.transmissionRenderTarget,c=Se.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new rt(p/d,1):new rt(1,d/p),h=vr(r),m=new Wa(i,a,s,l,u,c,f,h.alpha),y=new Re(m.calpha,"f");return new Ke(t,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new Pe(r.positioning??0),a;r.colors?a=new kr(r.colors.length,r.colors):(a=new kr(10,new Xa(0,0,0,1)),a.value[1]=new Xa(1,1,1,1));let s;r.steps?s=new Gr(r.steps.length,r.steps):(s=new Gr(10,1),s.value[0]=0);let l=new Rt(r.source??new po(0,0,0)),u=new st(r.isWorldSpace??!0),c=new J(r.noiseStrength??0),d=new J(r.noiseScale??1),p=new er(r.shadowColor),f=new Rt(r.offset??new po(0,0,0)),h=vr(r),m=new qa(i,a,s,l,u,c,d,p,f,h.alpha),y=new Re(m.calpha,"f");return new Ke(t,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:u,noiseStrength:c,noiseScale:d,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let i=new ze(r.outlineColor??16777215),a=new ze(r.contourColor??16777215),s=new J(r.outlineWidth??.1),l=new J(r.contourWidth??.1),u=new J(r.outlineThreshold??.1),c=new J(r.contourThreshold??.1),d=new J(r.outlineSmoothing??.1),p=new J(r.contourFrequency??.1),f=new Rt(r.contourDirection??new po(0,1,0)),h=new st(r.positionalLines??!1),m=new st(r.compensation??!0),y=Se.normalRenderTarget,g=Se.normalRenderTargetDepth,b=Se.pixelRatioNode,S=Se.resolution,w=vr(r),v=new ja(i,a,s,l,u,c,d,p,f,h,m,S,y,g,b,w.alpha),_=new Re(v.calpha,"f");return new Ke(t,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:u,contourThreshold:c,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...w},v,w.mode,_,w.isMask,o)}case"depth":{let i=new Pe(r.gradientType??0),a=new st(r.smooth??!1),s=new J(r.near??50),l=new J(r.far??200),u=new J(r.isVector??1),c=new J(r.isWorldSpace??0),d=new Rt(r.origin??new po),p=new Rt(r.direction??new po),f;r.colors?f=new kr(r.colors.length,r.colors):(f=new kr(2,new Xa(0,0,0,1)),f.value[1]=new Xa(1,1,1,1));let h;r.steps?h=new Gr(r.steps.length,r.steps):(h=new Gr(2,1),h.value[0]=0);let m=vr(r),y=new za(i,a,s,l,u,c,d,p,f,h,m.alpha,m.isMask),g=new Re(y.calpha,"f");return new Ke(t,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:u,isWorldSpace:c,origin:d,direction:p,colors:f,steps:h,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new J(r.scale??1),a=new Rt(r.size??new po(100,100,100)),s=new J(r.move??1),l=new rt(r.fA??new jr(1.7,9.2)),u=new rt(r.fB??new jr(8.3,2.8)),c=new rt(r.distortion??new jr(1,1)),d=new er(r.colorA),p=new er(r.colorB),f=new er(r.colorC),h=new er(r.colorD),m=new Pe(r.noiseType??0),y=new Pe(r.voronoiStyle??0),g=new J(r.highCut??1),b=new J(r.lowCut??0),S=new J(r.smoothness??.5),w=new J(r.seed??.5),v=new Pe(r.quality??1),_=vr(r),A=new Fa(i,a,s,l,u,c,d,p,f,h,_.alpha,m,_.isMask,y,g,b,S,w,v),x=new Re(A.calpha,"f");return new Ke(t,e,n,{scale:i,size:a,move:s,fA:l,fB:u,distortion:c,colorA:d,colorB:p,colorC:f,colorD:h,noiseType:m,..._,voronoiStyle:y,highCut:g,lowCut:b,smoothness:S,seed:w,quality:v},A,_.mode,x,_.isMask,o)}case"normal":{let i=new Rt(r.cnormal??new po(1,1,1)),a=vr(r),s=new La(i,a.alpha),l=new Re(s.calpha,"f");return new Ke(t,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Pe(r.gradientType??0),a=new st(r.smooth??!1),s;r.colors?s=new kr(r.colors.length,r.colors):(s=new kr(10,new Xa(0,0,0,1)),s.value[1]=new Xa(1,1,1,1));let l;r.steps?l=new Gr(r.steps.length,r.steps):(l=new Gr(10,1),l.value[0]=0);let u=new rt(r.offset??new jr(0,0)),c=new rt(r.morph??new jr(0,0)),d=new J(r.angle??0),p=vr(r),f=new Ga(i,a,s,l,u,c,d,p.alpha,p.isMask),h=new Re(f.calpha,"f");return new Ke(t,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:u,morph:c,angle:d,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let i=new Pe(r.style??0),a=new Pe(r.projection??0),s=new Pe(["x","y","z"].indexOf(r.axis)??0),l=new J(r.blending??0),u=new rt(r.offset??new jr(0,0)),c=new er(r.colorA),d=new er(r.colorB),p=new rt(r.frequency??new jr(10,10)),f=new J(r.size??.5),h=new J(r.variation??0),m=new J(r.smoothness??.5),y=new J(r.zigzag??0),g=new J(r.rotation??0),b=new rt(r.vertical??new jr(0,1)),S=new rt(r.horizontal??new jr(0,1)),w=new Pe(r.sides??6),v=vr(r),_=new Ua(i,a,s,l,u,c,d,p,f,h,m,y,g,b,S,w,v.alpha,v.isMask),A=new Re(_.calpha,"f");return new Ke(t,e,n,{style:i,projection:a,axis:s,blending:l,offset:u,colorA:c,colorB:d,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:g,vertical:b,horizontal:S,sides:w,...v},_,v.mode,A,v.isMask,o)}default:{let i=new ze(1,0,0,1),a=vr(r),s=new Kn(i,a.alpha),l=new Re(s.calpha,"f");return new Ke(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function II(n,t,e,r){let o=Xx(e,r);return MI(e,n,t,o,r)}function xf(n,t,e,r){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=wn(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=t.uniforms[`f${t.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function _u(n,t){let e=0,r=n.layers.find(o=>o.data.type==="light");if(r){let o=r.data,i=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(t.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,u=t.color(o.data.colorD).a,c=Math.min(a,Math.min(s,Math.min(l,u)));c<1&&(i=c)}e+=(1-e)*i}}return e<1}var rr=class extends NI{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Au=class extends rr{constructor(e,r,o,i){super();this.flatShading=e;this.side=r;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o){return this.root.getFlavor(e,r,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Jn=class extends rr{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,r)}get nodeMaterial(){return this}getFlavor(e,r,o){let i=o?6:(e?3:0)+r;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Au(e,r,o,this),this.flavors[i]=a,a.flatShading=e,a.side=r,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r,o=!1){(this.data!==e||o)&&this.reset0(e,r)}reset0(e,r){this.data=e;let o=e.layers??Bt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>fo.create(this.layerIdGen++,i.id,i.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=_u(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=_u(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=_u(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)))):s.setValue(a,r))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(r=>r instanceof Wt),this.lightLayer===void 0&&(this.lightLayer=new Wt(0,"",{...ht.defaultData("light","phong"),visible:!1},new ko,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Wt);if(!e)return;let r=e.data,o=r.bumpMap,i=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof Ke&&s.color instanceof vn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(r!==void 0?this.data=r:r=this.data,this.transparent=_u(r,o.shared),e.path[0]==="layers"){this.data=r;let i=o.shared,a=e.path[1];if(a===void 0){if(this.layers.reverse(),e.type===4){let s=fo.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,s),o.scene.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene.markNeedsUpdateRendererDirty();else if(e.type===6){let s=this.layers.findIndex(u=>u.uuid===e.id),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate(o.shared)}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),u;if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?u={...e.props,alpha:wn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:u={...e.props,alphaOverride:wn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...u?{props:u}:{},path:e.path.slice(2)},l,o)){let d=fo.create(this.layerIdGen++,a,l,i);this.layers.splice(this.layers.findIndex(p=>p.uuid===a),1,d),this.onUpdate(o.shared)}}}}else this.reset(r,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof Ke?r.color.mask=void 0:r instanceof Wt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof Ke&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Wt?i.node.mask=new It(r.color,r.alpha,It.MUL):i instanceof Ke&&(i.isMask.value||(i.color.mask=new It(r.color,r.alpha,It.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof Ke),r=this.layers.findIndex(o=>o instanceof Wt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let a=this.layers[i];if(a instanceof Ke){if(a.isMask.value)continue;o=new Ba(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Re("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Wt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof Ke){if(i.isMask.value)continue;e=new Ba(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 al);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new It(r,e[o].position,It.ADD),r=new It(r,new J(.5).setReadonly(!0),It.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=a}}computeCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.visible?r.category.toUpperCase():"Basic"}"`;else{let o=(mf[r.type]??[]).map(u=>r[u]),i=(yf[r.type]??[]).map(u=>r[u]?.length??0),a=[...o,...i],s="isMask"in r&&r.isMask,l=`"${r.type}-${r.visible}-${s}"`;a.length?e+=`[${l}, "${a.join('","')}"],`:e+=l}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new Da;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof Ke){let r=e.params.texture;if(r instanceof Qn&&!r.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(rr.prototype,{properties:{get:function(){return this.fragment.properties}}});var ei=class extends Jn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var eb=Ft(Kx());var Zx=new Map;function Jx(n){if(typeof n=="string")return n;let t=Zx.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},Zx.set(n,t)),t.url}var ti=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof t=="string"?i={src:t}:i={src:Jx(t),format:"wav"},this.sound=new eb.Howl(i),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as DI,Vector2 as ri,Path as tb,Shape as EI,ShapeUtils as BI,Color as LI}from"three";var Ou=class{constructor(){this.type="ShapePath";this.color=new LI;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new tb,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,i,a){return this.currentPath?.bezierCurveTo(t,e,r,o,i,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,g,b){let S=m.x,w=y.x,v=g.x,_=b.x,A=m.y,x=y.y,T=g.y,C=b.y,P=(_-v)*(A-T)-(C-T)*(S-v),O=(w-S)*(A-T)-(x-A)*(S-v),M=(C-T)*(w-S)-(_-v)*(x-A),I=P/M,N=O/M;if(M===0&&P!==0||I<=0||I>=1||N<0||N>1)return null;if(P===0&&M===0){for(let B=0;B<2;B++)if(i(B===0?g:b,m,y),r.loc===e.ORIGIN){let D=B===0?g:b;return{x:D.x,y:D.y,t:r.t}}else if(r.loc===e.BETWEEN){let D=+(S+r.t*(w-S)).toPrecision(10),G=+(A+r.t*(x-A)).toPrecision(10);return{x:D,y:G,t:r.t}}return null}else{for(let G=0;G<2;G++)if(i(G===0?g:b,m,y),r.loc===e.ORIGIN){let L=G===0?g:b;return{x:L.x,y:L.y,t:r.t}}let B=+(S+I*(w-S)).toPrecision(10),D=+(A+I*(x-A)).toPrecision(10);return{x:B,y:D,t:I}}}function i(m,y,g){let b=g.x-y.x,S=g.y-y.y,w=m.x-y.x,v=m.y-y.y,_=b*v-w*S;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===g.x&&m.y===g.y){r.loc=e.DESTINATION,r.t=1;return}if(_<-Number.EPSILON){r.loc=e.LEFT;return}if(_>Number.EPSILON){r.loc=e.RIGHT;return}if(b*w<0||S*v<0){r.loc=e.BEHIND;return}if(Math.sqrt(b*b+S*S)<Math.sqrt(w*w+v*v)){r.loc=e.BEYOND;return}let A;b!==0?A=w/b:A=v/S,r.loc=e.BETWEEN,r.t=A}function a(m,y){let g=[],b=[];for(let S=1;S<m.length;S++){let w=m[S-1],v=m[S];for(let _=1;_<y.length;_++){let A=y[_-1],x=y[_],T=o(w,v,A,x);T!==null&&g.find(C=>C.t<=T.t+Number.EPSILON&&C.t>=T.t-Number.EPSILON)===void 0&&(g.push(T),b.push(new ri(T.x,T.y)))}}return b}function s(m,y,g){let b=new ri;y.getCenter(b);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(b)&&a(m,w.points).forEach(_=>{S.push({identifier:w.identifier,isCW:w.isCW,point:_})})}),S.sort((w,v)=>w.point.x-v.point.x),S}function l(m,y,g,b,S){(S==null||S==="")&&(S="nonzero");let w=new ri;m.boundingBox.getCenter(w);let v=[new ri(g,w.y),new ri(b,w.y)],_=s(v,m.boundingBox,y);_.sort((O,M)=>O.point.x-M.point.x);let A=[],x=[];_.forEach(O=>{O.identifier===m.identifier?A.push(O):x.push(O)});let T=A[0].point.x,C=[],P=0;for(;P<x.length&&x[P].point.x<T;)C.length>0&&C[C.length-1]===x[P].identifier?C.pop():C.push(x[P].identifier),P++;if(C.push(m.identifier),S==="evenodd"){let O=C.length%2===0,M=C[C.length-2];return{identifier:m.identifier,isHole:O,for:M}}else if(S==="nonzero"){let O=!0,M=null,I=null;for(let N=0;N<C.length;N++){let B=C[N];y[B]&&(O?(I=y[B].isCW,O=!1,M=B):I!==y[B].isCW&&(I=y[B].isCW,O=!0))}return{identifier:m.identifier,isHole:O,for:M}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let u=0,c=999999999,d=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,b=999999999,S=-999999999,w=999999999;for(let v=0;v<y.length;v++){let _=y[v];_.y>g&&(g=_.y),_.y<b&&(b=_.y),_.x>S&&(S=_.x),_.x<w&&(w=_.x)}d<=S&&(d=S+1),c>=w&&(c=w-1),y.length&&p.push({curves:m.curves,points:y,isCW:BI.isClockWise(y),identifier:u++,boundingBox:new DI(new ri(w,b),new ri(S,g))})});let f=p.map(m=>l(m,p,c,d,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let g=new EI;g.curves=m.curves,f.filter(S=>S?.isHole&&S.for===m.identifier).forEach(S=>{if(S){let w=p[S.identifier],v=new tb;v.curves=w.curves,g.holes.push(v)}}),h.push(g)}}),h}};var bf=!1,ob,vf=new Promise(n=>{ob=n}),rb=!1;var Cu;function nb(){if(bf=!0,rb)return;if(Cu)return Cu;async function n(){let e=await import("./opentype.js");ob(e),rb=!0}return Cu=n(),Cu}var sl=class{async load(t,e,r=()=>{}){let{load:o}=await vf;o(t,(i,a)=>{i||!a?r(i??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await vf;try{let o=e(t),i=new r,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function RI(n){return await(await fetch(n)).arrayBuffer()}var VI=new sl;async function Sf(n){let t,e,r=!1;if(n.url?(t=await RI(n.url),e=n.url,r=n.url.startsWith("/")):n.data&&(t=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),t)if(bf){let o=await VI.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as zI,LineCurve as GI,QuadraticBezierCurve as kI}from"three";function FI(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var Tu=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=Sf(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=Sf(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=r.length===i.length;for(let u=0;u<r.length;u++){let c=r[u].index,d=String.fromCharCode(r[u].unicode),p=i[s];if(FI(c,p)||l)a.push({char:d,index:c,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,h="",m=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===c&&(g=!0),s>e.length&&(g=!0);a.push({char:d,index:c,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e){if(!this._isLoaded)return;let r=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=t.map(b=>this.getTextWidth(b,e)),s=e.width,l=this.getCharWidth(`
2237
2237
  `,e),u=e.horizontalAlign===1?l:0,c=this.computeSpaceWidthForLine(t,0,e),d=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,t[0],l),p=this.getLineInitialOffsetY(i,t.length,e.height,o,e.verticalAlign),f=[],h=t.map(b=>[]),m=t.map(b=>[]),y;for(let b=0;b<t.length;b++){let S=t[b],w={features:{liga:!0}},v=[];try{v=r.stringToGlyphs(S,w)}catch(A){console.warn(A)}d=this.getLineInitialOffsetX(a[b],s,e.horizontalAlign,S,l);let _=[];try{_=this.reverseLigaturesTable(r,S,v)}catch(A){console.warn(A)}c=this.computeSpaceWidthForLine(t,b,e);for(let A=0;A<v.length;A++){let x=v[A],T=x.index===0?`
2238
2238
  `:x.unicode?String.fromCharCode(x.unicode):void 0,C=_[A],P=0,O=0;A===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(O=-x.leftSideBearing*o),y&&(P=r.getKerningValue(x,y)*o),d+=O+P;let M=0;if(T===`
2239
2239
  `)M=u;else if(T===" ")M=c;else{let I=this.createPath(x,o,d,p,e);I&&(M=I.offsetX-(P+O),f.push(I.path))}if(C.replacements.length===1)m[b].push([d,p]),h[b].push(M);else{let I=C.replacements.map(G=>(r.glyphs.get(G).advanceWidth??0)*o),N=I.reduce((G,L)=>G+=L,0),B=I.map(G=>G/N),D=d;for(let G=0;G<B.length;G++){let L=M*B[G];m[b].push([D,p]),h[b].push(L),D+=L}}d+=M,y=x}p-=i}let g=[];for(let b=0,S=f.length;b<S;b++)g.push(...f[b].toShapes());return{shapes:g,charWidths:h,lineWidths:a,charCoords:m}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,r,o,i){return(r===3||r===2)&&o.indexOf(`
2240
- `)>=0&&(t-=i),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,i){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,u=-this.ascender*o-l/2;return i===3?-(r-a-u):i===2?-(r*.5-a*.5-u):u}createPath(t,e,r,o,i){let a=t.getPath(r,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new Ou,l=(t.advanceWidth??1)*e;if(t)for(let u of a.commands){let c=s.currentPath?.currentPoint;if(!(c&&u.type!=="Z"&&c.x===u.x&&-c.y===u.y))switch(u.type){case"M":s.moveTo(u.x,-u.y);break;case"L":s.lineTo(u.x,-u.y);break;case"Q":s.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":s.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return s.subPaths.forEach(u=>{let c=jI(u.curves);c!==void 0&&u.currentPoint.distanceTo(c)>0&&u.lineTo(c.x,c.y)}),{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r){let o=this.getCharWidth(" ",r),i=t[e];if(i){let a=this.countSpaces(i.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&a){let s=r.width,l=this.getTextWidth(i,r);return(s-(l-a*o))/a}}return o}countSpaces(t){return(t.match(/ /g)||[]).length}};function jI(n){if(n.length){let t=n[0];if(t instanceof GI)return t.v1;if(t instanceof zI||t instanceof kI)return t.v0}}var wf=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},ll=class extends wf{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let i=Go(e,r,this.flatShading,o);return i.computeBoundingSphere(),i}};var ib={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as ab}from"three";var _f=class extends Su{constructor(e){super();this.shared=e}create(e){return new $a(e,this.shared)}},ri=class{constructor(t,e={}){this.data=t;this.geometryCache=new ll(!0);this.geometryCache2=new ll(!1);this.imageHolderCache=new _f(this);this.thisContext={scene:ib,shared:this};this.deletedMaterial=new Jn(Bt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new pr(ea.emptyImage,this);this.deletedVideo=new pr(Wi.defaultVideo,this);this.materials={};this.images={};this.canvases={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.variables={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.videos)for(let[r,o]of Object.entries(e.videos))this.addVideo(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o);if(e.particles)for(let[r,o]of Object.entries(e.particles))this.addParticle(r,o);this.reset(t)}setRequestRender(t){this._requestRender=t}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1){this.resetLib(t.lib);for(let{id:r,data:o}of t.variables)this.addVariableHolder(r,o),e&&this.updateVariableHolder(r,o);for(let[r,o]of Object.entries(t.images))this.addImage(r,o);for(let[r,o]of Object.entries(t.videos))this.addVideo(r,o);for(let[r,o]of Object.entries(t.colors))this.addColor(r,o);for(let[r,o]of Object.entries(t.materials))this.addMaterial(r,o);for(let[r,o]of Object.entries(t.audios))this.addAudio(r,o);for(let[r,o]of Object.entries(t.particles))this.addParticle(r,o);for(let[r,o]of Object.entries(t.fonts))this.addFont(r,o)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new Jn(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new Zn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new pr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addCanvas(t,e){return this.canvases[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.canvases[t].updateSrc(e),!0):(this.canvases[t]=new pr(e,this),!1)}canvas(t){return this.canvases[t]}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new pr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Sn(e.r,e.g,e.b,e.a):this.colors[t]=new Sn(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new St(0,0,0,0))}else return"a"in t?new St(t.r,t.g,t.b,t.a):new St(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof ei)return e;{let r=new ei({src:e.data});return this.audios[t]=r,r}}addParticle(t,e){this.particles[t]=e}getParticle(t){return this.particles[t]}deleteParticle(t){this.particles[t]&&delete this.particles[t]}deleteAudio(t){let e=this.audios[t];e&&(e instanceof ei&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new Tu(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof ei&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){return this.variables[t]===void 0?(this.variables[t]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0):(this.variables[t].value=e.value,!1)}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e;let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let i=this.variables[t].locations.length-1;i>=0;i--){let a=this.variables[t].locations[i];if(a[0]==="material"){let s=a[1],l=r,u={scene:o,shared:this},c=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(c,l,u)});let d=this.materials[s];d&&d.onVariableUpdate(c,l,u)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(i,1);continue}if(a[1]!=="geometry"&&a[1]!=="particles"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"?s[a[a.length-1]]=r*ab.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(r,a),Ce.is(s)){if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let l=s;s.component&&(l=s.component);let u=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(u.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.instances.forEach(c=>{let d=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(d.geometry),c.createGeometryDelayed(this.entityOpContext),c.onVariableUpdate(!0)})}}}}return!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=ab.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],i=o.locations?.findIndex(a=>Ze.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;r=this.variables[r].value}while(typeof r=="string");return e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r}else return t}getVariables(){return this.variables}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.particles))this.addParticle(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===1&&t.type===1?this.addParticle(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){this.data=e,t.path[0]==="images"?t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===2&&t.type===0?t.props.data&&this.addParticle(t.path[1],e.particles[t.path[1]]):t.path.length===1&&t.type===1?this.addParticle(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(Je.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r}):t.path[0]==="fonts"?t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===2&&t.type===0&&"value"in t.props?this.updateVariable(t.path[1],t.props.value):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id):t.path[0]==="lib"&&this.updateLibByOp(Je.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),i={...this.data.fonts[t],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}},sb=new ri(xr.emptyData());var or=class extends bt{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Hy(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(i)]=s}else if(Oe(e.path,["material"])&&this.material instanceof rr)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(Je.drop(e,1),r.material,o);else if(Oe(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in r&&i<this.material.length){let a=r.materials[i];typeof a!="string"&&this.material[i].updateByOp(Je.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),r.scene.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>r.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&Cl(this.material).forEach(e=>{e instanceof rr&&(e instanceof Jn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as HI,Matrix4 as Af,Vector3 as pb,Vector4 as Pf}from"three";var lb=new pb,cb=new Pf,ub=new Pf,qI=new pb,db=new Af,ot=class extends or{constructor(e,r,o){super(e,r);this.data=r;this.isSkinnedMesh=!1;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.bindMode=r.bindMode,this.bindMatrix=new Af().fromArray(r.bindMatrix),this.bindMatrixInverse=new Af)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof HI&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof ri){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Ts.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ts.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Oe(e.path,["geometry"])&&this.updateByPatchedOpGeometry(Je.drop(e,1),r.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let c={...this.data.geometry,...i};this.localGeometry=Go(c,r,this.data.flatShading,this)}let a,s,l;i.scaleBaked?[a,s,l]=i.scaleBaked:{width:a,height:s,depth:l}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Xs(this.localGeometry.attributes,a/u.sxPrev,s/u.syPrev,l/u.szPrev),u.sxPrev=a,u.syPrev=s,u.szPrev=l}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Go(i,r,this.data.flatShading,this)}}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof pt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r),super.updateState(e,r)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,this.isSkinnedMesh=!0,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new Pf,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){r.fromBufferAttribute(o,i);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(i,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;cb.fromBufferAttribute(i.attributes.skinIndex,e),ub.fromBufferAttribute(i.attributes.skinWeight,e),lb.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=ub.getComponent(a);if(s!==0){let l=cb.getComponent(a);db.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(qI.copy(lb).applyMatrix4(db),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function $I(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let t=new Map,e=n.geometry.attributes,r=e.position.array,o=e.normal.array,i=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new Cf(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Cf})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(i[a]=l.x,i[a+1]=l.y,i[a+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new fb(i,3))}function YI(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=new Cf;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),r[i]=o.x,r[i+1]=o.y,r[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new fb(r,3))}function Xa(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof rr)||n.material.getLayersOfType("outline").length===0)return;n instanceof ot&&n.is2DAndNoDepth?YI(n):$I(n)}function Qa(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Of.seededRandom(o),Of.seededRandom(o+1e4),Of.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=i[a%3];n.geometry.setAttribute("randomColor",new WI(r,3))}var ZI;wa.then(n=>{ZI=n});var ho=new XI,cl=new KI;function mb(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var oi=class extends ot{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new QI;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=pt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,Xa(this),Qa(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){pt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&pt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=pt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=pt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,bt.prototype.raycast.call(this,e,r),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new hb,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;ho.setFromBufferAttribute(r),ho.getCenter(o),e.boundingSphere.radius=o.distanceTo(ho.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ho.getSize(cl),this.hasNonUniformScale&&cl.divide(this.scale);let i={width:cl.x,height:cl.y,depth:cl.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let r=this.originalGeometry;ho.min.set(e[0],e[2],e[4]),ho.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(ho.min.applyMatrix4(this.shearScaleInv),ho.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new hb);let o=r.boundingSphere.center;ho.getCenter(o),r.boundingSphere.radius=o.distanceTo(ho.max)}freeSubdivPointer(){this.subdivPointer&&(pt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as JI,Vector3 as ii}from"three";var yb=-1,eN=1,gb={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},xb={polygon_center:0,edge:1,vertex:2},ul=(n,t)=>(e,r)=>!t||e===0||n===0?0:n*r/100,ve=(n,t)=>{let e=Math.abs(t),r=e*-1;return(n-yb)*(e-r)/(eN-yb)+r};function bb(n){let t=[],e={};for(var r=0,o=n.length;r<o;r++){var i=JSON.stringify(n[r].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(t.push(n[r]),e[i]=!0)}return t}var tN=new ii,Mu=new ii,rN=new ii,oN=new ii;function Ka(n,t){let e=rN.fromArray(n),r=oN.fromArray(t);Mu.copy(r).sub(e);let o=Mu.length();return Mu.normalize().multiplyScalar(o*.5),tN.copy(e).add(Mu).toArray()}var Sr=new JI,Iu=new ii,Nu=new ii,ni=new ii;function vb(n){let t=[];for(let e=0;e<=n.index.count;e++)if(Iu.fromArray(n.index.array,e*3),Sr.setFromAttributeAndIndices(n.attributes.position,Iu.x,Iu.y,Iu.z),Sr.getNormal(Nu),Sr.getMidpoint(ni),!(isNaN(ni.x)||isNaN(ni.y)||isNaN(ni.z))){let{a:r,b:o,c:i}=Sr,a=r.toArray(),s=o.toArray(),l=i.toArray(),u=r.distanceTo(o),c=o.distanceTo(i),d=i.distanceTo(r),p=Ka(a,s),f=Ka(s,l),h=Ka(l,a),m=[u,c,d],y=Math.max(...m),g=m.filter(w=>Math.round(w)===Math.round(y)).length>1,b=[],S=Sr.getMidpoint(ni).toArray();y===u&&!g&&(b=[f,h,h],S=p),y===c&&!g&&(b=[p,h,h],S=f),y===d&&!g&&(b=[p,f,f],S=h),g&&(b=[p,f,h]),t.push({vertices:[a,s,l],faceCenters:b,midpoint:S,norm:Sr.getNormal(Nu).toArray()})}return t}function Sb(n){let t=[],{position:e}=n.attributes;for(let r=0;r<e.count;r++){Sr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Sr.getNormal(Nu),Sr.getMidpoint(ni);let o=Sr.a.toArray(),i=Sr.b.toArray(),a=Sr.c.toArray();t.push({vertices:[o,i,a],faceCenters:[Ka(o,i),Ka(i,a),Ka(a,o)],midpoint:ni.toArray(),norm:Nu.toArray()})}return t}var nN=4,iN=.5,Tf=n=>.5*(1-Math.cos(n*Math.PI)),Mf=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),i=Math.floor(e),a=Math.floor(r),s=t-o,l=e-i,u=r-a,c,d,p=0,f=.5,h,m,y;for(let g=0;g<nN;g++){let b=o+(i<<4)+(a<<8);c=Tf(s),d=Tf(l),h=this.perlin[b&4095],h+=c*(this.perlin[b+1&4095]-h),m=this.perlin[b+16&4095],m+=c*(this.perlin[b+16+1&4095]-m),h+=d*(m-h),b+=256,m=this.perlin[b&4095],m+=c*(this.perlin[b+1&4095]-m),y=this.perlin[b+16&4095],y+=c*(this.perlin[b+16+1&4095]-y),m+=d*(y-m),h+=Tf(u)*(m-h),p+=h*f,f*=iN,o<<=1,s*=2,i<<=1,l*=2,a<<=1,u*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),u>=1&&(a++,u--)}return p}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},wb=Mf;import{Vector3 as aN,Matrix4 as sN,Ray as lN}from"three";var _b=new aN,Ab=new sN,Pb=new lN;function Ob(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var Za=class extends ot{constructor(e,r,o){super(e,r,o);this.data=r}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Ab.copy(o).invert(),Pb.copy(e.ray).applyMatrix4(Ab),Pb.intersectBox(this.singleBBox,_b))){let i=_b.applyMatrix4(o),a=e.ray.origin.distanceTo(i);r.push({distance:a,point:i.clone(),object:this})}}};var $t=1e-4,mo,Ib,Nb,Db,Tb=new fr,Mb=new fr;wa.then(n=>{mo=n,Ib=[mo.get_face_center,mo.get_edge_midpoint,mo.get_vertex_position],Nb=[mo.get_face_normal,mo.get_edge_normal,mo.get_vertex_normal],Db=[mo.face_count,mo.edge_count,mo.vertex_count]});var uN=new si,dN=new si,_n=new fr,ai=new fr,dl=new fr,Nf=new fr,pN=new fr,fN=new fr;var Uo=new wb,es=class extends na(cN){constructor(e,r){super();this.parameters=r;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let r of this.children)r instanceof Lo&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof Lo&&r.object===e&&(r.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(r=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,a=this.children.length;i<a;++i)this.remove(this.children[0]);let o=this.children;if(o.length===r)return;if(o.length<r)for(let i=0,a=r-o.length;i<a;++i){let s=new Lo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-r;i<a;++i)this.remove(o[i])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,i=r-this.children.length;o<i;++o){let a=new Lo(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-r;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let r=e.radial,o=r.start*Cb.DEG2RAD,i=r.end*Cb.DEG2RAD,a=o-i,s=new If(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new fr(0,0,1);break;case"y":l=new fr(0,1,0);break;default:case"x":l=new fr(1,0,0);break}let u=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,c=u.noiseType==="perlin";Uo.noiseSeed(u.seed);let d=kc((0,Ja.default)(u.seed)),p=ul(u.strength,this.parameters.randomness);for(let[f,h]of this.children.entries()){let m=f*(u.freqScale/10)+u.movement,y=c?Uo.noise(m):d(m,m),g=f+1;h.scale.x=r.scale[0]+p(g,ve(y,u.scale[0]))||$t,h.scale.y=r.scale[1]+p(g,ve(y,u.scale[1]))||$t,h.scale.z=r.scale[2]+p(g,ve(y,u.scale[2]))||$t,h.position.setScalar(0);let b=a/e.count*f-o;switch(r.axis){case"x":h.rotation.set(0,b,0);break;case"y":h.rotation.set(0,0,b);break;case"z":h.rotation.set(b,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0]+p(g,ve(y,u.position[0])),h.position.y+=r.position[1]+p(g,ve(y,u.position[1])),h.position.z+=r.position[2]+p(g,ve(y,u.position[2]));let S=p(g,ve(y,u.rotation[0])),w=p(g,ve(y,u.rotation[1])),v=p(g,ve(y,u.rotation[2]));r.alignment===!0?(h.rotation.x+=s.x+S,h.rotation.y+=s.y+w,h.rotation.z+=s.z+v):h.rotation.set(s.x+S,s.y+w,s.z+v)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new If(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Uo.noiseSeed(i.seed);let s=kc((0,Ja.default)(i.seed)),l=ul(i.strength,this.parameters.randomness);for(let[u,c]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=a?Uo.noise(d):s(d,d),f=u+1,h=l(f,ve(p,i.rotation[0])),m=l(f,ve(p,i.rotation[1])),y=l(f,ve(p,i.rotation[2]));c.scale.x=1+(r.scale[0]-1)*u+l(f,ve(p,i.scale[0]))||$t,c.scale.y=1+(r.scale[1]-1)*u+l(f,ve(p,i.scale[1]))||$t,c.scale.z=1+(r.scale[2]-1)*u+l(f,ve(p,i.scale[2]))||$t,c.rotation.x=o.x*u+h,c.rotation.y=o.y*u+m,c.rotation.z=o.z*u+y,c.position.x=r.position[0]*u+l(f,ve(p,i.position[0])),c.position.y=r.position[1]*u+l(f,ve(p,i.position[1])),c.position.z=r.position[2]*u+l(f,ve(p,i.position[2]))}}_updateGrid(e){let r=0,o=e.grid,i=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,a=ul(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Uo.noiseSeed(i.seed);let l=Xg((0,Ja.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new fr(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let h=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],m=s?Uo.noise(...h):l(...h),y=this.children[r++];y.scale.x=1+a(r,ve(m,i.scale[0]))||$t,y.scale.y=1+a(r,ve(m,i.scale[1]))||$t,y.scale.z=1+a(r,ve(m,i.scale[2]))||$t;let g=a(r,ve(m,i.rotation[0])),b=a(r,ve(m,i.rotation[1])),S=a(r,ve(m,i.rotation[2]));y.rotation.set(g,b,S),y.position.x=o.size[0]*d-c.x+a(r,ve(m,i.position[0])),y.position.y=o.size[1]*p-c.y+a(r,ve(m,i.position[1])),y.position.z=o.size[2]*f-c.z+a(r,ve(m,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let c=0;c<o.count[1];c++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=s?Uo.noise(...p):l(...p),h=this.children[r++];h.scale.x=1+a(r,ve(f,i.scale[0]))||$t,h.scale.y=1+a(r,ve(f,i.scale[1]))||$t,h.scale.z=1+a(r,ve(f,i.scale[2]))||$t;let m=a(r,ve(f,i.rotation[0])),y=a(r,ve(f,i.rotation[1])),g=a(r,ve(f,i.rotation[2]));h.rotation.set(m,y,g),h.position.x=o.size[0]*u+a(r,ve(f,i.position[0])),h.position.y=-o.size[1]*c+a(r,ve(f,i.position[1])),h.position.z=-o.size[2]*d+a(r,ve(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new If(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Uo.noiseSeed(i.seed);let s=kc((0,Ja.default)(i.seed)),l=ul(i.strength,this.parameters.randomness);if(!r.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Za)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),c=[],d=g=>{let b=g.length,S=g.map(_=>_[0]).reduce((_,A)=>_+A,0),w=g.map(_=>_[1]).reduce((_,A)=>_+A,0),v=g.map(_=>_[2]).reduce((_,A)=>_+A,0);return[S/b,w/b,v/b]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let b=u.filter(S=>p(g.pos[0])===p(S.pos[0])&&p(g.pos[1])===p(S.pos[1])&&p(g.pos[2])===p(S.pos[2]));b.length>1?c.push({pos:g.pos,norm:d(b.map(S=>S.norm))}):c.push(g)});let f=bb(c);if(f.length>0){let g=Math.round(f.length*r.count/100);this._updateCount(g)}else{let g=this.objectForSample.geometry.getAttribute("position");if(!g||isNaN(g.count)||g.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let h=new Fc(this.objectForSample).build(),m=gb[r.axis],y=this.children;h.setRandomGenerator((0,Ja.default)(this.object.uuid+r.seed));for(let[g,b]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?Uo.noise(S):s(S,S),v=g+1,_=l(v,ve(w,i.rotation[0])),A=l(v,ve(w,i.rotation[1])),x=l(v,ve(w,i.rotation[2]));r.spreadType==="random"?h.sample(dl,Nf):(f.length&&(dl.fromArray(f[g].pos),Nf.fromArray(f[g].norm)),this.objectForSample instanceof oi&&dl.applyMatrix4(uN.copy(this.objectForSample.matrixWorld).invert())),dl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),b.position.copy(dl),_n.fromArray(m);let T=r.align==="normal"?Nf:this.object.getWorldDirection(fN),C=ai.fromArray(r.position);ai.x+=ai.x+l(v,ve(w,i.position[0])),ai.y+=ai.y+l(v,ve(w,i.position[1])),ai.z+=ai.z+l(v,ve(w,i.position[2]));let P=Math.acos(T.dot(_n)),O=pN.crossVectors(_n,T).normalize(),M=dN.makeRotationAxis(O,P),I=T.clone().cross(this.object.up).normalize(),N=I.clone().cross(T).normalize(),B=new si().makeBasis(I,T,N),D=new fr(_n.y,_n.z,_n.x).normalize(),G=D.clone().cross(_n).normalize(),L=new si().makeBasis(D,_n,G).invert(),V=new si().multiplyMatrices(B,L);b.rotation.setFromRotationMatrix(V),C.applyMatrix4(M),b.position.add(C),b.rotation.x=b.rotation.x+o.x+_,b.rotation.y=b.rotation.y+o.y+A,b.rotation.z=b.rotation.z+o.z+x,b.scale.setScalar(1),b.scale.x=b.scale.x+r.scale[0]+l(v,ve(w,i.scale[0]))||$t,b.scale.y=b.scale.y+r.scale[1]+l(v,ve(w,i.scale[1]))||$t,b.scale.z=b.scale.z+r.scale[2]+l(v,ve(w,i.scale[2]))||$t,b.scale.multiply(this.object.scale),b.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof oi){let r=this.objectForSample,o=xb[e],i=Db[o],a=Ib[o],s=Nb[o],l=[],u=i(r.subdivPointerNew);for(let c=0;c<=u-1;c++){let d=a(r.subdivPointerNew,c),p=s(r.subdivPointerNew,c);Tb.fromArray(d).applyMatrix4(r.matrixWorld),Mb.fromArray(p),l.push({pos:Tb.toArray(),norm:Mb.toArray()})}return l}else return(this.objectForSample.geometry.index?vb(this.objectForSample.geometry):Sb(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,r){if(this.parameters=Oo(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=r.find(this.parameters.toObject.object);o instanceof bt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new si,this.hiddenMatrix=new si,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as BD,Vector3 as LD,Matrix4 as RD,Box3 as VD,MeshBasicMaterial as zD,Skeleton as GD}from"three";import{Camera as PN,OrthographicCamera as ON,PerspectiveCamera as CN,Vector3 as Hr,Object3D as Rb,Quaternion as TN,Matrix4 as MN}from"three";import{Camera as bN,LineSegments as vN,BufferGeometry as SN,LineBasicMaterial as wN,Color as Ef,Vector3 as _N,Float32BufferAttribute as Bb}from"three";import{BoxGeometry as hN}from"three";var yo=n=>{var t;return t=class extends n{},t.geometryHelper=new hN(30,30,30),t};import{Ray as mN,Sphere as yN,Matrix4 as gN,Vector3 as Ho}from"three";var Du=new mN,Df=new yN,Eb=new gN,go=(n,t,e,r,o=!1)=>{let i=t,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Df.copy(i.boundingSphere),Df.applyMatrix4(a),e.ray.intersectsSphere(Df)===!1||(Eb.copy(a).invert(),Du.copy(e.ray).applyMatrix4(Eb),i.boundingBox!==null&&Du.intersectsBox(i.boundingBox)===!1))return;let s,l,u,c,d=i.index,p=i.attributes.position,f=i.drawRange,h,m;if(o===!1){let g=Math.max(0,f.start),b=Math.min(d.count,f.start+f.count);for(h=g,m=b;h<m;h+=3)if(l=d.getX(h),u=d.getX(h+1),c=d.getX(h+2),s=y(n,e,Du,p,l,u,c),s){s.faceIndex=Math.floor(h/3),r.push(s);return}}else{let b=i.attributes.position,S=new Ho,w=new Ho,v=new Ho,_=new Ho,A=2,T=1/((n.scale.x+n.scale.y+n.scale.z)/3),C=T*T,P=Math.max(0,f.start),O=Math.min(b.count,f.start+f.count);for(let M=P,I=O-1;M<I;M+=A){if(S.fromBufferAttribute(b,M),w.fromBufferAttribute(b,M+1),Du.distanceSqToSegment(S,w,_,v)>C)continue;_.applyMatrix4(n.matrixWorld);let B=e.ray.origin.distanceTo(_);B<e.near||B>e.far||r.push({distance:B,point:v.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,b,S,w,v,_,A){let x=new Ho,T=new Ho,C=new Ho,P=new Ho,O=new Ho;if(x.fromBufferAttribute(w,v),T.fromBufferAttribute(w,_),C.fromBufferAttribute(w,A),S.intersectTriangle(x,T,C,!1,P)===null)return null;O.copy(P),O.applyMatrix4(g.matrixWorld);let I=b.ray.origin.distanceTo(O);return I<b.near||I>b.far?null:{faceIndex:1,distance:I,point:O.clone(),object:g}}};var Eu=new _N,wr=new bN,Bf=class extends vN{constructor(e){let r=new SN,o=new wN({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new Ef(15711266),u=new Ef(15711266),c=new Ef(2857471);d("n1","n2",l),d("n2","n4",l),d("n4","n3",l),d("n3","n1",l),d("f1","f2",l),d("f2","f4",l),d("f4","f3",l),d("f3","f1",l),d("n1","f1",l),d("n2","f2",l),d("n3","f3",l),d("n4","f4",l),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",c),d("u2","u3",c),d("u3","u1",c);function d(f,h,m){p(f,m),p(h,m)}function p(f,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}r.setAttribute("position",new Bb(i,3)),r.setAttribute("color",new Bb(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;wr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;Ur("n1",r,e,wr,-i,-a,s),Ur("n2",r,e,wr,i,-a,s),Ur("n3",r,e,wr,-i,a,s),Ur("n4",r,e,wr,i,a,s);let l=s;Ur("f1",r,e,wr,-i,-a,l),Ur("f2",r,e,wr,i,-a,l),Ur("f3",r,e,wr,-i,a,l),Ur("f4",r,e,wr,i,a,l);let u=l,c=.5;Ur("u1",r,e,wr,i*.7*c,a*1.1,u),Ur("u2",r,e,wr,-i*.7*c,a*1.1,u),Ur("u3",r,e,wr,0,a*(1.1+.9*c),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Ur(n,t,e,r,o,i,a){Eu.set(o,i,a).unproject(r);let s=t[n];if(s!==void 0){let l=e.getAttribute("position");for(let u=0,c=s.length;u<c;u++)l.setXYZ(s[u],Eu.x,Eu.y,Eu.z)}}var Bu=class extends yo(Bf){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){go(this.object,this.geometry,e,r,!0)}};import{Box3Helper as Lb,BoxGeometry as AN}from"three";var Lu;(t=>t.is=e=>"objectHelper"in e)(Lu||(Lu={}));var _r=(n,t)=>class extends sa(n){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Lb&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof AN?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Lb&&(i.visible=!1)}}};var Ru=790,ts=new Hr,Lf=new Hr,Rf=new TN,Vf=new Hr,pl=new Hr,zf=new Hr,qo=class extends _r(PN,Bu){constructor(e="",r={...Fn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=un.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new MN,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new ON(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new CN(45,o/i,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new Hr(e,r,o)),super.lookAt(e),this.getWorldPosition(ts),this.targetOffset=ts.distanceTo(e)}getTarget(e=new Hr){return this.getWorldDirection(Lf),this.getWorldPosition(ts),Lf.multiplyScalar(this.targetOffset),e.copy(ts).add(Lf),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(ts),ts.distanceTo(e)}updateUp(){this.getWorldQuaternion(Rf),Vf.set(0,0,1).applyQuaternion(Rf),pl.copy(Rb.DEFAULT_UP),this.isUpVectorFlipped&&pl.negate(),pl.applyQuaternion(Rf),zf.copy(Rb.DEFAULT_UP).projectOnPlane(Vf),this.angleOffsetFromUp=zf.angleTo(pl),this.angleOffsetFromUp*=zf.cross(pl).dot(Vf)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new Hr),i=e.getWorldDirection(new Hr).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Hr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Hr,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let i=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-Ru*.5*i,this.right=Ru*.5*i,this.top=Ru*.5*(1/a),this.bottom=-Ru*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,a,s):this.orthoCamera.setViewOffset(e,r,o,i,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Ri(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{MathUtils as zre}from"three";import{BufferGeometry as Vb,Matrix4 as Gf,Float32BufferAttribute as IN,Vector3 as kb}from"three";var rs=new Gf,NN=new Gf,Vu=new Gf,zb=new kb,Gb=new kb;var nr=class extends or{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Vb;this.onAfterRender=(e,r,o,i,a,s)=>{super.onAfterRender(e,r,o,i,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof nr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof bt&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){rs.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=br.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;br.transformMeshSet(a.booleanMeshSetAddress,rs),a.booleanMatrixInvOld.copy(rs).invert(),a.booleanWasTransformed=!1}else a instanceof nr&&a.needsTransformForDownstream===!0?(br.transformMeshSet(a.booleanMeshSetAddress,rs),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(br.transformMeshSet(a.booleanMeshSetAddress,NN.multiplyMatrices(rs,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(rs).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}br.hasOpenEdges(a.booleanMeshSetAddress)===!1||i===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.booleanOperationDidFail=!1):a.geometry.userData.booleanOperationDidFail="openEdges"}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new IN([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return br.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Vb,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=br.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,Xa(this),Qa(this)}dispose(){super.dispose(),this.geometry.dispose()}get recursiveBBox(){let e=super.recursiveBBox;return this.geometry.boundingSphere?.radius===-1&&(e.getCenter(this.geometry.boundingSphere.center),Vu.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(Vu),zb.copy(e.max).applyMatrix4(Vu),Gb.copy(e.min).applyMatrix4(Vu),this.geometry.boundingSphere.radius=zb.distanceTo(Gb)/2),e}};import{Light as DN}from"three";var Fb;(t=>{function n(e){return Ce.is(e)&&e instanceof DN}t.is=n})(Fb||(Fb={}));var os=(n,t)=>class extends _r(n,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var An=n=>n instanceof bt,fl=n=>n!==null&&n instanceof nr;var hl=n=>Lu.is(n);import{Group as BN}from"three";import{AxesHelper as EN}from"three";var Ar=class extends yo(EN){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){go(this.object,Ar.geometryHelper,e,r)}update(){}};var Pn=class extends _r(BN,Ar){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Group as LN}from"three";var zu=class extends _r(LN,Ar){constructor(e,r,o){super();this.super_Entity(e,r),this.context=o,this.objectHelper.update()}updateState(e,r){this.updateState_Entity(e,r)}};import{Color as r3,Fog as o3,HemisphereLight as n3}from"three";import{ShaderChunk as ml}from"three";var RN=n=>`
2240
+ `)>=0&&(t-=i),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,i){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,u=-this.ascender*o-l/2;return i===3?-(r-a-u):i===2?-(r*.5-a*.5-u):u}createPath(t,e,r,o,i){let a=t.getPath(r,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new Ou,l=(t.advanceWidth??1)*e;if(t)for(let u of a.commands){let c=s.currentPath?.currentPoint;if(!(c&&u.type!=="Z"&&c.x===u.x&&-c.y===u.y))switch(u.type){case"M":s.moveTo(u.x,-u.y);break;case"L":s.lineTo(u.x,-u.y);break;case"Q":s.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":s.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return s.subPaths.forEach(u=>{let c=jI(u.curves);c!==void 0&&u.currentPoint.distanceTo(c)>0&&u.lineTo(c.x,c.y)}),{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r){let o=this.getCharWidth(" ",r),i=t[e];if(i){let a=this.countSpaces(i.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&a){let s=r.width,l=this.getTextWidth(i,r);return(s-(l-a*o))/a}}return o}countSpaces(t){return(t.match(/ /g)||[]).length}};function jI(n){if(n.length){let t=n[0];if(t instanceof GI)return t.v1;if(t instanceof zI||t instanceof kI)return t.v0}}var wf=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},ll=class extends wf{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let i=Go(e,r,this.flatShading,o);return i.computeBoundingSphere(),i}};var ib={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as ab}from"three";var _f=class extends Su{constructor(e){super();this.shared=e}create(e){return new Ya(e,this.shared)}},oi=class{constructor(t,e={}){this.data=t;this.geometryCache=new ll(!0);this.geometryCache2=new ll(!1);this.imageHolderCache=new _f(this);this.thisContext={scene:ib,shared:this};this.deletedMaterial=new ei(Bt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new pr(ta.emptyImage,this);this.deletedVideo=new pr($i.defaultVideo,this);this.materials={};this.images={};this.canvases={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.variables={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.videos)for(let[r,o]of Object.entries(e.videos))this.addVideo(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o);if(e.particles)for(let[r,o]of Object.entries(e.particles))this.addParticle(r,o);this.reset(t)}setRequestRender(t){this._requestRender=t}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1){this.resetLib(t.lib);for(let{id:r,data:o}of t.variables)this.addVariableHolder(r,o),e&&this.updateVariableHolder(r,o);for(let[r,o]of Object.entries(t.images))this.addImage(r,o);for(let[r,o]of Object.entries(t.videos))this.addVideo(r,o);for(let[r,o]of Object.entries(t.colors))this.addColor(r,o);for(let[r,o]of Object.entries(t.materials))this.addMaterial(r,o);for(let[r,o]of Object.entries(t.audios))this.addAudio(r,o);for(let[r,o]of Object.entries(t.particles))this.addParticle(r,o);for(let[r,o]of Object.entries(t.fonts))this.addFont(r,o)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new ei(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new Jn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new pr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addCanvas(t,e){return this.canvases[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.canvases[t].updateSrc(e),!0):(this.canvases[t]=new pr(e,this),!1)}canvas(t){return this.canvases[t]}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new pr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Sn(e.r,e.g,e.b,e.a):this.colors[t]=new Sn(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new St(0,0,0,0))}else return"a"in t?new St(t.r,t.g,t.b,t.a):new St(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof ti)return e;{let r=new ti({src:e.data});return this.audios[t]=r,r}}addParticle(t,e){this.particles[t]=e}getParticle(t){return this.particles[t]}deleteParticle(t){this.particles[t]&&delete this.particles[t]}deleteAudio(t){let e=this.audios[t];e&&(e instanceof ti&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new Tu(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof ti&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){return this.variables[t]===void 0?(this.variables[t]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0):(this.variables[t].value=e.value,!1)}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e;let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let i=this.variables[t].locations.length-1;i>=0;i--){let a=this.variables[t].locations[i];if(a[0]==="material"){let s=a[1],l=r,u={scene:o,shared:this},c=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(c,l,u)});let d=this.materials[s];d&&d.onVariableUpdate(c,l,u)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(i,1);continue}if(a[1]!=="geometry"&&a[1]!=="particles"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"?s[a[a.length-1]]=r*ab.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(r,a),Ce.is(s)){if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let l=s;s.component&&(l=s.component);let u=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(u.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.instances.forEach(c=>{let d=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(d.geometry),c.createGeometryDelayed(this.entityOpContext),c.onVariableUpdate(!0)})}}}}return!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=ab.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],i=o.locations?.findIndex(a=>Ze.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;r=this.variables[r].value}while(typeof r=="string");return e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r}else return t}getVariables(){return this.variables}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.particles))this.addParticle(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===1&&t.type===1?this.addParticle(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){this.data=e,t.path[0]==="images"?t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===2&&t.type===0?t.props.data&&this.addParticle(t.path[1],e.particles[t.path[1]]):t.path.length===1&&t.type===1?this.addParticle(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(Je.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r}):t.path[0]==="fonts"?t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===2&&t.type===0&&"value"in t.props?this.updateVariable(t.path[1],t.props.value):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id):t.path[0]==="lib"&&this.updateLibByOp(Je.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),i={...this.data.fonts[t],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}},sb=new oi(xr.emptyData());var or=class extends bt{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Hy(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(i)]=s}else if(Oe(e.path,["material"])&&this.material instanceof rr)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(Je.drop(e,1),r.material,o);else if(Oe(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in r&&i<this.material.length){let a=r.materials[i];typeof a!="string"&&this.material[i].updateByOp(Je.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),r.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>r.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&Cl(this.material).forEach(e=>{e instanceof rr&&(e instanceof ei||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as HI,Matrix4 as Af,Vector3 as pb,Vector4 as Pf}from"three";var lb=new pb,cb=new Pf,ub=new Pf,qI=new pb,db=new Af,ot=class extends or{constructor(e,r,o){super(e,r);this.data=r;this.isSkinnedMesh=!1;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.bindMode=r.bindMode,this.bindMatrix=new Af().fromArray(r.bindMatrix),this.bindMatrixInverse=new Af)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof HI&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof oi){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Ts.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ts.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Oe(e.path,["geometry"])&&this.updateByPatchedOpGeometry(Je.drop(e,1),r.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let c={...this.data.geometry,...i};this.localGeometry=Go(c,r,this.data.flatShading,this)}let a,s,l;i.scaleBaked?[a,s,l]=i.scaleBaked:{width:a,height:s,depth:l}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Xs(this.localGeometry.attributes,a/u.sxPrev,s/u.syPrev,l/u.szPrev),u.sxPrev=a,u.syPrev=s,u.szPrev=l}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Go(i,r,this.data.flatShading,this)}}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof pt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r),super.updateState(e,r)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,this.isSkinnedMesh=!0,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new Pf,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){r.fromBufferAttribute(o,i);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(i,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;cb.fromBufferAttribute(i.attributes.skinIndex,e),ub.fromBufferAttribute(i.attributes.skinWeight,e),lb.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=ub.getComponent(a);if(s!==0){let l=cb.getComponent(a);db.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(qI.copy(lb).applyMatrix4(db),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function $I(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let t=new Map,e=n.geometry.attributes,r=e.position.array,o=e.normal.array,i=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new Cf(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Cf})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(i[a]=l.x,i[a+1]=l.y,i[a+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new fb(i,3))}function YI(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=new Cf;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),r[i]=o.x,r[i+1]=o.y,r[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new fb(r,3))}function Qa(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof rr)||n.material.getLayersOfType("outline").length===0)return;n instanceof ot&&n.is2DAndNoDepth?YI(n):$I(n)}function Ka(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Of.seededRandom(o),Of.seededRandom(o+1e4),Of.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=i[a%3];n.geometry.setAttribute("randomColor",new WI(r,3))}var ZI;_a.then(n=>{ZI=n});var ho=new XI,cl=new KI;function mb(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var ni=class extends ot{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new QI;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=pt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,Qa(this),Ka(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){pt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&pt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=pt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=pt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,bt.prototype.raycast.call(this,e,r),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new hb,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;ho.setFromBufferAttribute(r),ho.getCenter(o),e.boundingSphere.radius=o.distanceTo(ho.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ho.getSize(cl),this.hasNonUniformScale&&cl.divide(this.scale);let i={width:cl.x,height:cl.y,depth:cl.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let r=this.originalGeometry;ho.min.set(e[0],e[2],e[4]),ho.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(ho.min.applyMatrix4(this.shearScaleInv),ho.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new hb);let o=r.boundingSphere.center;ho.getCenter(o),r.boundingSphere.radius=o.distanceTo(ho.max)}freeSubdivPointer(){this.subdivPointer&&(pt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as JI,Vector3 as ai}from"three";var yb=-1,eN=1,gb={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},xb={polygon_center:0,edge:1,vertex:2},ul=(n,t)=>(e,r)=>!t||e===0||n===0?0:n*r/100,ve=(n,t)=>{let e=Math.abs(t),r=e*-1;return(n-yb)*(e-r)/(eN-yb)+r};function bb(n){let t=[],e={};for(var r=0,o=n.length;r<o;r++){var i=JSON.stringify(n[r].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(t.push(n[r]),e[i]=!0)}return t}var tN=new ai,Mu=new ai,rN=new ai,oN=new ai;function Za(n,t){let e=rN.fromArray(n),r=oN.fromArray(t);Mu.copy(r).sub(e);let o=Mu.length();return Mu.normalize().multiplyScalar(o*.5),tN.copy(e).add(Mu).toArray()}var Sr=new JI,Iu=new ai,Nu=new ai,ii=new ai;function vb(n){let t=[];for(let e=0;e<=n.index.count;e++)if(Iu.fromArray(n.index.array,e*3),Sr.setFromAttributeAndIndices(n.attributes.position,Iu.x,Iu.y,Iu.z),Sr.getNormal(Nu),Sr.getMidpoint(ii),!(isNaN(ii.x)||isNaN(ii.y)||isNaN(ii.z))){let{a:r,b:o,c:i}=Sr,a=r.toArray(),s=o.toArray(),l=i.toArray(),u=r.distanceTo(o),c=o.distanceTo(i),d=i.distanceTo(r),p=Za(a,s),f=Za(s,l),h=Za(l,a),m=[u,c,d],y=Math.max(...m),g=m.filter(w=>Math.round(w)===Math.round(y)).length>1,b=[],S=Sr.getMidpoint(ii).toArray();y===u&&!g&&(b=[f,h,h],S=p),y===c&&!g&&(b=[p,h,h],S=f),y===d&&!g&&(b=[p,f,f],S=h),g&&(b=[p,f,h]),t.push({vertices:[a,s,l],faceCenters:b,midpoint:S,norm:Sr.getNormal(Nu).toArray()})}return t}function Sb(n){let t=[],{position:e}=n.attributes;for(let r=0;r<e.count;r++){Sr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Sr.getNormal(Nu),Sr.getMidpoint(ii);let o=Sr.a.toArray(),i=Sr.b.toArray(),a=Sr.c.toArray();t.push({vertices:[o,i,a],faceCenters:[Za(o,i),Za(i,a),Za(a,o)],midpoint:ii.toArray(),norm:Nu.toArray()})}return t}var nN=4,iN=.5,Tf=n=>.5*(1-Math.cos(n*Math.PI)),Mf=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),i=Math.floor(e),a=Math.floor(r),s=t-o,l=e-i,u=r-a,c,d,p=0,f=.5,h,m,y;for(let g=0;g<nN;g++){let b=o+(i<<4)+(a<<8);c=Tf(s),d=Tf(l),h=this.perlin[b&4095],h+=c*(this.perlin[b+1&4095]-h),m=this.perlin[b+16&4095],m+=c*(this.perlin[b+16+1&4095]-m),h+=d*(m-h),b+=256,m=this.perlin[b&4095],m+=c*(this.perlin[b+1&4095]-m),y=this.perlin[b+16&4095],y+=c*(this.perlin[b+16+1&4095]-y),m+=d*(y-m),h+=Tf(u)*(m-h),p+=h*f,f*=iN,o<<=1,s*=2,i<<=1,l*=2,a<<=1,u*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),u>=1&&(a++,u--)}return p}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},wb=Mf;import{Vector3 as aN,Matrix4 as sN,Ray as lN}from"three";var _b=new aN,Ab=new sN,Pb=new lN;function Ob(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var Ja=class extends ot{constructor(e,r,o){super(e,r,o);this.data=r}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Ab.copy(o).invert(),Pb.copy(e.ray).applyMatrix4(Ab),Pb.intersectBox(this.singleBBox,_b))){let i=_b.applyMatrix4(o),a=e.ray.origin.distanceTo(i);r.push({distance:a,point:i.clone(),object:this})}}};var $t=1e-4,mo,Ib,Nb,Db,Tb=new fr,Mb=new fr;_a.then(n=>{mo=n,Ib=[mo.get_face_center,mo.get_edge_midpoint,mo.get_vertex_position],Nb=[mo.get_face_normal,mo.get_edge_normal,mo.get_vertex_normal],Db=[mo.face_count,mo.edge_count,mo.vertex_count]});var uN=new li,dN=new li,_n=new fr,si=new fr,dl=new fr,Nf=new fr,pN=new fr,fN=new fr;var Uo=new wb,ts=class extends ia(cN){constructor(e,r){super();this.parameters=r;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let r of this.children)r instanceof Lo&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof Lo&&r.object===e&&(r.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(r=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,a=this.children.length;i<a;++i)this.remove(this.children[0]);let o=this.children;if(o.length===r)return;if(o.length<r)for(let i=0,a=r-o.length;i<a;++i){let s=new Lo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-r;i<a;++i)this.remove(o[i])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,i=r-this.children.length;o<i;++o){let a=new Lo(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-r;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let r=e.radial,o=r.start*Cb.DEG2RAD,i=r.end*Cb.DEG2RAD,a=o-i,s=new If(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new fr(0,0,1);break;case"y":l=new fr(0,1,0);break;default:case"x":l=new fr(1,0,0);break}let u=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,c=u.noiseType==="perlin";Uo.noiseSeed(u.seed);let d=kc((0,es.default)(u.seed)),p=ul(u.strength,this.parameters.randomness);for(let[f,h]of this.children.entries()){let m=f*(u.freqScale/10)+u.movement,y=c?Uo.noise(m):d(m,m),g=f+1;h.scale.x=r.scale[0]+p(g,ve(y,u.scale[0]))||$t,h.scale.y=r.scale[1]+p(g,ve(y,u.scale[1]))||$t,h.scale.z=r.scale[2]+p(g,ve(y,u.scale[2]))||$t,h.position.setScalar(0);let b=a/e.count*f-o;switch(r.axis){case"x":h.rotation.set(0,b,0);break;case"y":h.rotation.set(0,0,b);break;case"z":h.rotation.set(b,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0]+p(g,ve(y,u.position[0])),h.position.y+=r.position[1]+p(g,ve(y,u.position[1])),h.position.z+=r.position[2]+p(g,ve(y,u.position[2]));let S=p(g,ve(y,u.rotation[0])),w=p(g,ve(y,u.rotation[1])),v=p(g,ve(y,u.rotation[2]));r.alignment===!0?(h.rotation.x+=s.x+S,h.rotation.y+=s.y+w,h.rotation.z+=s.z+v):h.rotation.set(s.x+S,s.y+w,s.z+v)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new If(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Uo.noiseSeed(i.seed);let s=kc((0,es.default)(i.seed)),l=ul(i.strength,this.parameters.randomness);for(let[u,c]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=a?Uo.noise(d):s(d,d),f=u+1,h=l(f,ve(p,i.rotation[0])),m=l(f,ve(p,i.rotation[1])),y=l(f,ve(p,i.rotation[2]));c.scale.x=1+(r.scale[0]-1)*u+l(f,ve(p,i.scale[0]))||$t,c.scale.y=1+(r.scale[1]-1)*u+l(f,ve(p,i.scale[1]))||$t,c.scale.z=1+(r.scale[2]-1)*u+l(f,ve(p,i.scale[2]))||$t,c.rotation.x=o.x*u+h,c.rotation.y=o.y*u+m,c.rotation.z=o.z*u+y,c.position.x=r.position[0]*u+l(f,ve(p,i.position[0])),c.position.y=r.position[1]*u+l(f,ve(p,i.position[1])),c.position.z=r.position[2]*u+l(f,ve(p,i.position[2]))}}_updateGrid(e){let r=0,o=e.grid,i=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,a=ul(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Uo.noiseSeed(i.seed);let l=Xg((0,es.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new fr(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let h=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],m=s?Uo.noise(...h):l(...h),y=this.children[r++];y.scale.x=1+a(r,ve(m,i.scale[0]))||$t,y.scale.y=1+a(r,ve(m,i.scale[1]))||$t,y.scale.z=1+a(r,ve(m,i.scale[2]))||$t;let g=a(r,ve(m,i.rotation[0])),b=a(r,ve(m,i.rotation[1])),S=a(r,ve(m,i.rotation[2]));y.rotation.set(g,b,S),y.position.x=o.size[0]*d-c.x+a(r,ve(m,i.position[0])),y.position.y=o.size[1]*p-c.y+a(r,ve(m,i.position[1])),y.position.z=o.size[2]*f-c.z+a(r,ve(m,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let c=0;c<o.count[1];c++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=s?Uo.noise(...p):l(...p),h=this.children[r++];h.scale.x=1+a(r,ve(f,i.scale[0]))||$t,h.scale.y=1+a(r,ve(f,i.scale[1]))||$t,h.scale.z=1+a(r,ve(f,i.scale[2]))||$t;let m=a(r,ve(f,i.rotation[0])),y=a(r,ve(f,i.rotation[1])),g=a(r,ve(f,i.rotation[2]));h.rotation.set(m,y,g),h.position.x=o.size[0]*u+a(r,ve(f,i.position[0])),h.position.y=-o.size[1]*c+a(r,ve(f,i.position[1])),h.position.z=-o.size[2]*d+a(r,ve(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new If(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??eo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Uo.noiseSeed(i.seed);let s=kc((0,es.default)(i.seed)),l=ul(i.strength,this.parameters.randomness);if(!r.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Ja)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),c=[],d=g=>{let b=g.length,S=g.map(_=>_[0]).reduce((_,A)=>_+A,0),w=g.map(_=>_[1]).reduce((_,A)=>_+A,0),v=g.map(_=>_[2]).reduce((_,A)=>_+A,0);return[S/b,w/b,v/b]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let b=u.filter(S=>p(g.pos[0])===p(S.pos[0])&&p(g.pos[1])===p(S.pos[1])&&p(g.pos[2])===p(S.pos[2]));b.length>1?c.push({pos:g.pos,norm:d(b.map(S=>S.norm))}):c.push(g)});let f=bb(c);if(f.length>0){let g=Math.round(f.length*r.count/100);this._updateCount(g)}else{let g=this.objectForSample.geometry.getAttribute("position");if(!g||isNaN(g.count)||g.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let h=new Fc(this.objectForSample).build(),m=gb[r.axis],y=this.children;h.setRandomGenerator((0,es.default)(this.object.uuid+r.seed));for(let[g,b]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?Uo.noise(S):s(S,S),v=g+1,_=l(v,ve(w,i.rotation[0])),A=l(v,ve(w,i.rotation[1])),x=l(v,ve(w,i.rotation[2]));r.spreadType==="random"?h.sample(dl,Nf):(f.length&&(dl.fromArray(f[g].pos),Nf.fromArray(f[g].norm)),this.objectForSample instanceof ni&&dl.applyMatrix4(uN.copy(this.objectForSample.matrixWorld).invert())),dl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),b.position.copy(dl),_n.fromArray(m);let T=r.align==="normal"?Nf:this.object.getWorldDirection(fN),C=si.fromArray(r.position);si.x+=si.x+l(v,ve(w,i.position[0])),si.y+=si.y+l(v,ve(w,i.position[1])),si.z+=si.z+l(v,ve(w,i.position[2]));let P=Math.acos(T.dot(_n)),O=pN.crossVectors(_n,T).normalize(),M=dN.makeRotationAxis(O,P),I=T.clone().cross(this.object.up).normalize(),N=I.clone().cross(T).normalize(),B=new li().makeBasis(I,T,N),D=new fr(_n.y,_n.z,_n.x).normalize(),G=D.clone().cross(_n).normalize(),L=new li().makeBasis(D,_n,G).invert(),V=new li().multiplyMatrices(B,L);b.rotation.setFromRotationMatrix(V),C.applyMatrix4(M),b.position.add(C),b.rotation.x=b.rotation.x+o.x+_,b.rotation.y=b.rotation.y+o.y+A,b.rotation.z=b.rotation.z+o.z+x,b.scale.setScalar(1),b.scale.x=b.scale.x+r.scale[0]+l(v,ve(w,i.scale[0]))||$t,b.scale.y=b.scale.y+r.scale[1]+l(v,ve(w,i.scale[1]))||$t,b.scale.z=b.scale.z+r.scale[2]+l(v,ve(w,i.scale[2]))||$t,b.scale.multiply(this.object.scale),b.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof ni){let r=this.objectForSample,o=xb[e],i=Db[o],a=Ib[o],s=Nb[o],l=[],u=i(r.subdivPointerNew);for(let c=0;c<=u-1;c++){let d=a(r.subdivPointerNew,c),p=s(r.subdivPointerNew,c);Tb.fromArray(d).applyMatrix4(r.matrixWorld),Mb.fromArray(p),l.push({pos:Tb.toArray(),norm:Mb.toArray()})}return l}else return(this.objectForSample.geometry.index?vb(this.objectForSample.geometry):Sb(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,r){if(this.parameters=Oo(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=r.find(this.parameters.toObject.object);o instanceof bt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new li,this.hiddenMatrix=new li,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as BD,Vector3 as LD,Matrix4 as RD,Box3 as VD,MeshBasicMaterial as zD,Skeleton as GD}from"three";import{Camera as PN,OrthographicCamera as ON,PerspectiveCamera as CN,Vector3 as Hr,Object3D as Rb,Quaternion as TN,Matrix4 as MN}from"three";import{Camera as bN,LineSegments as vN,BufferGeometry as SN,LineBasicMaterial as wN,Color as Ef,Vector3 as _N,Float32BufferAttribute as Bb}from"three";import{BoxGeometry as hN}from"three";var yo=n=>{var t;return t=class extends n{},t.geometryHelper=new hN(30,30,30),t};import{Ray as mN,Sphere as yN,Matrix4 as gN,Vector3 as Ho}from"three";var Du=new mN,Df=new yN,Eb=new gN,go=(n,t,e,r,o=!1)=>{let i=t,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Df.copy(i.boundingSphere),Df.applyMatrix4(a),e.ray.intersectsSphere(Df)===!1||(Eb.copy(a).invert(),Du.copy(e.ray).applyMatrix4(Eb),i.boundingBox!==null&&Du.intersectsBox(i.boundingBox)===!1))return;let s,l,u,c,d=i.index,p=i.attributes.position,f=i.drawRange,h,m;if(o===!1){let g=Math.max(0,f.start),b=Math.min(d.count,f.start+f.count);for(h=g,m=b;h<m;h+=3)if(l=d.getX(h),u=d.getX(h+1),c=d.getX(h+2),s=y(n,e,Du,p,l,u,c),s){s.faceIndex=Math.floor(h/3),r.push(s);return}}else{let b=i.attributes.position,S=new Ho,w=new Ho,v=new Ho,_=new Ho,A=2,T=1/((n.scale.x+n.scale.y+n.scale.z)/3),C=T*T,P=Math.max(0,f.start),O=Math.min(b.count,f.start+f.count);for(let M=P,I=O-1;M<I;M+=A){if(S.fromBufferAttribute(b,M),w.fromBufferAttribute(b,M+1),Du.distanceSqToSegment(S,w,_,v)>C)continue;_.applyMatrix4(n.matrixWorld);let B=e.ray.origin.distanceTo(_);B<e.near||B>e.far||r.push({distance:B,point:v.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,b,S,w,v,_,A){let x=new Ho,T=new Ho,C=new Ho,P=new Ho,O=new Ho;if(x.fromBufferAttribute(w,v),T.fromBufferAttribute(w,_),C.fromBufferAttribute(w,A),S.intersectTriangle(x,T,C,!1,P)===null)return null;O.copy(P),O.applyMatrix4(g.matrixWorld);let I=b.ray.origin.distanceTo(O);return I<b.near||I>b.far?null:{faceIndex:1,distance:I,point:O.clone(),object:g}}};var Eu=new _N,wr=new bN,Bf=class extends vN{constructor(e){let r=new SN,o=new wN({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new Ef(15711266),u=new Ef(15711266),c=new Ef(2857471);d("n1","n2",l),d("n2","n4",l),d("n4","n3",l),d("n3","n1",l),d("f1","f2",l),d("f2","f4",l),d("f4","f3",l),d("f3","f1",l),d("n1","f1",l),d("n2","f2",l),d("n3","f3",l),d("n4","f4",l),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",c),d("u2","u3",c),d("u3","u1",c);function d(f,h,m){p(f,m),p(h,m)}function p(f,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}r.setAttribute("position",new Bb(i,3)),r.setAttribute("color",new Bb(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;wr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;Ur("n1",r,e,wr,-i,-a,s),Ur("n2",r,e,wr,i,-a,s),Ur("n3",r,e,wr,-i,a,s),Ur("n4",r,e,wr,i,a,s);let l=s;Ur("f1",r,e,wr,-i,-a,l),Ur("f2",r,e,wr,i,-a,l),Ur("f3",r,e,wr,-i,a,l),Ur("f4",r,e,wr,i,a,l);let u=l,c=.5;Ur("u1",r,e,wr,i*.7*c,a*1.1,u),Ur("u2",r,e,wr,-i*.7*c,a*1.1,u),Ur("u3",r,e,wr,0,a*(1.1+.9*c),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Ur(n,t,e,r,o,i,a){Eu.set(o,i,a).unproject(r);let s=t[n];if(s!==void 0){let l=e.getAttribute("position");for(let u=0,c=s.length;u<c;u++)l.setXYZ(s[u],Eu.x,Eu.y,Eu.z)}}var Bu=class extends yo(Bf){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){go(this.object,this.geometry,e,r,!0)}};import{Box3Helper as Lb,BoxGeometry as AN}from"three";var Lu;(t=>t.is=e=>"objectHelper"in e)(Lu||(Lu={}));var _r=(n,t)=>class extends la(n){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Lb&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof AN?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Lb&&(i.visible=!1)}}};var Ru=790,rs=new Hr,Lf=new Hr,Rf=new TN,Vf=new Hr,pl=new Hr,zf=new Hr,qo=class extends _r(PN,Bu){constructor(e="",r={...jn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=un.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new MN,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new ON(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new CN(45,o/i,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new Hr(e,r,o)),super.lookAt(e),this.getWorldPosition(rs),this.targetOffset=rs.distanceTo(e)}getTarget(e=new Hr){return this.getWorldDirection(Lf),this.getWorldPosition(rs),Lf.multiplyScalar(this.targetOffset),e.copy(rs).add(Lf),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(rs),rs.distanceTo(e)}updateUp(){this.getWorldQuaternion(Rf),Vf.set(0,0,1).applyQuaternion(Rf),pl.copy(Rb.DEFAULT_UP),this.isUpVectorFlipped&&pl.negate(),pl.applyQuaternion(Rf),zf.copy(Rb.DEFAULT_UP).projectOnPlane(Vf),this.angleOffsetFromUp=zf.angleTo(pl),this.angleOffsetFromUp*=zf.cross(pl).dot(Vf)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new Hr),i=e.getWorldDirection(new Hr).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Hr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Hr,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let i=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-Ru*.5*i,this.right=Ru*.5*i,this.top=Ru*.5*(1/a),this.bottom=-Ru*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,a,s):this.orthoCamera.setViewOffset(e,r,o,i,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Vi(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{MathUtils as zre}from"three";import{BufferGeometry as Vb,Matrix4 as Gf,Float32BufferAttribute as IN,Vector3 as kb}from"three";var os=new Gf,NN=new Gf,Vu=new Gf,zb=new kb,Gb=new kb;var nr=class extends or{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Vb;this.onAfterRender=(e,r,o,i,a,s)=>{super.onAfterRender(e,r,o,i,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof nr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof bt&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){os.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=br.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;br.transformMeshSet(a.booleanMeshSetAddress,os),a.booleanMatrixInvOld.copy(os).invert(),a.booleanWasTransformed=!1}else a instanceof nr&&a.needsTransformForDownstream===!0?(br.transformMeshSet(a.booleanMeshSetAddress,os),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(br.transformMeshSet(a.booleanMeshSetAddress,NN.multiplyMatrices(os,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(os).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}br.hasOpenEdges(a.booleanMeshSetAddress)===!1||i===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.booleanOperationDidFail=!1):a.geometry.userData.booleanOperationDidFail="openEdges"}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new IN([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return br.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Vb,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=br.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,Qa(this),Ka(this)}dispose(){super.dispose(),this.geometry.dispose()}get recursiveBBox(){let e=super.recursiveBBox;return this.geometry.boundingSphere?.radius===-1&&(e.getCenter(this.geometry.boundingSphere.center),Vu.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(Vu),zb.copy(e.max).applyMatrix4(Vu),Gb.copy(e.min).applyMatrix4(Vu),this.geometry.boundingSphere.radius=zb.distanceTo(Gb)/2),e}};import{Light as DN}from"three";var Fb;(t=>{function n(e){return Ce.is(e)&&e instanceof DN}t.is=n})(Fb||(Fb={}));var ns=(n,t)=>class extends _r(n,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var An=n=>n instanceof bt,fl=n=>n!==null&&n instanceof nr;var hl=n=>Lu.is(n);import{Group as BN}from"three";import{AxesHelper as EN}from"three";var Ar=class extends yo(EN){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){go(this.object,Ar.geometryHelper,e,r)}update(){}};var Pn=class extends _r(BN,Ar){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Group as LN}from"three";var zu=class extends _r(LN,Ar){constructor(e,r,o){super();this.super_Entity(e,r),this.context=o,this.objectHelper.update()}updateState(e,r){this.updateState_Entity(e,r)}};import{Color as r3,Fog as o3,HemisphereLight as n3}from"three";import{ShaderChunk as ml}from"three";var RN=n=>`
2241
2241
 
2242
2242
  // PCSS implementation based on:
2243
2243
  // https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
@@ -2611,7 +2611,7 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
2611
2611
  }
2612
2612
 
2613
2613
  #endif
2614
- `,VN=ml.lights_fragment_begin,zN=ml.shadowmask_pars_fragment,jb=null,GN=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Ub=(n="medium")=>{if(jb===n)return!1;jb=n;let t=GN(n);ml.shadowmap_pars_fragment=RN(t);let e=VN.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),ml.lights_fragment_begin=e;let r=zN.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),ml.shadowmask_pars_fragment=r,!0};import{DirectionalLight as HN,CameraHelper as Hb}from"three";import{DirectionalLightHelper as kN}from"three";var ns=class extends yo(kN){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){go(this.object,ns.geometryHelper,e,r)}};import{PointLightHelper as FN}from"three";var is=class extends yo(FN){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){go(this.object,is.geometryHelper,e,r)}};import{SpotLightHelper as jN,Vector3 as UN}from"three";var Gu=class extends yo(jN){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){go(this.object,Gu.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Gu._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},yl=Gu;yl._vector=new UN;function qN(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var as=class extends os(HN,ns){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new Hb(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof Hb&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e);let r=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;t.size!==void 0&&qN(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r&&this.update()}};import{Scene as i3}from"three";import{SpotLight as WN,CameraHelper as qb,MathUtils as $N,Vector3 as Xb,Quaternion as YN}from"three";var Wb=new Xb,$b=new Xb,Yb=new YN,ss=class extends os(WN,yl){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=$N.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new qb(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof qb&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),$b.setFromMatrixPosition(this.matrixWorld),Yb.setFromRotationMatrix(this.matrixWorld),Wb.copy(this.up).applyQuaternion(Yb).negate().multiplyScalar(this.distance),this.target.position.copy($b).add(Wb),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Be;(v=>{function n(){return[1,0,0,0,1,0,0,0,1]}v.identity=n;function t(_,A=v.identity()){for(let x=0,T=_.length;x<T;x++)A[x]=_[x];return A}v.copy=t;function e(_,A,x,T,C,P){return v.setAbcdef(v.identity(),_,A,x,T,C,P)}v.create=e;function r(_,A,x,T,C,P,O){return _[0]=A,_[1]=T,_[2]=P,_[3]=x,_[4]=C,_[5]=O,_}v.setAbcdef=r;function o(_,A){let[x,T,C,P,O,M]=a(_),[I,N,B,D,G,L]=a(A),V=I*x+N*C,z=I*T+N*P,F=B*x+D*C,$=B*T+D*P,q=G*x+L*C+O,H=G*T+L*P+M;return v.create(V,z,F,$,q,H)}v.append=o;function i(_,A){let[x,T,C,P,O,M]=a(_),[I,N,B,D,G,L]=a(A),V=x,z=T,F=C,$=P;(I!==1||N!==0||B!==0||D!==1)&&(V=x*I+T*B,z=x*N+T*D,F=C*I+P*B,$=C*N+P*D);let q=O*I+M*B+G,H=O*N+M*D+L;return v.create(V,z,F,$,q,H)}v.prepend=i;function a(_){return[_[0],_[3],_[1],_[4],_[2],_[5]]}v.getAbcdef=a;function s(_){let[A,x,T,C,P,O]=v.getAbcdef(_),M=A*C-x*T,I=C/M,N=-x/M,B=-T/M,D=A/M,G=(T*O-C*P)/M,L=-(A*O-x*P)/M;return v.create(I,N,B,D,G,L)}v.invert=s;function l([_,A],x){let[T,C,P,O,M,I]=v.getAbcdef(x);return[T*_+P*A+M,C*_+O*A+I]}v.apply=l;function u(_,A){let[x,T,C,P,O,M]=v.getAbcdef(A),I=1/(x*P+C*-T),[N,B]=_;return[P*I*N+-C*I*B+(M*C-O*P)*I,x*I*B+-T*I*N+(-M*x+O*T)*I]}v.applyInverse=u;function c(_,A,x=A){let[T,C,P,O,M,I]=v.getAbcdef(_);return v.setAbcdef(_,T*A,C*x,P*A,O*x,M*A,I*x),_}v.scale=c;function d(_,A){let x=Math.cos(A),T=Math.sin(A),[C,P,O,M,I,N]=v.getAbcdef(_);return v.setAbcdef(_,C*x-P*T,C*T+P*x,O*x-M*T,O*T+M*x,I*x-N*T,I*T+N*x),_}v.rotate=d;function p(_,A,x){let[T,C]=x,P=v.translate(_,-T,-C);return P=v.rotate(P,A),P=v.translate(P,T,C),P}v.rotateAround=p;function f(_,A,x){let[T,C,P,O,M,I]=v.getAbcdef(_);return v.setAbcdef(_,T,C,P,O,M+A,I+x),_}v.translate=f;function h(_,A,x){let[T,C,P,O]=v.getAbcdef(_);return v.setAbcdef(_,T,C,P,O,A,x),_}v.setTranslate=h;function m(_,A,x){let[T,C,P,O]=v.getAbcdef(_);return v.setAbcdef(_,T,C,P,O,A,x),_}v.setPosition=m;function y(_){let[A,x,T,C]=v.getAbcdef(_),P=Math.sqrt(A*A+x*x),O=Math.sqrt(T*T+C*C);return[P,O]}v.getScale=y;function g(_){let[,,,,A,x]=v.getAbcdef(_);return[A,x]}v.getPosition=g;function b(_,A){return v.decompose(_,A).rotation}v.getRotation=b;function S(_,A){let[x,T,C,P,O,M]=v.getAbcdef(_),I=-Math.atan2(-C,P),N=Math.atan2(T,x),B=Math.abs(I+N),D=0,G=[0,0];B<1e-5||Math.abs(Math.PI*2-B)<1e-5?(D=N,G[0]=G[1]=0):(D=0,G[0]=I,G[1]=N);let L=[Math.sqrt(x*x+T*T),Math.sqrt(C*C+P*P)];return{position:[O+(A[0]*x+A[1]*C)-A[0],M+(A[0]*T+A[1]*P)-A[1]],scale:L,rotation:D,skew:G,pivot:A}}v.decompose=S;function w(_,A,x,T,C=[0,0]){let[P,O]=_,[M,I]=A,[N,B]=T,[D,G]=C,L=Math.cos(x+G)*M,V=Math.sin(x+G)*M,z=-Math.sin(x-D)*I,F=Math.cos(x-D)*I,$=P-(N*L+B*z)+N,q=O-(N*V+B*F)+B;return v.create(L,V,z,F,$,q)}v.compose=w})(Be||(Be={}));var XN=Math.PI/180,$oe=180/Math.PI;function Qb(n,t,e,r,o,i){let a=n-e,s=t-r;return a*a/(o*o)+s*s/(i*i)<=1}function Kb(n){return n*XN}function Ff(n){return{all:n=n||new Map,on:function(t,e){var r=n.get(t);r?r.push(e):n.set(t,[e])},off:function(t,e){var r=n.get(t);r&&(e?r.splice(r.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var r=n.get(t);r&&r.slice().map(function(o){o(e)}),(r=n.get("*"))&&r.slice().map(function(o){o(t,e)})}}}var Wo=class{constructor(t,e,r){this.uuid=t;this.data=e;this.localMatrix=Be.identity();this.worldMatrix=Be.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new ls;this._recursiveBBox=new ls;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.stateSelection=null;this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this.name="";this.position=[0,0];this.scale=[1,1];this.rotation=0;this.emitter=Ff();this.dpr=r.dpr??1,this.dataPatched=e}project(t,e){let r=this.worldMatrix;return e&&(r=Be.append(e.worldMatrix,r)),Be.applyInverse(t,r)}intersects(t,e,r){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this.singleBBox;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}applyTransforms(t){t.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=Be.compose(this.position,this.scale,Kb(this.rotation),Bo.getPivot(this.dataPatched))}updateWorldMatrix(t,e,r){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(t,!0,!1),t&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Be.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Be.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Bo.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{t.resetBBoxNeedsUpdateSelf()})}updateTransformState(t){let e=!1;t.position!==void 0&&(e=!0,this.position=t.position),t.rotation!==void 0&&(e=!0,this.rotation=t.rotation),t.scale!==void 0&&(e=!0,this.scale=t.scale),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(t,e,r){t.type===0&&t.props.visible!==void 0&&(this.visible=t.props.visible),this.data=e,this.data=e;let o=t,i=Oe(t.path,["states","*"]);if(i!==null){if(t.type===0){let[a]=i;if(this?.stateSelection===a){let s={...t.props};if(delete s.name,Object.values(t.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let u=Ze.zoom(l,t.path.slice(2));if(u)for(let c in t.props)t.props[c]===void 0&&c in u&&(s[c]=u[c])}}o={...t,props:s,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:l,...u}=a;a=u}let s=Ze.removeOverridden(t.path,t.props,a);o={...t,props:s}}}this.updateByPatchedOpBase(o,Un.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),r)}changeSelectedState(t,e,r=!1){if(!(this.data.states.length===0&&!r)){for(let o of this.data.states)Un.toOps(this.data,o.data).forEach(a=>{let s=Fi.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(t!==null){let o=this.data.states.data(t);o&&(this.dataPatched=Un.patch(this.data,o),Un.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}updateState(t,e){t.name!==void 0&&(this.name=t.name),t.visible!==void 0&&(this.visible=t.visible),this.updateTransformState(t)}updateByPatchedOpBase(t,e,r){this.dataPatched=e,this.updateByPatchedOp(t,e,r)}updateByPatchedOp(t,e,r){t.path.length===0&&t.type===0&&this.updateState(t.props,r),this.requestRender()}traverseFrameAncestors(t){this.traverseAncestors(e=>{e.data.type==="frame2d"&&t(e)})}traverseAncestors(t){let e=this.parent;for(;e;)t(e),e=e.parent}requestRender(){this.traverseFrameAncestors(t=>{t.requestRender()})}clone(t){let e=new Wo(this.uuid,this.data,t);return e.parent=void 0,e}addEventListener(t,e){this.emitter.on(t,e)}removeEventListener(t,e){this.emitter.off(t,e)}dispatchEvent(t){this.emitter.emit(t.type,{...t,target:t.target??this})}traverseSortNextHelper(){let t=this.parent;if(t){let e=t.children;if(e){let r=e.indexOf(this)+1;return e[r]?e[r]:t.traverseSortNextHelper()}}}sortNext(){let t=this.children;return t&&t.length>0&&t[0]?t[0]:this.traverseSortNextHelper()}isDescendantOf(t){t instanceof Wo&&(t=t.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===t)return!0;e=e.parent}return!1}};var kt=class extends Wo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof kt&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let r=this.children.indexOf(e);r>=0&&(this.children.splice(r,1),e.parent=void 0)}traverse(e){let r=e(this);if(r!==!0)for(let o of this.children)o instanceof kt?o.traverse(e):r=e(o)}intersectsChildren(e,r,o,i=!1,a=[]){for(let s of this.children)if(s instanceof kt&&s.intersectsChildren(e,r,o,i,a),s.intersects(e,r,o)&&(a.push(s),i))break;return a}updateWorldMatrix(e,r,o){if(super.updateWorldMatrix(e,r,o),o&&this.children)for(let i of this.children)i.updateWorldMatrix(e,!1,!0)}find(e){let r;return this.traverse(o=>{o.uuid===e&&(r=o)}),r}innerDrawChildren(e){for(let r=this.children.length-1;r>=0;r--)this.children[r].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let r=new kt(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}},$o=class extends kt{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.reset(r)}reset(e){this.data=e}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let r=new $o(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function QN(n,t){let[[e,r],[o,i]]=n,[[a,s],[l,u]]=t,c=(e-o)*(s-u)-(r-i)*(a-l);if(c===0)return!1;let d=((e-a)*(s-u)-(r-s)*(a-l))/c,p=-((e-o)*(r-s)-(r-i)*(e-a))/c;return d>=0&&d<=1&&p>=0&&p<=1}var Jb=[[-1,1],[-1,-1],[1,-1],[1,1]],Zb=(n,t,e)=>{let r=n.getCenter(),o=n.getHalfSize(),i=Be.append(t,n.worldMatrix);o[0]===0&&o[1]===0?e.push(Be.apply(r,i)):Jb.forEach(a=>{let s=[a[0]*o[0]+r[0],a[1]*o[1]+r[1]];e.push(Be.apply(s,i))})},ls=class{constructor(){this.matrix=Be.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(t,e=!1){t.updateWorldMatrix(),this.makeEmpty(),Be.copy(t.worldMatrix,this.matrix);let r=Be.invert(t.worldMatrix);this.expandByObjectSize(t,r,e)}expandByObjectSize(t,e,r=!1){let o=[];r===!0&&t instanceof kt?t.traverse(i=>{i.visible&&Zb(i,e,o)}):Zb(t,e,o),this.setFromPoints(o)}getCenter(){let[t,e]=this.min,[r,o]=this.getHalfSize();return Be.apply([t+r,e+o],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[(this.max[0]-this.min[0])*.5,(this.max[1]-this.min[1])*.5]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(t){this.makeEmpty();for(let e of t)this.expandByPoint(e)}expandByPoint(t){this.min=[Math.min(this.min[0],t[0]),Math.min(this.min[1],t[1])],this.max=[Math.max(this.max[0],t[0]),Math.max(this.max[1],t[1])]}computeVertices(){let[t,e]=this.getHalfSize(),r=this.getCenter(),[o,i,a,s]=Be.getAbcdef(this.matrix),l=Be.create(o,i,a,s,r[0],r[1]);this.vertices=Jb.map(([u,c])=>Be.apply([u*t,c*e],l))}computeEdges(){this.edges=[];for(let t=0,e=this.vertices.length;t<e;++t)this.edges.push([this.vertices[t],this.vertices[(t+1)%e]])}project(t,e){let r=this.matrix;return e&&(r=Be.append(e.worldMatrix,r)),Be.applyInverse(t,r)}intersects(t,e,r){return this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}containsPoint(t){let[e,r]=t,[o,i]=this.min,[a,s]=this.max;return e>=o&&e<=a&&r>=i&&r<=s}intersectsBBox2D(t){for(let e=0,r=this.edges.length;e<r;e++){let o=this.edges[e];for(let i=0,a=t.edges.length;i<a;i++){let s=t.edges[i];if(QN(o,s))return!0}}for(let e=0,r=t.vertices.length;e<r;e++){let o=t.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let t=this.min,e=this.max;this.min=[Math.min(t[0],e[0]),Math.min(t[1],e[1])],this.max=[Math.max(t[0],e[0]),Math.max(t[1],e[1])]}};var tv,rv=new Promise(n=>{tv=n}),ev=!1;var ku;function ov(){if(ev)return;if(ku)return ku;async function n(){let e=await import("./ui.js");tv(e.default??e),ev=!0}return ku=n(),ku}function av(n){let t=!1;return n.scene.objects.traverse((e,r)=>{(r.type==="Mesh"&&r.geometry.type==="UIGeometry"||r.type==="Page"&&r.uiFrame!==void 0)&&(t=!0)}),t}var be,jf;async function KN(n){let t=await rv;be||(jf||(jf=t({locateFile:()=>n})),be=await jf)}var nv=Be.identity(),xl=class{constructor(t,e=1){this.canvas=t;this.dpr=e;this._width=0;this._height=0;this._strokeMode="inside";this._layerBlur=0;this._backgroundBlur=0;this._dropShadowBlur=0;this._dropShadowOffsetX=0;this._dropShadowOffsetY=0;this._dropShadowColor=we.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=we.transparent;this._fonts=new Map;try{let r=t.getBoundingClientRect();t.width=r.width*e,t.height=r.height*e}catch{console.log(t.width,e)}this._currentM3Transform=nv,this._currentTransform=new Float32Array(nv)}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await KN(this.wasmURL),this._surface=be.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new be.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(be.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(be.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(t){this._currentM3Transform=t,this._currentTransform.set(t)}async loadFont(t,e){let r=await(await fetch(t)).arrayBuffer();this.registerFont(r,e)}registerFont(t,e){if(this._fonts.has(e))return;let r=be.FontMgr.FromData(t);if(r)this._fonts.set(e,r);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(t){this._paintStroke&&this._paintStroke.setColor(Fu(t),be.ColorSpace.DISPLAY_P3)}set fillColor(t){this._paintFill&&this._paintFill.setColor(Fu(t),be.ColorSpace.DISPLAY_P3)}set lineWidth(t){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?t:t*2)}set strokeMode(t){this._strokeMode=t}set dropShadowBlur(t){this._dropShadowBlur=t}set dropShadowColor(t){this._dropShadowColor=t}set dropShadowOffsetX(t){this._dropShadowOffsetX=t}set dropShadowOffsetY(t){this._dropShadowOffsetY=t}set innerShadowBlur(t){this._innerShadowBlur=t}set innerShadowColor(t){this._innerShadowColor=t}set innerShadowOffsetX(t){this._innerShadowOffsetX=t}set innerShadowOffsetY(t){this._innerShadowOffsetY=t}set innerShadowSpread(t){this._innerShadowSpread=t}set layerBlur(t){this._layerBlur=t}set backgroundBlur(t){this._backgroundBlur=t}clear(){this.ctx?.clear(be.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new be.Path}closePath(){let t=this._currentPath;if(t){if(t.isEmpty())return;let e=t.getBounds();(e[3]-e[1]||e[2]-e[0])&&t.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(t,e,r,o,i=0,a=0,s=0,l=0){let u=be.XYWHRect(t,e,r,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(u,be.ClipOp.Intersect,!0);else{let c=be.RRectXY(u,i,i);c[4]=c[5]=i,c[6]=c[7]=a,c[8]=c[9]=s,c[10]=c[11]=l,this.ctx?.clipRRect(c,be.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let t=Be.invert(this.currentTransform);this.ctx.concat(t);let e=Be.translate(Be.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(t,e,r=!0){if(this.ctx&&this._currentPath){let o,i=!1;if(r&&this._hasDropShadow()){let a=t.copy();a.setColor(Fu(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=be.MaskFilter.MakeBlur(be.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,be.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&r){this.ctx.save(),this.ctx.clipPath(this._currentPath,be.ClipOp.Intersect,!0);let a=be.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,be.TileMode.Clamp,null),s=t.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,be.SaveLayerInitWithPrevious),this.ctx.drawColor(t.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),i=!0}if(this._layerBlur>0){let a=t.copy();o=be.MaskFilter.MakeBlur(be.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(o),e(a),a.delete(),o.delete(),i=!0}if(i||e(t),r&&this._hasInnerShadow()){let a=new be.Paint;a.setAntiAlias(!0),a.setStyle(be.PaintStyle.Fill),a.setColor(Fu(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=be.MaskFilter.MakeBlur(be.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[u,c,d,p]=l,f=d-u,h=p-c;this.ctx.save(),this.ctx.clipPath(this._currentPath,be.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,be.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(be.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+f+Math.abs(this._innerShadowOffsetX*2),2e3+h+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(be.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(t,e=!0){if(this.ctx&&this._currentPath&&t){let r=this.ctx,o=this._currentPath;this._applyEffectsToPaint(t,i=>{let a=!1;!e&&this._strokeMode!=="center"&&(r.save(),r.clipPath(o,this._strokeMode==="outside"?be.ClipOp.Difference:be.ClipOp.Intersect,!0),a=!0),r.drawPath(o,i),a&&r.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}ellipse(t,e,r,o,i,a,s,l){if(!iv([t,e,r,o])||!this._currentPath)return;if(r<0||o<0)throw Error("radii cannot be negative");let u=be.XYWHRect(t-r,e-o,r*2,o*2);this._currentPath?.addOval(u)}rect(t,e,r,o,i=0,a=0,s=0,l=0){let u=be.XYWHRect(t,e,r,o);if(!!iv(u))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(u);else{let c=be.RRectXY(u,i,i);c[4]=c[5]=i,c[6]=c[7]=a,c[8]=c[9]=s,c[10]=c[11]=l,this._currentPath?.addRRect(c)}}getHorizontalAlign(t){switch(t){case 2:return be.TextAlign.Right;case 3:return be.TextAlign.Center;case 4:return be.TextAlign.Justify;case 1:default:return be.TextAlign.Left}}drawTextInner(t,e,r,[o,i,a,s],l,u,c=!0){let d=0,{ctx:p}=this;if(!p)return d;let f=u.copy(),h=u.copy();return h.setAlphaf(0),this._applyEffectsToPaint(f,m=>{e.pushPaintStyle(r,m,h),e.addText(t);let y=e.build();y.layout(a);let g=i;l===2?g+=(s-y.getHeight())/2:l===3&&(g+=s-y.getHeight()),p.drawParagraph(y,o,g),d=y.getHeight(),e.reset(),y.delete()},c),f.delete(),h.delete(),d}drawText(t,e){let r=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){let l=new be.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),u=new be.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),c=be.XYWHRect(e.x,e.y,e.width,e.height),d=be.ParagraphBuilder.Make(u,o);a&&(r=this.drawTextInner(t,d,l,c,e.verticalAlign,a,!0)),s&&(r=this.drawTextInner(t,d,l,c,e.verticalAlign,s,!1)),d.delete()}return{height:r}}render(){this._surface?.flush()}moveTo(t,e){this._currentPath?.moveTo(t,e)}lineTo(t,e){this._currentPath?.lineTo(t,e)}bezierCurveTo(t,e,r,o,i,a){this._currentPath?.cubicTo(t,e,r,o,i,a)}quadraticCurveTo(t,e,r,o){this._currentPath?.quadTo(t,e,r,o)}setTransform(t,e=!1){if(!this.ctx)return;let r=this.ctx.getTotalMatrix(),o=Be.invert(r);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let i=Be.getScale(this.camera.worldMatrix);this.ctx?.scale(1/i[0],1/i[1])}this.ctx?.concat(t),this.currentTransform=t}transform(t){this.ctx?.concat(t)}setSize(t,e){t===this._width&&e===this._height||(this._width=t,this._height=e,this.canvas.style.width=t+"px",this.canvas.style.height=e+"px",this.canvas.width=t*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=be.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function iv(n){for(let t=0;t<n.length;t++)if(n[t]!==void 0&&!Number.isFinite(n[t]))return!1;return!0}function Fu({r:n,g:t,b:e,a:r}){return be.Color4f(n,t,e,r)}var bl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=we.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(t){t.color!==void 0&&(this.color=t.color),t.enabled!==void 0&&(this.enabled=t.enabled),t.blurRadius!==void 0&&(this.blurRadius=t.blurRadius),t.offset!==void 0&&(this.offset=t.offset),t.spread!==void 0&&(this.spread=t.spread)}};var vl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.radius!==void 0&&(this.radius=t.radius)}};var ju=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=we.transparent;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color)}};var Uu=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=we.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color),t.thickness!==void 0&&(this.thickness=t.thickness),t.mode!==void 0&&(this.mode=t.mode)}};var Pr=class extends Wo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.fill=new ju(e+"-fill",r.fill,o),this.stroke=new Uu(e+"-stroke",r.stroke,o),this.dropShadow=new bl(e+"-dropShadow",r.dropShadow,o),this.innerShadow=new bl(e+"-innerShadow",r.innerShadow,o),this.backgroundBlur=new vl(e+"-backgroundBlur",r.backgroundBlur,o),this.layerBlur=new vl(e+"-layerBlur",r.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:we.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:we.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=we.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=we.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Oe(e.path,["fill"])?this.fill.update(e.props):Oe(e.path,["stroke"])?this.stroke.update(e.props):Oe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Oe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Oe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Oe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,r){super.updateState(e,r),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let r=new Pr(this.uuid,this.data,e);return r.parent=void 0,r}};var On=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.updateState(r,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,r){return Qb(e,r,this.width*.5,this.height*.5,this.width*.5,this.height*.5)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e)}clone(e){let r=new On(this.uuid,this.data,e);return r.parent=void 0,r}};var xo=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(r,o)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let r=new xo(this.uuid,this.data,e);return r.parent=void 0,r}};var Cn=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(r,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:we.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:we.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let r=this.data.textTransform,o=this.data.text.textValue.toString(),i=r===2?o.toUpperCase():r===3?o.toLowerCase():o,{height:a}=e.drawText(i,{x:0,y:0,width:this.width,height:this.height,fontSize:this.data.fontSize,lineHeight:this.data.lineHeight??1,letterSpacing:this.data.letterSpacing??0,horizontalAlign:this.data.horizontalAlign,verticalAlign:this.data.verticalAlign,font:this.data.font});this._textHeight=a}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:r}){e.font!==void 0&&(this._fontHolder=r.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateFontState(e,r)}clone(e){let r=new Cn(this.uuid,this.data,e);return r.parent=void 0,r}};var cs=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(r,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(i=>Hu.extremas(i)),r=[1/0,1/0],o=[-1/0,-1/0];for(let i=0,a=e.length;i<a;i++){let s=e[i];s[0][0]<r[0]&&(r[0]=s[0][0]),s[0][1]<r[1]&&(r[1]=s[0][1]),s[1][0]>o[0]&&(o[0]=s[1][0]),s[1][1]>o[1]&&(o[1]=s[1][1])}return this.extremasBBox.min=[r[0],r[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,i=this.data.points.length;o<i;o++){let a=this.data.points[o].data,s=this.data.points[o-1].data,l={start:s.position,cp1:s.controlNext.position,cp2:a.controlPrevious.position,end:a.position};this.curves.push(l)}let e=this.data.points[0].data,r=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:r.position,cp1:r.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,r]=this.extremasBBox.min,[o,i]=this.getHalfSize();return[e+o,r+i]}getHalfSize(){let{min:e,max:r}=this.extremasBBox;return[(r[0]-e[0])*.5,(r[1]-e[1])*.5]}innerDraw(e){for(let i=0,a=this.data.points.length;i<a;i++){let s=this.data.points[i].data;if(i===0){let[l,u]=s.position;e.moveTo(l,u)}else{let l=this.data.points[i-1].data,[u,c]=l.controlNext.position,[d,p]=s.controlPrevious.position,[f,h]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};Hu.derive(m),e.bezierCurveTo(u,c,d,p,f,h)}}let r=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[i,a]=o.controlNext.position,[s,l]=r.controlPrevious.position,[u,c]=r.position;e.bezierCurveTo(i,a,s,l,u,c)}}updateState(e,r){super.updateState(e,r),this.computeExtremas()}clone(e){let r=new cs(this.uuid,this.data,e);return r.parent=void 0,r}},Hu;(i=>{function n(a){let s=a.start,l=a.cp1,u=a.cp2,c=a.end,d=[3*(l[0]-s[0]),3*(l[1]-s[1])],p=[3*(u[0]-l[0]),3*(u[1]-l[1])],f=[3*(c[0]-u[0]),3*(c[1]-u[1])],h={start:d,cp:p,end:f};return a.derivative=h,h.derivative=Uf.derive(h),h}i.derive=n;function t(a,s,l,u=!1){let c=a-2*s+l;if(c!==0){let d=-Math.sqrt(Math.abs(s*s-a*l)),p=-a+s,f=-(d+p)/c,h=-(-d+p)/c;return[f,h]}else if(s!==l&&c===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??i.derive(a),l=s.start,u=s.cp,c=s.end;return[t(l[0],u[0],c[0]),t(l[1],u[1],c[1])]}i.droot=e;function r(a){let[s,l]=i.droot(a),u=[a.start[0],a.end[0]],c=[a.start[1],a.end[1]];for(let d of s)u.push(i.compute(a,Math.min(1,Math.max(0,d)))[0]);for(let d of l)c.push(i.compute(a,Math.min(1,Math.max(0,d)))[1]);return u.sort((d,p)=>d-p),c.sort((d,p)=>d-p),[[u[0],c[0]],[u[u.length-1],c[c.length-1]]]}i.extremas=r;function o(a,s){if(s===0)return[...a.start];if(s===1)return[...a.end];let l=1-s,u=l*l,c=s*s,d=u*l,p=u*s*3,f=l*c*3,h=s*c;return[d*a.start[0]+p*a.cp1[0]+f*a.cp2[0]+h*a.end[0],d*a.start[1]+p*a.cp1[1]+f*a.cp2[1]+h*a.end[1]]}i.compute=o})(Hu||(Hu={}));var Uf;(r=>{function n(o){let i=o.start,a=o.cp,s=o.end,l=[2*(a[0]-i[0]),2*(a[1]-i[1])],u=[2*(s[0]-a[0]),2*(s[1]-a[1])],c={start:l,end:u};return c.derivative=Hf.derive(c),o.derivative=c,c}r.derive=n;function t(o){let i=o.derivative??r.derive(o),a=i.start,s=i.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}r.droot=t;function e(o,i){if(i===0)return[...o.start];if(i===1)return[...o.end];let a=1-i,s=a*a,l=i*i,u=s,c=a*i*2,d=l;return[u*o.start[0]+c*o.cp[0]+d*o.end[0],u*o.start[1]+c*o.cp[1]+d*o.end[1]]}r.compute=e})(Uf||(Uf={}));var Hf;(e=>{function n(r){let o=r.start,i=r.end,a=[i[0]-o[0],i[1]-o[1]];return r.derivative=a,r.derivative}e.derive=n;function t(r,o){if(o===0)return[...r.start];if(o===1)return[...r.end];let i=r.start,a=r.end;return[i[0]+(a[0]-i[0])*o,i[1]+(a[1]-i[1])*o]}e.compute=t})(Hf||(Hf={}));var hr=class extends kt{constructor(e,r,o){super(e,r,o);this.uuid=e;this.width=0;this.height=0;this.background=new xo(e+"-background",ra.defaultData,o),this.background.parent=this,this.updateState(r,o)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(e){this.background.cornerRadius=e}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(e,r,o){super.updateWorldMatrix(e,r,o),this.background?.updateWorldMatrix(e,r,o)}draw(e){if(!this.visible)return;e.save();let r=this.width,o=this.height;this.applyTransforms(e),this.background.width=r,this.background.height=o,this.background.draw(e),e.clipRect(0,0,r,o,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Oe(e.path,["fill"])?this.fill.update(e.props):Oe(e.path,["stroke"])?this.stroke.update(e.props):Oe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Oe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Oe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Oe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let r=new hr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function sv(n,t,e){switch(t.type){case"ellipse2d":return new On(n,t,e);case"rectangle2d":return new xo(n,t,e);case"text2d":return new Cn(n,t,e);case"vector2d":return new cs(n,t,e);case"frame2d":return new hr(n,t,e);case"group2d":default:return new $o(n,t,e)}}var qf=class{constructor(t,e,r){this.uuid=t;this.data=e;this.group=new $o(qf.GROUP_ID,{...Ds.defaultData},r),this.createChildrenObjects(e.objects,this.group,r)}createObject(t,e,r,o,i,a){let s=sv(t,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),r.length>0&&(s instanceof $o||s instanceof hr)&&this.createChildrenObjects(r,s,a))}createChildrenObjects(t,e,r){let o=0;for(let i of t)this.createObject(i.id,i.data,i.children,e,o,r),o+=1}draw(t){this.group.draw(t)}updateEntityByOp(t,e,r,o){let i=this.find(t);if(i)try{i.updateByOp(e,r,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(t,e){if(t.path.length===0&&t.type===7){let r=t.parent===null?this.group:this.find(t.parent);r!==void 0&&r instanceof kt&&(this.createObject(t.id,t.data,t.children,r,t.localIndex,e),r.requestRender())}else if(t.path.length===0&&t.type===8){let r=this.find(t.id);if(r!==void 0&&r.parent!==void 0&&r.parent instanceof kt){let o=r.parent;r.resetBBoxNeedsUpdate(),o?.remove(r),o?.requestRender()}}else if(t.path.length===0&&t.type===9){let r=this.find(t.id);if(r!==void 0){let o=r.parent,i=t.parent===null?this:this.find(t.parent);if(i===void 0&&!1&&console.error("unexpected",i,t),i instanceof kt||i===this){i.add(r);let a=t.localIndex;i.children.splice(a,0,i.children.pop()),r.updateWorldMatrix(!0,!1,!0),o?.requestRender(),r.requestRender()}r.resetBBoxNeedsUpdate()}}}add(t){this.group.add(t)}remove(t){this.group.remove(t)}traverse(t){this.group.traverse(e=>{e!==this.group&&t(e)})}intersectsChildren(t,e,r,o=!1,i=[]){return this.group.intersectsChildren(t,e,r,o,i)}find(t){return this.group.find(t)}get children(){return this.group.children}project(t,e){return this.group.project(t,e)}getWithSortKey(t){let e=this.find(t);if(e===void 0)return;let r=[],o=e;for(;o!==this.group;){let i=o;o=o.parent;let a=o.children.indexOf(i);r.splice(0,0,a)}return{entity:e,sortKey:r}}getAllSorted(t){let e=[];for(let r of t){let o=this.getWithSortKey(r.id);o!==void 0&&e.push(o)}return e.sort((r,o)=>Tl(r.sortKey,o.sortKey)),e.map(r=>r.entity)}},li=qf;li.GROUP_ID="scene2d";function Wf({constraints:n,newParentWidth:t,newParentHeight:e,initialParentWidth:r,initialParentHeight:o,objectInitialWidth:i,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:u}=n,c=t-r,d=e-o,p=i,f=a,h=s[0],m=s[1];if(l!==0){if(l===1)h+=c;else if(l===3)h+=c/2;else if(l===2)p=Math.max(1,p+c);else if(l===4){let y=t/r;p*=y,h*=y}}if(u!==0){if(u===1)m+=d;else if(u===3)m+=d/2;else if(u===2)f=Math.max(1,f+d);else if(u===4){let y=e/o;f*=y,m*=y}}return{width:p,height:f,position:[h,m]}}import{MathUtils as ZN}from"three";var JN=Be.identity(),us=class{constructor(t,e,r,o){this.uuid=t;this.width=e;this.height=r;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this.onFrameOverrideObjectEvent=t=>{if(t.target?.uuid!==void 0){let e=this.frameRoot?.find(t.target.uuid);e&&e.dispatchEvent({...t,target:e})}};this.scene2d=new li(ZN.generateUUID(),Gc.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=document.createElement("canvas"),this.renderer=new xl(this.canvas),o.shared.addCanvas(this.uuid,this.canvas),this.textureHolder=o.shared.canvas(this.uuid),this.promise=this.init()}async init(){this.renderer instanceof xl&&(this.renderer.wasmURL=Hx.skiaWasmUrl),await this.renderer.init()}render(){this.isFrameDirty&&(this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),this.textureHolder?.setNeedsUpdate(!0),this.isFrameDirty=!1)}updateEntity2DByOp(t,e,r,o){this.scene2d.updateEntityByOp(t,e,r,o),this.applySize()}updateTreeByOp(t,e){this.scene2d.updateTreeByOp(t,e),this.applySize()}applyOverrides(t){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=t?.width??this.width,r=t?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=r,this.frameOverride.localMatrix=JN,this.isScreenSpace&&(this.frameOverride.fill.color=we.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:r},lv({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(t){let e=t?.width??this.width,r=t?.height??this.height;this.width=e,this.height=r,this.renderer.dpr=this.isScreenSpace?window.devicePixelRatio:Math.floor(2048/Math.max(e,r)),this.renderer.setSize(e,r),this.textureHolder?.dispose(),this.applyOverrides(t),this.frameOverride?.requestRender()}applyFrame(t){let e=this.context.scene.find2D(t);if(!(!e||!(e instanceof hr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.textureHolder?.dispose(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(r=>{r.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(r=>{r.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(t){return this.scene2d.find(t)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(t=>{t.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(t=>{t.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function lv({objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i}){if(n instanceof hr&&t instanceof hr)for(let a=0,s=n.children.length;a<s;a++){let l=n.children[a],u=t.children[a];l&&u&&l.uuid===u.uuid&&e3({objectOverride:l,objectRoot:u,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i})}}function e3({objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i}){let{width:a,height:s,position:l}=Wf({constraints:n.data,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i,objectInitialWidth:$f(t)?t.width:0,objectInitialHeight:$f(t)?t.height:0,objectInitialPosition:t.position});if(n.position=l,n.data={...n.data,position:l},n.states)for(let u in n.states)t3({stateId:u,objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i});$f(n)&&(n.width=a,n.height=s,n.data={...n.data,width:a,height:s},lv({objectOverride:n,objectRoot:t,newParentWidth:n.width,newParentHeight:n.height,initialParentWidth:t.width,initialParentHeight:t.height}))}function t3({stateId:n,objectOverride:t,objectRoot:e,newParentWidth:r,newParentHeight:o,initialParentWidth:i,initialParentHeight:a}){let s=t.states?.[n],l=e.states?.[n];if(s&&l){let{width:u,height:c,position:d}=Wf({constraints:t.data,newParentWidth:r,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:Bo.isResizeable(l)?l.width:0,objectInitialHeight:Bo.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(t.states[n],{position:d}),Bo.isResizeable(s)&&Object.assign(t.states[n],{width:u,height:c})}}function $f(n){return n instanceof xo||n instanceof hr||n instanceof On||n instanceof Cn}var Or=class extends sa(i3){constructor(e,r,o){super();this.data=r;this.bgColor=new St(1,1,1,1);this.fog=null;this.backupFog=new o3(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new r3;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new qo(ln,{...Fn.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new n3(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),r.uiScene?this.uiScene=new li((Array.isArray(e)?e[0]:e)+"-ui",r.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):r.uiFrame&&this.createUICanvas(r.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,r){this.uiCanvas=new us(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,r),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=zt(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(r=>{r instanceof nr&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&Ub(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=zt(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=zt(e.aoColor,r))}updateByOp(e,r,o,i){let a=this.data.uiFrame;super.updateByOp(e,r,o,i);let s=r;Oe(e.path,["fog"])?this.updateFog(s.fog,o.shared):Oe(e.path,["ao"])?this.updateAo(s.ao,o.shared):Oe(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Oe(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,r){e?(this.uiCanvas||this.createUICanvas(e,r),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(zt(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,r){}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof as&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof ss&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize,r+=1)})}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Ce.is(a)&&(a.visible||s?.object.data.visible)&&((An(a)||hl(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Sl(a,e,r,!0)),o(a))}};return o(this),r}updateEntity2DByOp(e,r,o,i){this.uiCanvas?.updateEntity2DByOp(e,r,o,i)}};import{PointLight as a3,Vector3 as qu,Box3 as s3,Box3Helper as cv,Color as l3}from"three";var Wu=class extends os(a3,is){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new qu(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new qu(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new s3(a,s),u=new cv(l,new l3(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof cv){let r=this.shadow.camera,o=new qu(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),i=new qu(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var $u=class extends ot{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?Ks(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var ds=class extends ot{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),this.updateShape()}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let r;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=ba;break;case"Ellipse":i=ma;break;case"Polygon":i=lu;break;case"Star":i=cu;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=i.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?Ks(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};import{Group as c3,Matrix4 as u3,Skeleton as d3}from"three";var Yo=class extends _r(c3,Ar){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,r){let o=Zi.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let i,a;for(let s of to.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=Xr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...gt.defaultData,...e,...Mr(gt.defaultData,to.rootOverrideProps)}}updateByOp(e,r,o,i){let a;if(this.isInstanceRoot&&!i){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of to.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&to.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,i)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(Ce.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Yu(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};dv(e,[this.uuid],r.overrides,this,o,o,0,i,a);for(let s of this.children)if(Ce.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(u=>{if(u instanceof ot&&u.isSkinnedMesh){let c=u.dataPatched;if(c.bones&&c.boneInverses){let d=c.bones.map(h=>e.scene.find(a[h])),p=c.boneInverses.map(h=>new u3().fromArray(h)),f=new d3(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Yu(n){if(n.component){let t=n.component.instances.indexOf(n);t>=0&&n.component.instances.splice(t,1);for(let e of n.children)Ce.is(e)&&Yu(e)}}function uv(n,t,e,r){return n.component===t&&fd(n.identity,r)?n.overrideData===e?2:1:0}function dv(n,t,e,r,o,i,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let c=r.component.instances.indexOf(r);c>=0&&r.component.instances.splice(c,1)}o.instances.push(r),r.component=o}o instanceof Yo&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let c of o.children)if(Ce.is(c)){let d=[...t,...typeof c.identity=="string"?[c.identity]:c.identity],p=Qi.resolve(e,d,1);if(p!=null&&!(p instanceof qe)){if(!1)debugger;Object.setPrototypeOf(p,qe.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[u];if(f=Ce.is(m)?m:null,f!==null){let y=uv(f,c,p,d);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=uv(f,c,p,d);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),r.children.splice(u,0,f),f.parent===r?(g<=u&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=p?Xr.apply(c.data,p):c.data;Ir.is(m.type)&&(m={...m,type:"Empty"}),f=Er.createEntity(d,m,n),f.overrideData=p,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(u,0,f),f.updateState(f.data,n),h&&f.changeSelectedState(h,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}u+=1,dv(n,t,e,f,c,i,a+1,s,l)}if(!s){let c=u;for(;;){let d=r.children[u];if(Ce.is(d))n.pendingDeletes.add(d);else break;u+=1}r.children.splice(c,u-c)}return!0}import{Bone as p3}from"three";var Xu=class extends _r(p3,Ar){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};var ci=class extends ot{constructor(e,r,o){super(e,r,o);this.onBeforeRender=()=>{this.uiCanvas.render()};this.uiCanvas=new us(e+"-canvas",r.geometry.width,r.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,r){let o=e?.width??this.dataPatched.geometry.width,i=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:i}),this.applyGeometryParametersFromFrame(r)}applyFrame(e,r){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(r),this.applyMaterialParametersFromFrame({shared:r})}applyGeometryParametersFromFrame(e){let r=this.frame;r&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=Go(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let r=this.frame;if(r){let o=r.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,r,o,i){this.uiCanvas.updateEntity2DByOp(e,r,o,i),e===this.frameId&&r.type===0&&(r.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(i):Oe(r.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:i}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.applySize({width:e.width,height:e.height},r)}};import{Object3D as w3,Vector3 as Cr,InstancedMesh as _3,InstancedBufferAttribute as A3,PlaneGeometry as P3,Vector4 as wl,Quaternion as Dv,TextureLoader as O3,Texture as Ev,Euler as C3,MathUtils as eh}from"three";import{GPUComputationRenderer as T3}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as pv,FloatType as Yf,DataTexture as Xf,RGBAFormat as Qf,Mesh as qse,Euler as Wse,Matrix4 as $se}from"three";import{MeshSurfaceSampler as f3}from"three/examples/jsm/math/MeshSurfaceSampler.js";function fv(n){let t=new Float32Array(n*n*2);for(let e=0;e<n;e++)for(let r=0;r<n;r++){let o=e*n+r;t[o*2+0]=e/(n-1),t[o*2+1]=r/(n-1)}return t}function hv(n){let t=Math.ceil(Math.sqrt(n));return Math.max(t,1)}function mv(n,t){let e=[],r=[],o=new pv,i=new pv,a=new f3(n).build();for(let u=0;u<t;u++)a.sample(o,i),e.push(o.x,o.y,o.z),r.push(i.x,i.y,i.z);let s=new Float32Array(e),l=new Float32Array(r);return{positions:s,normals:l}}function Kf(n,t){let e=n,r=new Float32Array(4*t*t);for(let i=0;i<t*t;i++)r[4*i]=e[3*i],r[4*i+1]=e[3*i+1],r[4*i+2]=e[3*i+2],r[4*i+3]=0;let o=new Xf(r,t,t,Qf,Yf);return o.needsUpdate=!0,o}function yv({size:n}){let t=new Float32Array(4*n*n);for(let r=0;r<n*n;r++)t[4*r]=r,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Xf(t,n,n,Qf,Yf);return e.needsUpdate=!0,e}function gv(n){let t=new Float32Array(4*n*n);for(let r=0;r<n*n;r++)t[4*r]=0,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Xf(t,n,n,Qf,Yf);return e.needsUpdate=!0,e}var xv=`
2614
+ `,VN=ml.lights_fragment_begin,zN=ml.shadowmask_pars_fragment,jb=null,GN=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Ub=(n="medium")=>{if(jb===n)return!1;jb=n;let t=GN(n);ml.shadowmap_pars_fragment=RN(t);let e=VN.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),ml.lights_fragment_begin=e;let r=zN.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),ml.shadowmask_pars_fragment=r,!0};import{DirectionalLight as HN,CameraHelper as Hb}from"three";import{DirectionalLightHelper as kN}from"three";var is=class extends yo(kN){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){go(this.object,is.geometryHelper,e,r)}};import{PointLightHelper as FN}from"three";var as=class extends yo(FN){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){go(this.object,as.geometryHelper,e,r)}};import{SpotLightHelper as jN,Vector3 as UN}from"three";var Gu=class extends yo(jN){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){go(this.object,Gu.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Gu._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},yl=Gu;yl._vector=new UN;function qN(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 ss=class extends ns(HN,is){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new Hb(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof Hb&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e);let r=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;t.size!==void 0&&qN(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r&&this.update()}};import{Scene as i3}from"three";import{SpotLight as WN,CameraHelper as qb,MathUtils as $N,Vector3 as Xb,Quaternion as YN}from"three";var Wb=new Xb,$b=new Xb,Yb=new YN,ls=class extends ns(WN,yl){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=$N.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new qb(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof qb&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),$b.setFromMatrixPosition(this.matrixWorld),Yb.setFromRotationMatrix(this.matrixWorld),Wb.copy(this.up).applyQuaternion(Yb).negate().multiplyScalar(this.distance),this.target.position.copy($b).add(Wb),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Ne;(v=>{function n(){return[1,0,0,0,1,0,0,0,1]}v.identity=n;function t(_,A=v.identity()){for(let x=0,T=_.length;x<T;x++)A[x]=_[x];return A}v.copy=t;function e(_,A,x,T,C,P){return v.setAbcdef(v.identity(),_,A,x,T,C,P)}v.create=e;function r(_,A,x,T,C,P,O){return _[0]=A,_[1]=T,_[2]=P,_[3]=x,_[4]=C,_[5]=O,_}v.setAbcdef=r;function o(_,A){let[x,T,C,P,O,M]=a(_),[I,N,B,D,G,L]=a(A),V=I*x+N*C,z=I*T+N*P,F=B*x+D*C,$=B*T+D*P,q=G*x+L*C+O,H=G*T+L*P+M;return v.create(V,z,F,$,q,H)}v.append=o;function i(_,A){let[x,T,C,P,O,M]=a(_),[I,N,B,D,G,L]=a(A),V=x,z=T,F=C,$=P;(I!==1||N!==0||B!==0||D!==1)&&(V=x*I+T*B,z=x*N+T*D,F=C*I+P*B,$=C*N+P*D);let q=O*I+M*B+G,H=O*N+M*D+L;return v.create(V,z,F,$,q,H)}v.prepend=i;function a(_){return[_[0],_[3],_[1],_[4],_[2],_[5]]}v.getAbcdef=a;function s(_){let[A,x,T,C,P,O]=v.getAbcdef(_),M=A*C-x*T,I=C/M,N=-x/M,B=-T/M,D=A/M,G=(T*O-C*P)/M,L=-(A*O-x*P)/M;return v.create(I,N,B,D,G,L)}v.invert=s;function l([_,A],x){let[T,C,P,O,M,I]=v.getAbcdef(x);return[T*_+P*A+M,C*_+O*A+I]}v.apply=l;function u(_,A){let[x,T,C,P,O,M]=v.getAbcdef(A),I=1/(x*P+C*-T),[N,B]=_;return[P*I*N+-C*I*B+(M*C-O*P)*I,x*I*B+-T*I*N+(-M*x+O*T)*I]}v.applyInverse=u;function c(_,A,x=A){let[T,C,P,O,M,I]=v.getAbcdef(_);return v.setAbcdef(_,T*A,C*x,P*A,O*x,M*A,I*x),_}v.scale=c;function d(_,A){let x=Math.cos(A),T=Math.sin(A),[C,P,O,M,I,N]=v.getAbcdef(_);return v.setAbcdef(_,C*x-P*T,C*T+P*x,O*x-M*T,O*T+M*x,I*x-N*T,I*T+N*x),_}v.rotate=d;function p(_,A,x){let[T,C]=x,P=v.translate(_,-T,-C);return P=v.rotate(P,A),P=v.translate(P,T,C),P}v.rotateAround=p;function f(_,A,x){let[T,C,P,O,M,I]=v.getAbcdef(_);return v.setAbcdef(_,T,C,P,O,M+A,I+x),_}v.translate=f;function h(_,A,x){let[T,C,P,O]=v.getAbcdef(_);return v.setAbcdef(_,T,C,P,O,A,x),_}v.setTranslate=h;function m(_,A,x){let[T,C,P,O]=v.getAbcdef(_);return v.setAbcdef(_,T,C,P,O,A,x),_}v.setPosition=m;function y(_){let[A,x,T,C]=v.getAbcdef(_),P=Math.sqrt(A*A+x*x),O=Math.sqrt(T*T+C*C);return[P,O]}v.getScale=y;function g(_){let[,,,,A,x]=v.getAbcdef(_);return[A,x]}v.getPosition=g;function b(_,A){return v.decompose(_,A).rotation}v.getRotation=b;function S(_,A){let[x,T,C,P,O,M]=v.getAbcdef(_),I=-Math.atan2(-C,P),N=Math.atan2(T,x),B=Math.abs(I+N),D=0,G=[0,0];B<1e-5||Math.abs(Math.PI*2-B)<1e-5?(D=N,G[0]=G[1]=0):(D=0,G[0]=I,G[1]=N);let L=[Math.sqrt(x*x+T*T),Math.sqrt(C*C+P*P)];return{position:[O+(A[0]*x+A[1]*C)-A[0],M+(A[0]*T+A[1]*P)-A[1]],scale:L,rotation:D,skew:G,pivot:A}}v.decompose=S;function w(_,A,x,T,C=[0,0]){let[P,O]=_,[M,I]=A,[N,B]=T,[D,G]=C,L=Math.cos(x+G)*M,V=Math.sin(x+G)*M,z=-Math.sin(x-D)*I,F=Math.cos(x-D)*I,$=P-(N*L+B*z)+N,q=O-(N*V+B*F)+B;return v.create(L,V,z,F,$,q)}v.compose=w})(Ne||(Ne={}));var XN=Math.PI/180,$oe=180/Math.PI;function Qb(n,t,e,r,o,i){let a=n-e,s=t-r;return a*a/(o*o)+s*s/(i*i)<=1}function Kb(n){return n*XN}function Ff(n){return{all:n=n||new Map,on:function(t,e){var r=n.get(t);r?r.push(e):n.set(t,[e])},off:function(t,e){var r=n.get(t);r&&(e?r.splice(r.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var r=n.get(t);r&&r.slice().map(function(o){o(e)}),(r=n.get("*"))&&r.slice().map(function(o){o(t,e)})}}}var Wo=class{constructor(t,e,r){this.uuid=t;this.data=e;this.localMatrix=Ne.identity();this.worldMatrix=Ne.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new On;this._recursiveBBox=new On;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.stateSelection=null;this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this.name="";this.position=[0,0];this.scale=[1,1];this.rotation=0;this.emitter=Ff();this.dpr=r.dpr??1,this.dataPatched=e}project(t,e){let r=this.worldMatrix;return e&&(r=Ne.append(e.worldMatrix,r)),Ne.applyInverse(t,r)}intersects(t,e,r){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this.singleBBox;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}applyTransforms(t){t.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=Ne.compose(this.position,this.scale,Kb(this.rotation),Bo.getPivot(this.dataPatched))}updateWorldMatrix(t,e,r){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(t,!0,!1),t&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Ne.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Ne.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Bo.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{t.resetBBoxNeedsUpdateSelf()})}updateTransformState(t){let e=!1;t.position!==void 0&&(e=!0,this.position=t.position),t.rotation!==void 0&&(e=!0,this.rotation=t.rotation),t.scale!==void 0&&(e=!0,this.scale=t.scale),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(t,e,r){t.type===0&&t.props.visible!==void 0&&(this.visible=t.props.visible),this.data=e,this.data=e;let o=t,i=Oe(t.path,["states","*"]);if(i!==null){if(t.type===0){let[a]=i;if(this?.stateSelection===a){let s={...t.props};if(delete s.name,Object.values(t.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let u=Ze.zoom(l,t.path.slice(2));if(u)for(let c in t.props)t.props[c]===void 0&&c in u&&(s[c]=u[c])}}o={...t,props:s,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:l,...u}=a;a=u}let s=Ze.removeOverridden(t.path,t.props,a);o={...t,props:s}}}this.updateByPatchedOpBase(o,Hn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),r)}changeSelectedState(t,e,r=!1){if(!(this.data.states.length===0&&!r)){for(let o of this.data.states)Hn.toOps(this.data,o.data).forEach(a=>{let s=ji.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(t!==null){let o=this.data.states.data(t);o&&(this.dataPatched=Hn.patch(this.data,o),Hn.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}updateState(t,e){t.name!==void 0&&(this.name=t.name),t.visible!==void 0&&(this.visible=t.visible),this.updateTransformState(t)}updateByPatchedOpBase(t,e,r){this.dataPatched=e,this.updateByPatchedOp(t,e,r)}updateByPatchedOp(t,e,r){t.path.length===0&&t.type===0&&this.updateState(t.props,r),this.requestRender()}traverseFrameAncestors(t){this.traverseAncestors(e=>{e.data.type==="frame2d"&&t(e)})}traverseAncestors(t){let e=this.parent;for(;e;)t(e),e=e.parent}requestRender(){this.traverseFrameAncestors(t=>{t.requestRender()})}clone(t){let e=new Wo(this.uuid,this.data,t);return e.parent=void 0,e}addEventListener(t,e){this.emitter.on(t,e)}removeEventListener(t,e){this.emitter.off(t,e)}dispatchEvent(t){this.emitter.emit(t.type,{...t,target:t.target??this})}traverseSortNextHelper(){let t=this.parent;if(t){let e=t.children;if(e){let r=e.indexOf(this)+1;return e[r]?e[r]:t.traverseSortNextHelper()}}}sortNext(){let t=this.children;return t&&t.length>0&&t[0]?t[0]:this.traverseSortNextHelper()}isDescendantOf(t){t instanceof Wo&&(t=t.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===t)return!0;e=e.parent}return!1}};var kt=class extends Wo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof kt&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let r=this.children.indexOf(e);r>=0&&(this.children.splice(r,1),e.parent=void 0)}traverse(e){let r=e(this);if(r!==!0)for(let o of this.children)o instanceof kt?o.traverse(e):r=e(o)}intersectsChildren(e,r,o,i=!1,a=[]){for(let s of this.children)if(s instanceof kt&&s.intersectsChildren(e,r,o,i,a),s.intersects(e,r,o)&&(a.push(s),i))break;return a}updateWorldMatrix(e,r,o){if(super.updateWorldMatrix(e,r,o),o&&this.children)for(let i of this.children)i.updateWorldMatrix(e,!1,!0)}find(e){let r;return this.traverse(o=>{o.uuid===e&&(r=o)}),r}innerDrawChildren(e){for(let r=this.children.length-1;r>=0;r--)this.children[r].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let r=new kt(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}},$o=class extends kt{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.reset(r)}reset(e){this.data=e}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let r=new $o(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function QN(n,t){let[[e,r],[o,i]]=n,[[a,s],[l,u]]=t,c=(e-o)*(s-u)-(r-i)*(a-l);if(c===0)return!1;let d=((e-a)*(s-u)-(r-s)*(a-l))/c,p=-((e-o)*(r-s)-(r-i)*(e-a))/c;return d>=0&&d<=1&&p>=0&&p<=1}var Jb=[[-1,1],[-1,-1],[1,-1],[1,1]],Zb=(n,t,e)=>{let r=n.getCenter(),o=n.getHalfSize(),i=Ne.append(t,n.worldMatrix);o[0]===0&&o[1]===0?e.push(Ne.apply(r,i)):Jb.forEach(a=>{let s=[a[0]*o[0]+r[0],a[1]*o[1]+r[1]];e.push(Ne.apply(s,i))})},On=class{constructor(){this.matrix=Ne.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(t,e=!1){t.updateWorldMatrix(),this.makeEmpty(),Ne.copy(t.worldMatrix,this.matrix);let r=Ne.invert(t.worldMatrix);this.expandByObjectSize(t,r,e)}expandByObjectSize(t,e,r=!1){let o=[];r===!0&&t instanceof kt?t.traverse(i=>{i.visible&&Zb(i,e,o)}):Zb(t,e,o),this.setFromPoints(o)}getCenter(){let[t,e]=this.min,[r,o]=this.getHalfSize();return Ne.apply([t+r,e+o],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[(this.max[0]-this.min[0])*.5,(this.max[1]-this.min[1])*.5]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(t){this.makeEmpty();for(let e of t)this.expandByPoint(e)}expandByPoint(t){this.min=[Math.min(this.min[0],t[0]),Math.min(this.min[1],t[1])],this.max=[Math.max(this.max[0],t[0]),Math.max(this.max[1],t[1])]}computeVertices(){let[t,e]=this.getHalfSize(),r=this.getCenter(),[o,i,a,s]=Ne.getAbcdef(this.matrix),l=Ne.create(o,i,a,s,r[0],r[1]);this.vertices=Jb.map(([u,c])=>Ne.apply([u*t,c*e],l))}computeEdges(){this.edges=[];for(let t=0,e=this.vertices.length;t<e;++t)this.edges.push([this.vertices[t],this.vertices[(t+1)%e]])}project(t,e){let r=this.matrix;return e&&(r=Ne.append(e.worldMatrix,r)),Ne.applyInverse(t,r)}intersects(t,e,r){return this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}containsPoint(t){let[e,r]=t,[o,i]=this.min,[a,s]=this.max;return e>=o&&e<=a&&r>=i&&r<=s}intersectsBBox2D(t){for(let e=0,r=this.edges.length;e<r;e++){let o=this.edges[e];for(let i=0,a=t.edges.length;i<a;i++){let s=t.edges[i];if(QN(o,s))return!0}}for(let e=0,r=t.vertices.length;e<r;e++){let o=t.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let t=this.min,e=this.max;this.min=[Math.min(t[0],e[0]),Math.min(t[1],e[1])],this.max=[Math.max(t[0],e[0]),Math.max(t[1],e[1])]}copy(t){this.min=[...t.min],this.max=[...t.max],Ne.copy(t.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let t=new On;return t.copy(this),t}};var tv,rv=new Promise(n=>{tv=n}),ev=!1;var ku;function ov(){if(ev)return;if(ku)return ku;async function n(){let e=await import("./ui.js");tv(e.default??e),ev=!0}return ku=n(),ku}function av(n){let t=!1;return n.scene.objects.traverse((e,r)=>{(r.type==="Mesh"&&r.geometry.type==="UIGeometry"||r.type==="Page"&&r.uiFrame!==void 0)&&(t=!0)}),t}var be,jf;async function KN(n){let t=await rv;be||(jf||(jf=t({locateFile:()=>n})),be=await jf)}var nv=Ne.identity(),xl=class{constructor(t,e=1){this.canvas=t;this.dpr=e;this._width=0;this._height=0;this._strokeMode="inside";this._layerBlur=0;this._backgroundBlur=0;this._dropShadowBlur=0;this._dropShadowOffsetX=0;this._dropShadowOffsetY=0;this._dropShadowColor=we.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=we.transparent;this._fonts=new Map;try{let r=t.getBoundingClientRect();t.width=r.width*e,t.height=r.height*e}catch{console.log(t.width,e)}this._currentM3Transform=nv,this._currentTransform=new Float32Array(nv)}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await KN(this.wasmURL),this._surface=be.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new be.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(be.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(be.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(t){this._currentM3Transform=t,this._currentTransform.set(t)}async loadFont(t,e){let r=await(await fetch(t)).arrayBuffer();this.registerFont(r,e)}registerFont(t,e){if(this._fonts.has(e))return;let r=be.FontMgr.FromData(t);if(r)this._fonts.set(e,r);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(t){this._paintStroke&&this._paintStroke.setColor(Fu(t),be.ColorSpace.DISPLAY_P3)}set fillColor(t){this._paintFill&&this._paintFill.setColor(Fu(t),be.ColorSpace.DISPLAY_P3)}set lineWidth(t){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?t:t*2)}set strokeMode(t){this._strokeMode=t}set dropShadowBlur(t){this._dropShadowBlur=t}set dropShadowColor(t){this._dropShadowColor=t}set dropShadowOffsetX(t){this._dropShadowOffsetX=t}set dropShadowOffsetY(t){this._dropShadowOffsetY=t}set innerShadowBlur(t){this._innerShadowBlur=t}set innerShadowColor(t){this._innerShadowColor=t}set innerShadowOffsetX(t){this._innerShadowOffsetX=t}set innerShadowOffsetY(t){this._innerShadowOffsetY=t}set innerShadowSpread(t){this._innerShadowSpread=t}set layerBlur(t){this._layerBlur=t}set backgroundBlur(t){this._backgroundBlur=t}clear(){this.ctx?.clear(be.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new be.Path}closePath(){let t=this._currentPath;if(t){if(t.isEmpty())return;let e=t.getBounds();(e[3]-e[1]||e[2]-e[0])&&t.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(t,e,r,o,i=0,a=0,s=0,l=0){let u=be.XYWHRect(t,e,r,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(u,be.ClipOp.Intersect,!0);else{let c=be.RRectXY(u,i,i);c[4]=c[5]=i,c[6]=c[7]=a,c[8]=c[9]=s,c[10]=c[11]=l,this.ctx?.clipRRect(c,be.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let t=Ne.invert(this.currentTransform);this.ctx.concat(t);let e=Ne.translate(Ne.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(t,e,r=!0){if(this.ctx&&this._currentPath){let o,i=!1;if(r&&this._hasDropShadow()){let a=t.copy();a.setColor(Fu(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=be.MaskFilter.MakeBlur(be.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,be.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&r){this.ctx.save(),this.ctx.clipPath(this._currentPath,be.ClipOp.Intersect,!0);let a=be.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,be.TileMode.Clamp,null),s=t.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,be.SaveLayerInitWithPrevious),this.ctx.drawColor(t.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),i=!0}if(this._layerBlur>0){let a=t.copy();o=be.MaskFilter.MakeBlur(be.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(o),e(a),a.delete(),o.delete(),i=!0}if(i||e(t),r&&this._hasInnerShadow()){let a=new be.Paint;a.setAntiAlias(!0),a.setStyle(be.PaintStyle.Fill),a.setColor(Fu(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=be.MaskFilter.MakeBlur(be.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[u,c,d,p]=l,f=d-u,h=p-c;this.ctx.save(),this.ctx.clipPath(this._currentPath,be.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,be.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(be.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+f+Math.abs(this._innerShadowOffsetX*2),2e3+h+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(be.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(t,e=!0){if(this.ctx&&this._currentPath&&t){let r=this.ctx,o=this._currentPath;this._applyEffectsToPaint(t,i=>{let a=!1;!e&&this._strokeMode!=="center"&&(r.save(),r.clipPath(o,this._strokeMode==="outside"?be.ClipOp.Difference:be.ClipOp.Intersect,!0),a=!0),r.drawPath(o,i),a&&r.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}ellipse(t,e,r,o,i,a,s,l){if(!iv([t,e,r,o])||!this._currentPath)return;if(r<0||o<0)throw Error("radii cannot be negative");let u=be.XYWHRect(t-r,e-o,r*2,o*2);this._currentPath?.addOval(u)}rect(t,e,r,o,i=0,a=0,s=0,l=0){let u=be.XYWHRect(t,e,r,o);if(!!iv(u))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(u);else{let c=be.RRectXY(u,i,i);c[4]=c[5]=i,c[6]=c[7]=a,c[8]=c[9]=s,c[10]=c[11]=l,this._currentPath?.addRRect(c)}}getHorizontalAlign(t){switch(t){case 2:return be.TextAlign.Right;case 3:return be.TextAlign.Center;case 4:return be.TextAlign.Justify;case 1:default:return be.TextAlign.Left}}drawTextInner(t,e,r,[o,i,a,s],l,u,c=!0){let d=0,{ctx:p}=this;if(!p)return d;let f=u.copy(),h=u.copy();return h.setAlphaf(0),this._applyEffectsToPaint(f,m=>{e.pushPaintStyle(r,m,h),e.addText(t);let y=e.build();y.layout(a);let g=i;l===2?g+=(s-y.getHeight())/2:l===3&&(g+=s-y.getHeight()),p.drawParagraph(y,o,g),d=y.getHeight(),e.reset(),y.delete()},c),f.delete(),h.delete(),d}drawText(t,e){let r=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){let l=new be.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),u=new be.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),c=be.XYWHRect(e.x,e.y,e.width,e.height),d=be.ParagraphBuilder.Make(u,o);a&&(r=this.drawTextInner(t,d,l,c,e.verticalAlign,a,!0)),s&&(r=this.drawTextInner(t,d,l,c,e.verticalAlign,s,!1)),d.delete()}return{height:r}}render(){this._surface?.flush()}moveTo(t,e){this._currentPath?.moveTo(t,e)}lineTo(t,e){this._currentPath?.lineTo(t,e)}bezierCurveTo(t,e,r,o,i,a){this._currentPath?.cubicTo(t,e,r,o,i,a)}quadraticCurveTo(t,e,r,o){this._currentPath?.quadTo(t,e,r,o)}setTransform(t,e=!1){if(!this.ctx)return;let r=this.ctx.getTotalMatrix(),o=Ne.invert(r);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let i=Ne.getScale(this.camera.worldMatrix);this.ctx?.scale(1/i[0],1/i[1])}this.ctx?.concat(t),this.currentTransform=t}transform(t){this.ctx?.concat(t)}setSize(t,e){t===this._width&&e===this._height||(this._width=t,this._height=e,this.canvas.style.width=t+"px",this.canvas.style.height=e+"px",this.canvas.width=t*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=be.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function iv(n){for(let t=0;t<n.length;t++)if(n[t]!==void 0&&!Number.isFinite(n[t]))return!1;return!0}function Fu({r:n,g:t,b:e,a:r}){return be.Color4f(n,t,e,r)}var bl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=we.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(t){t.color!==void 0&&(this.color=t.color),t.enabled!==void 0&&(this.enabled=t.enabled),t.blurRadius!==void 0&&(this.blurRadius=t.blurRadius),t.offset!==void 0&&(this.offset=t.offset),t.spread!==void 0&&(this.spread=t.spread)}};var vl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.radius!==void 0&&(this.radius=t.radius)}};var ju=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=we.transparent;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color)}};var Uu=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=we.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color),t.thickness!==void 0&&(this.thickness=t.thickness),t.mode!==void 0&&(this.mode=t.mode)}};var Pr=class extends Wo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.fill=new ju(e+"-fill",r.fill,o),this.stroke=new Uu(e+"-stroke",r.stroke,o),this.dropShadow=new bl(e+"-dropShadow",r.dropShadow,o),this.innerShadow=new bl(e+"-innerShadow",r.innerShadow,o),this.backgroundBlur=new vl(e+"-backgroundBlur",r.backgroundBlur,o),this.layerBlur=new vl(e+"-layerBlur",r.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:we.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:we.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=we.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=we.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Oe(e.path,["fill"])?this.fill.update(e.props):Oe(e.path,["stroke"])?this.stroke.update(e.props):Oe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Oe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Oe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Oe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,r){super.updateState(e,r),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let r=new Pr(this.uuid,this.data,e);return r.parent=void 0,r}};var Cn=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.updateState(r,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,r){return Qb(e,r,this.width*.5,this.height*.5,this.width*.5,this.height*.5)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e)}clone(e){let r=new Cn(this.uuid,this.data,e);return r.parent=void 0,r}};var xo=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(r,o)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let r=new xo(this.uuid,this.data,e);return r.parent=void 0,r}};var Tn=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(r,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:we.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:we.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let r=this.data.textTransform,o=this.data.text.textValue.toString(),i=r===2?o.toUpperCase():r===3?o.toLowerCase():o,{height:a}=e.drawText(i,{x:0,y:0,width:this.width,height:this.height,fontSize:this.data.fontSize,lineHeight:this.data.lineHeight??1,letterSpacing:this.data.letterSpacing??0,horizontalAlign:this.data.horizontalAlign,verticalAlign:this.data.verticalAlign,font:this.data.font});this._textHeight=a}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:r}){e.font!==void 0&&(this._fontHolder=r.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateFontState(e,r)}clone(e){let r=new Tn(this.uuid,this.data,e);return r.parent=void 0,r}};var cs=class extends Pr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(r,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(i=>Hu.extremas(i)),r=[1/0,1/0],o=[-1/0,-1/0];for(let i=0,a=e.length;i<a;i++){let s=e[i];s[0][0]<r[0]&&(r[0]=s[0][0]),s[0][1]<r[1]&&(r[1]=s[0][1]),s[1][0]>o[0]&&(o[0]=s[1][0]),s[1][1]>o[1]&&(o[1]=s[1][1])}return this.extremasBBox.min=[r[0],r[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,i=this.data.points.length;o<i;o++){let a=this.data.points[o].data,s=this.data.points[o-1].data,l={start:s.position,cp1:s.controlNext.position,cp2:a.controlPrevious.position,end:a.position};this.curves.push(l)}let e=this.data.points[0].data,r=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:r.position,cp1:r.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,r]=this.extremasBBox.min,[o,i]=this.getHalfSize();return[e+o,r+i]}getHalfSize(){let{min:e,max:r}=this.extremasBBox;return[(r[0]-e[0])*.5,(r[1]-e[1])*.5]}innerDraw(e){for(let i=0,a=this.data.points.length;i<a;i++){let s=this.data.points[i].data;if(i===0){let[l,u]=s.position;e.moveTo(l,u)}else{let l=this.data.points[i-1].data,[u,c]=l.controlNext.position,[d,p]=s.controlPrevious.position,[f,h]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};Hu.derive(m),e.bezierCurveTo(u,c,d,p,f,h)}}let r=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[i,a]=o.controlNext.position,[s,l]=r.controlPrevious.position,[u,c]=r.position;e.bezierCurveTo(i,a,s,l,u,c)}}updateState(e,r){super.updateState(e,r),this.computeExtremas()}clone(e){let r=new cs(this.uuid,this.data,e);return r.parent=void 0,r}},Hu;(i=>{function n(a){let s=a.start,l=a.cp1,u=a.cp2,c=a.end,d=[3*(l[0]-s[0]),3*(l[1]-s[1])],p=[3*(u[0]-l[0]),3*(u[1]-l[1])],f=[3*(c[0]-u[0]),3*(c[1]-u[1])],h={start:d,cp:p,end:f};return a.derivative=h,h.derivative=Uf.derive(h),h}i.derive=n;function t(a,s,l,u=!1){let c=a-2*s+l;if(c!==0){let d=-Math.sqrt(Math.abs(s*s-a*l)),p=-a+s,f=-(d+p)/c,h=-(-d+p)/c;return[f,h]}else if(s!==l&&c===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??i.derive(a),l=s.start,u=s.cp,c=s.end;return[t(l[0],u[0],c[0]),t(l[1],u[1],c[1])]}i.droot=e;function r(a){let[s,l]=i.droot(a),u=[a.start[0],a.end[0]],c=[a.start[1],a.end[1]];for(let d of s)u.push(i.compute(a,Math.min(1,Math.max(0,d)))[0]);for(let d of l)c.push(i.compute(a,Math.min(1,Math.max(0,d)))[1]);return u.sort((d,p)=>d-p),c.sort((d,p)=>d-p),[[u[0],c[0]],[u[u.length-1],c[c.length-1]]]}i.extremas=r;function o(a,s){if(s===0)return[...a.start];if(s===1)return[...a.end];let l=1-s,u=l*l,c=s*s,d=u*l,p=u*s*3,f=l*c*3,h=s*c;return[d*a.start[0]+p*a.cp1[0]+f*a.cp2[0]+h*a.end[0],d*a.start[1]+p*a.cp1[1]+f*a.cp2[1]+h*a.end[1]]}i.compute=o})(Hu||(Hu={}));var Uf;(r=>{function n(o){let i=o.start,a=o.cp,s=o.end,l=[2*(a[0]-i[0]),2*(a[1]-i[1])],u=[2*(s[0]-a[0]),2*(s[1]-a[1])],c={start:l,end:u};return c.derivative=Hf.derive(c),o.derivative=c,c}r.derive=n;function t(o){let i=o.derivative??r.derive(o),a=i.start,s=i.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}r.droot=t;function e(o,i){if(i===0)return[...o.start];if(i===1)return[...o.end];let a=1-i,s=a*a,l=i*i,u=s,c=a*i*2,d=l;return[u*o.start[0]+c*o.cp[0]+d*o.end[0],u*o.start[1]+c*o.cp[1]+d*o.end[1]]}r.compute=e})(Uf||(Uf={}));var Hf;(e=>{function n(r){let o=r.start,i=r.end,a=[i[0]-o[0],i[1]-o[1]];return r.derivative=a,r.derivative}e.derive=n;function t(r,o){if(o===0)return[...r.start];if(o===1)return[...r.end];let i=r.start,a=r.end;return[i[0]+(a[0]-i[0])*o,i[1]+(a[1]-i[1])*o]}e.compute=t})(Hf||(Hf={}));var hr=class extends kt{constructor(e,r,o){super(e,r,o);this.uuid=e;this.width=0;this.height=0;this.background=new xo(e+"-background",oa.defaultData,o),this.background.parent=this,this.updateState(r,o)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(e){this.background.cornerRadius=e}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(e,r,o){super.updateWorldMatrix(e,r,o),this.background?.updateWorldMatrix(e,r,o)}draw(e){if(!this.visible)return;e.save();let r=this.width,o=this.height;this.applyTransforms(e),this.background.width=r,this.background.height=o,this.background.draw(e),e.clipRect(0,0,r,o,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Oe(e.path,["fill"])?this.fill.update(e.props):Oe(e.path,["stroke"])?this.stroke.update(e.props):Oe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Oe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Oe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Oe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let r=new hr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function sv(n,t,e){switch(t.type){case"ellipse2d":return new Cn(n,t,e);case"rectangle2d":return new xo(n,t,e);case"text2d":return new Tn(n,t,e);case"vector2d":return new cs(n,t,e);case"frame2d":return new hr(n,t,e);case"group2d":default:return new $o(n,t,e)}}var qf=class{constructor(t,e,r){this.uuid=t;this.data=e;this.group=new $o(qf.GROUP_ID,{...Ds.defaultData},r),this.createChildrenObjects(e.objects,this.group,r)}createObject(t,e,r,o,i,a){let s=sv(t,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),r.length>0&&(s instanceof $o||s instanceof hr)&&this.createChildrenObjects(r,s,a))}createChildrenObjects(t,e,r){let o=0;for(let i of t)this.createObject(i.id,i.data,i.children,e,o,r),o+=1}draw(t){this.group.draw(t)}updateEntityByOp(t,e,r,o){let i=this.find(t);if(i)try{i.updateByOp(e,r,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(t,e){if(t.path.length===0&&t.type===7){let r=t.parent===null?this.group:this.find(t.parent);r!==void 0&&r instanceof kt&&(this.createObject(t.id,t.data,t.children,r,t.localIndex,e),r.requestRender())}else if(t.path.length===0&&t.type===8){let r=this.find(t.id);if(r!==void 0&&r.parent!==void 0&&r.parent instanceof kt){let o=r.parent;r.resetBBoxNeedsUpdate(),o?.remove(r),o?.requestRender()}}else if(t.path.length===0&&t.type===9){let r=this.find(t.id);if(r!==void 0){let o=r.parent,i=t.parent===null?this:this.find(t.parent);if(i===void 0&&!1&&console.error("unexpected",i,t),i instanceof kt||i===this){i.add(r);let a=t.localIndex;i.children.splice(a,0,i.children.pop()),r.updateWorldMatrix(!0,!1,!0),o?.requestRender(),r.requestRender()}r.resetBBoxNeedsUpdate()}}}add(t){this.group.add(t)}remove(t){this.group.remove(t)}traverse(t){this.group.traverse(e=>{e!==this.group&&t(e)})}intersectsChildren(t,e,r,o=!1,i=[]){return this.group.intersectsChildren(t,e,r,o,i)}find(t){return this.group.find(t)}get children(){return this.group.children}project(t,e){return this.group.project(t,e)}getWithSortKey(t){let e=this.find(t);if(e===void 0)return;let r=[],o=e;for(;o!==this.group;){let i=o;o=o.parent;let a=o.children.indexOf(i);r.splice(0,0,a)}return{entity:e,sortKey:r}}getAllSorted(t){let e=[];for(let r of t){let o=this.getWithSortKey(r.id);o!==void 0&&e.push(o)}return e.sort((r,o)=>Tl(r.sortKey,o.sortKey)),e.map(r=>r.entity)}},ci=qf;ci.GROUP_ID="scene2d";function Wf({constraints:n,newParentWidth:t,newParentHeight:e,initialParentWidth:r,initialParentHeight:o,objectInitialWidth:i,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:u}=n,c=t-r,d=e-o,p=i,f=a,h=s[0],m=s[1];if(l!==0){if(l===1)h+=c;else if(l===3)h+=c/2;else if(l===2)p=Math.max(1,p+c);else if(l===4){let y=t/r;p*=y,h*=y}}if(u!==0){if(u===1)m+=d;else if(u===3)m+=d/2;else if(u===2)f=Math.max(1,f+d);else if(u===4){let y=e/o;f*=y,m*=y}}return{width:p,height:f,position:[h,m]}}import{MathUtils as ZN}from"three";var JN=Ne.identity(),us=class{constructor(t,e,r,o){this.uuid=t;this.width=e;this.height=r;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this.onFrameOverrideObjectEvent=t=>{if(t.target?.uuid!==void 0){let e=this.frameRoot?.find(t.target.uuid);e&&e.dispatchEvent({...t,target:e})}};this.scene2d=new ci(ZN.generateUUID(),Gc.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=document.createElement("canvas"),this.renderer=new xl(this.canvas),o.shared.addCanvas(this.uuid,this.canvas),this.textureHolder=o.shared.canvas(this.uuid),this.promise=this.init()}async init(){this.renderer instanceof xl&&(this.renderer.wasmURL=Hx.skiaWasmUrl),await this.renderer.init()}render(){this.isFrameDirty&&(this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),this.textureHolder?.setNeedsUpdate(!0),this.isFrameDirty=!1)}updateEntity2DByOp(t,e,r,o){this.scene2d.updateEntityByOp(t,e,r,o),this.applySize()}updateTreeByOp(t,e){this.scene2d.updateTreeByOp(t,e),this.applySize()}applyOverrides(t){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=t?.width??this.width,r=t?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=r,this.frameOverride.localMatrix=JN,this.isScreenSpace&&(this.frameOverride.fill.color=we.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:r},lv({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(t){let e=t?.width??this.width,r=t?.height??this.height;this.width=e,this.height=r,this.renderer.dpr=this.isScreenSpace?window.devicePixelRatio:Math.floor(2048/Math.max(e,r)),this.renderer.setSize(e,r),this.textureHolder?.dispose(),this.applyOverrides(t),this.frameOverride?.requestRender()}applyFrame(t){let e=this.context.scene.find2D(t);if(!(!e||!(e instanceof hr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.textureHolder?.dispose(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(r=>{r.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(r=>{r.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(t){return this.scene2d.find(t)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(t=>{t.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(t=>{t.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function lv({objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i}){if(n instanceof hr&&t instanceof hr)for(let a=0,s=n.children.length;a<s;a++){let l=n.children[a],u=t.children[a];l&&u&&l.uuid===u.uuid&&e3({objectOverride:l,objectRoot:u,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i})}}function e3({objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i}){let{width:a,height:s,position:l}=Wf({constraints:n.data,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i,objectInitialWidth:$f(t)?t.width:0,objectInitialHeight:$f(t)?t.height:0,objectInitialPosition:t.position});if(n.position=l,n.data={...n.data,position:l},n.states)for(let u in n.states)t3({stateId:u,objectOverride:n,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:i});$f(n)&&(n.width=a,n.height=s,n.data={...n.data,width:a,height:s},lv({objectOverride:n,objectRoot:t,newParentWidth:n.width,newParentHeight:n.height,initialParentWidth:t.width,initialParentHeight:t.height}))}function t3({stateId:n,objectOverride:t,objectRoot:e,newParentWidth:r,newParentHeight:o,initialParentWidth:i,initialParentHeight:a}){let s=t.states?.[n],l=e.states?.[n];if(s&&l){let{width:u,height:c,position:d}=Wf({constraints:t.data,newParentWidth:r,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:Bo.isResizeable(l)?l.width:0,objectInitialHeight:Bo.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(t.states[n],{position:d}),Bo.isResizeable(s)&&Object.assign(t.states[n],{width:u,height:c})}}function $f(n){return n instanceof xo||n instanceof hr||n instanceof Cn||n instanceof Tn}var Or=class extends la(i3){constructor(e,r,o){super();this.data=r;this.bgColor=new St(1,1,1,1);this.fog=null;this.backupFog=new o3(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new r3;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new qo(ln,{...jn.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new n3(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),r.uiScene?this.uiScene=new ci((Array.isArray(e)?e[0]:e)+"-ui",r.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):r.uiFrame&&this.createUICanvas(r.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,r){this.uiCanvas=new us(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,r),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=zt(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(r=>{r instanceof nr&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&Ub(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=zt(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=zt(e.aoColor,r))}updateByOp(e,r,o,i){let a=this.data.uiFrame;super.updateByOp(e,r,o,i);let s=r;Oe(e.path,["fog"])?this.updateFog(s.fog,o.shared):Oe(e.path,["ao"])?this.updateAo(s.ao,o.shared):Oe(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Oe(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,r){e?(this.uiCanvas||this.createUICanvas(e,r),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(zt(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,r){}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof ss&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof ls&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize,r+=1)})}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Ce.is(a)&&(a.visible||s?.object.data.visible)&&((An(a)||hl(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Sl(a,e,r,!0)),o(a))}};return o(this),r}updateEntity2DByOp(e,r,o,i){this.uiCanvas?.updateEntity2DByOp(e,r,o,i)}};import{PointLight as a3,Vector3 as qu,Box3 as s3,Box3Helper as cv,Color as l3}from"three";var Wu=class extends ns(a3,as){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new qu(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new qu(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new s3(a,s),u=new cv(l,new l3(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof cv){let r=this.shadow.camera,o=new qu(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),i=new qu(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var $u=class extends ot{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?Ks(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var ds=class extends ot{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),this.updateShape()}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let r;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=va;break;case"Ellipse":i=ya;break;case"Polygon":i=lu;break;case"Star":i=cu;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=i.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?Ks(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};import{Group as c3,Matrix4 as u3,Skeleton as d3}from"three";var Yo=class extends _r(c3,Ar){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,r){let o=Ji.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let i,a;for(let s of to.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=Xr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...gt.defaultData,...e,...Mr(gt.defaultData,to.rootOverrideProps)}}updateByOp(e,r,o,i){let a;if(this.isInstanceRoot&&!i){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of to.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&to.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,i)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(Ce.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Yu(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};dv(e,[this.uuid],r.overrides,this,o,o,0,i,a);for(let s of this.children)if(Ce.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(u=>{if(u instanceof ot&&u.isSkinnedMesh){let c=u.dataPatched;if(c.bones&&c.boneInverses){let d=c.bones.map(h=>e.scene.find(a[h])),p=c.boneInverses.map(h=>new u3().fromArray(h)),f=new d3(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Yu(n){if(n.component){let t=n.component.instances.indexOf(n);t>=0&&n.component.instances.splice(t,1);for(let e of n.children)Ce.is(e)&&Yu(e)}}function uv(n,t,e,r){return n.component===t&&fd(n.identity,r)?n.overrideData===e?2:1:0}function dv(n,t,e,r,o,i,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let c=r.component.instances.indexOf(r);c>=0&&r.component.instances.splice(c,1)}o.instances.push(r),r.component=o}o instanceof Yo&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let c of o.children)if(Ce.is(c)){let d=[...t,...typeof c.identity=="string"?[c.identity]:c.identity],p=Ki.resolve(e,d,1);if(p!=null&&!(p instanceof qe)){if(!1)debugger;Object.setPrototypeOf(p,qe.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[u];if(f=Ce.is(m)?m:null,f!==null){let y=uv(f,c,p,d);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=uv(f,c,p,d);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),r.children.splice(u,0,f),f.parent===r?(g<=u&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=p?Xr.apply(c.data,p):c.data;Ir.is(m.type)&&(m={...m,type:"Empty"}),f=Er.createEntity(d,m,n),f.overrideData=p,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(u,0,f),f.updateState(f.data,n),h&&f.changeSelectedState(h,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}u+=1,dv(n,t,e,f,c,i,a+1,s,l)}if(!s){let c=u;for(;;){let d=r.children[u];if(Ce.is(d))n.pendingDeletes.add(d);else break;u+=1}r.children.splice(c,u-c)}return!0}import{Bone as p3}from"three";var Xu=class extends _r(p3,Ar){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};var ui=class extends ot{constructor(e,r,o){super(e,r,o);this.onBeforeRender=()=>{this.uiCanvas.render()};this.uiCanvas=new us(e+"-canvas",r.geometry.width,r.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,r){let o=e?.width??this.dataPatched.geometry.width,i=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:i}),this.applyGeometryParametersFromFrame(r)}applyFrame(e,r){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(r),this.applyMaterialParametersFromFrame({shared:r})}applyGeometryParametersFromFrame(e){let r=this.frame;r&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=Go(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let r=this.frame;if(r){let o=r.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,r,o,i){this.uiCanvas.updateEntity2DByOp(e,r,o,i),e===this.frameId&&r.type===0&&(r.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(i):Oe(r.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:i}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.applySize({width:e.width,height:e.height},r)}};import{Object3D as w3,Vector3 as Cr,InstancedMesh as _3,InstancedBufferAttribute as A3,PlaneGeometry as P3,Vector4 as wl,Quaternion as Dv,TextureLoader as O3,Texture as Ev,Euler as C3,MathUtils as eh}from"three";import{GPUComputationRenderer as T3}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as pv,FloatType as Yf,DataTexture as Xf,RGBAFormat as Qf,Mesh as qse,Euler as Wse,Matrix4 as $se}from"three";import{MeshSurfaceSampler as f3}from"three/examples/jsm/math/MeshSurfaceSampler.js";function fv(n){let t=new Float32Array(n*n*2);for(let e=0;e<n;e++)for(let r=0;r<n;r++){let o=e*n+r;t[o*2+0]=e/(n-1),t[o*2+1]=r/(n-1)}return t}function hv(n){let t=Math.ceil(Math.sqrt(n));return Math.max(t,1)}function mv(n,t){let e=[],r=[],o=new pv,i=new pv,a=new f3(n).build();for(let u=0;u<t;u++)a.sample(o,i),e.push(o.x,o.y,o.z),r.push(i.x,i.y,i.z);let s=new Float32Array(e),l=new Float32Array(r);return{positions:s,normals:l}}function Kf(n,t){let e=n,r=new Float32Array(4*t*t);for(let i=0;i<t*t;i++)r[4*i]=e[3*i],r[4*i+1]=e[3*i+1],r[4*i+2]=e[3*i+2],r[4*i+3]=0;let o=new Xf(r,t,t,Qf,Yf);return o.needsUpdate=!0,o}function yv({size:n}){let t=new Float32Array(4*n*n);for(let r=0;r<n*n;r++)t[4*r]=r,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Xf(t,n,n,Qf,Yf);return e.needsUpdate=!0,e}function gv(n){let t=new Float32Array(4*n*n);for(let r=0;r<n*n;r++)t[4*r]=0,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Xf(t,n,n,Qf,Yf);return e.needsUpdate=!0,e}var xv=`
2615
2615
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
2616
2616
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
2617
2617
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -3397,7 +3397,7 @@ vec3 lab2rgb (in vec3 lab) {
3397
3397
 
3398
3398
  gl_FragColor = vec4(finalColor, finalAlpha);
3399
3399
 
3400
- `;var Qu=class extends h3{constructor(e,r){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,r),this.context=r}reset(){}init(e,r){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],this.lightLayer=new Wt(0,"",{...ht.defaultData("light","phong"),visible:!1},new ko,{},r.shared),this.build()}updateState(e){e.coloring!==void 0&&(this.isColoringRandom=e.coloring==="random"),e.color!==void 0&&(e.color instanceof Array?this.uniforms.uColor.value=e.color:this.uniforms.uColor.value=this.context.shared.color(e.color)),e.color2!==void 0&&(e.color2 instanceof Array?this.uniforms.uColor2.value=e.color2:this.uniforms.uColor2.value=this.context.shared.color(e.color2)),e.size!==void 0&&(this.uniforms.uSize.value=e.size[0],this.uniforms.uSizeEnd.value=e.size[1],e.size[0]!==e.size[1]?this.useSizeEnd=!0:this.useSizeEnd=!1),e.ease!==void 0&&(this.easeOpacity=e.ease,this.build()),e.easeSize!==void 0&&(this.easeSize=e.easeSize,this.build()),this.needsUpdate=!0}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader}build(){let e=new Na;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(Lx),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(Rx),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(Ov),e.addFragmentParsCode(Tv),e.addVertexFinalCode(Cv({easeSize:this.easeSize})),e.addFragmentFinalCode(Mv({easeOpacity:this.easeOpacity})),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms={...e.uniforms,...this.uniforms},this.extensions=e.extensions,this}get nodeMaterial(){return this}get fragment(){return this.lightLayer.node}getDefines(){return this.defines}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}};import{BoxGeometry as m3,ConeGeometry as y3,MeshBasicMaterial as g3,SphereGeometry as Jf,Vector3 as x3}from"three";import{Mesh as b3}from"three";import{TorusGeometry as v3}from"three";import{PlaneGeometry as S3}from"three";var ps=class{constructor(t,e,r,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=t,this.type=r,this.textureSize=hv(e),this.targetMesh=o;let i=1,{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(r,i));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(t,e){let{positions:r,normals:o}=mv(e,t*t),i=Kf(r,t),a=Kf(o,t);return{dataTexture:i,positions:r,dataTextureNormals:a}}getMesh(t,e){let r=null;switch(t){case"SphereEmitterShape":{r=new Jf(e*.5,32,32);break}case"TorusEmitterShape":{r=new v3(e*.5,.3,15,40);break}case"ConeEmitterShape":{r=new y3(e,e,15);break}case"BoxEmitterShape":{r=new m3(e,e,e);break}case"PlaneEmitterShape":{r=new S3(e,e),r.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{r=new Jf(e,32,32);break}default:{r=new Jf(e,32,32);break}}return new b3(r,new g3({color:16711680}))}applyToShader(t,e){this.size=new x3().fromArray(e.size),t.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function ui(n){let t={...n},e=qi.defaultData;t.forceFieldObjectId&&(t.colliderEntityId=t.forceFieldObjectId);let r={...e.shape,...t.shape},o={...e.renderMaterial,...t.renderMaterial};return{...e,...t,shape:r,renderMaterial:o}}var Iv=`
3400
+ `;var Qu=class extends h3{constructor(e,r){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,r),this.context=r}reset(){}init(e,r){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],this.lightLayer=new Wt(0,"",{...ht.defaultData("light","phong"),visible:!1},new ko,{},r.shared),this.build()}updateState(e){e.coloring!==void 0&&(this.isColoringRandom=e.coloring==="random"),e.color!==void 0&&(e.color instanceof Array?this.uniforms.uColor.value=e.color:this.uniforms.uColor.value=this.context.shared.color(e.color)),e.color2!==void 0&&(e.color2 instanceof Array?this.uniforms.uColor2.value=e.color2:this.uniforms.uColor2.value=this.context.shared.color(e.color2)),e.size!==void 0&&(this.uniforms.uSize.value=e.size[0],this.uniforms.uSizeEnd.value=e.size[1],e.size[0]!==e.size[1]?this.useSizeEnd=!0:this.useSizeEnd=!1),e.ease!==void 0&&(this.easeOpacity=e.ease,this.build()),e.easeSize!==void 0&&(this.easeSize=e.easeSize,this.build()),this.needsUpdate=!0}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader}build(){let e=new Da;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(Lx),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(Rx),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(Ov),e.addFragmentParsCode(Tv),e.addVertexFinalCode(Cv({easeSize:this.easeSize})),e.addFragmentFinalCode(Mv({easeOpacity:this.easeOpacity})),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms={...e.uniforms,...this.uniforms},this.extensions=e.extensions,this}get nodeMaterial(){return this}get fragment(){return this.lightLayer.node}getDefines(){return this.defines}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}};import{BoxGeometry as m3,ConeGeometry as y3,MeshBasicMaterial as g3,SphereGeometry as Jf,Vector3 as x3}from"three";import{Mesh as b3}from"three";import{TorusGeometry as v3}from"three";import{PlaneGeometry as S3}from"three";var ps=class{constructor(t,e,r,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=t,this.type=r,this.textureSize=hv(e);let i=1;this.targetMesh=o?.type==="Mesh"?o:this.getMesh("SphereEmitterShape",i);let{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(r,i));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(t,e){let{positions:r,normals:o}=mv(e,t*t),i=Kf(r,t),a=Kf(o,t);return{dataTexture:i,positions:r,dataTextureNormals:a}}getMesh(t,e){let r=null;switch(t){case"SphereEmitterShape":{r=new Jf(e*.5,32,32);break}case"TorusEmitterShape":{r=new v3(e*.5,.3,15,40);break}case"ConeEmitterShape":{r=new y3(e,e,15);break}case"BoxEmitterShape":{r=new m3(e,e,e);break}case"PlaneEmitterShape":{r=new S3(e,e),r.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{r=new Jf(e,32,32);break}default:{r=new Jf(e,32,32);break}}return new b3(r,new g3({color:16711680}))}applyToShader(t,e){this.size=new x3().fromArray(e.size),t.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function di(n){let t={...n},e=Wi.defaultData;t.forceFieldObjectId&&(t.colliderEntityId=t.forceFieldObjectId);let r={...e.shape,...t.shape},o={...e.renderMaterial,...t.renderMaterial};return{...e,...t,shape:r,renderMaterial:o}}var Iv=`
3401
3401
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
3402
3402
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
3403
3403
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -3444,15 +3444,15 @@ void main() {
3444
3444
 
3445
3445
 
3446
3446
  }
3447
- `;var th=10,Ku=class extends w3{constructor(e,r){super();this.type="ParticleEmitter";this.debugMode=!1;this.worldSpace=!0;this.rootObject=null;this.gpuCompute=null;this.positionSimRT=null;this.velocitySimRT=null;this.emissionRateSimRT=null;this.emitterShape=void 0;this.isEmitting=!1;this.hasBeenReset=!1;this.emittedParticlesAmount=0;this.lastEmitTime=0;this.globalTime=0;this.targetFPS=60;this.previousRatio=1;this.lerpFactor=.4;this.particlesAmount=0;this.noiseStrength=0;this.noiseScale=0;this.isBillboardBased=!0;this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1};this.textureLoader=new O3;this.currentWorldPosition=new Cr;this.systemQuaternion=new Dv;this.worldGravity=new Cr(0,0,0);this.directionAxis=new Cr(0,0,0);this.colliderV3=new Cr(0,0,0);this.colliderQuaternion=new Dv(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=r,this.shared=r.context.shared;let o=r.data;this.material=new Qu(o.renderMaterial,r.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Cr(0,0,0)},uEmissionData:{value:new Cr(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Cr(0,0,0)},uWorldQuaternion:{value:new wl(0,0,0,1)},uRandScaleFactor:{value:o.randomScale??0},uRandRotationFactor:{value:o.randomRotation??0},uRotation:{value:o.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:o.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,o.renderMaterial.texture),this.init(o)}setTexture(e,r){let o=r.data;if(typeof r=="string"){let i=this.shared.image(r),a=new Ev(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new Ev(i);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);i.src=s}}updateGeometryAttributes(e,r){let o=fv(r);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new A3(o,2))}applyWorldSpace(){if(!this.system.started||!this.worldSpace||!this.positionSimRT||!this.velocitySimRT)return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,r){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset){this.reset();return}this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let o=1e3/r,i=this.targetFPS/o,a=this.previousRatio+(i-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=a,this.previousRatio=a;let s=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=s,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0];if(!e)return;e.getWorldPosition(this.colliderV3),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let r=e.data.size;this.colliderV3.fromArray(r),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,r){if(!this.velocitySimRT||!this.positionSimRT)return;r[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),r[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(i,a)=>{let s=[...this.system.data.shape.size];s[i]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};r[2]==="shape_size_0"&&o(0,e),r[2]==="shape_size_1"&&o(1,e),r[2]==="shape_size_2"&&o(2,e),r[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/th),r[2]==="gravity"&&this.worldGravity.set(0,e/100,0),r[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),r[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),r[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),r[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),r[2]==="direction_z"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(!(!this.positionSimRT||!this.velocitySimRT)){if(this.shouldReInitGPUCompute(e)&&this.init(ui(this.system.data)),e.life!==void 0&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),e.speed!==void 0&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/th),e.collisionBounce!==void 0&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),e.noiseStrength!==void 0&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),e.noiseScale!==void 0&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),e.noiseSeed!==void 0&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),e.randomMass!==void 0&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),e.renderMaterial?.size!==void 0){let r=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(r)}if(e.renderMaterial?.spriteRotation!==void 0&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),e.shape!==void 0){let r=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(r[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(r[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(r[2],[this.uuid,"particles","shape_size_2"]))],i={...ui(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,i)}if(e.gravity!==void 0&&(this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.velocitySimRT.material.uniforms.uGravity={value:this.worldGravity}),e.direction!==void 0){let r=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(r),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}e.randomRotation!==void 0&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),e.randomScale!==void 0&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(e.forceIntensity!==void 0&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),e.forceDambing!==void 0&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let r=[Number(e[0])*eh.DEG2RAD,Number(e[1])*eh.DEG2RAD,Number(e[2])*eh.DEG2RAD],o=new C3(r[0],r[1],r[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(o).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:r,rootObjectType:o,colliderEntityId:i,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:u,directionMode:c,noiseType:d}=e;return r!==void 0||o!==void 0||(i||i===null)||l!==void 0||a!==void 0||u!==void 0||s!==void 0||c!==void 0||d!==void 0}init(e){if(this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:e.birthRatePerSec,particleMaxLifeTime:e.life,loopDuration:e.emitTimeCycle==="infinity"?0:e.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn(`The maximum number of particles is limited to ${1e5}.`),this.particlesAmount=1e5),this.emitterShape=this.createShape(e.shape,this.particlesAmount),!this.emitterShape)return;let r=new T3(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),o=this.updateSimulationDefinition(e),i=r.addVariable("uCurrentPosition",o+xv,this.emitterShape.positionsTexture),a=r.addVariable("uCurrentVelocity",o+_v,this.emitterShape.directionsTexture),s=r.addVariable("uCurrentEmissionRate",Iv,gv(this.emitterShape.textureSize));r.setVariableDependencies(i,[i,a,s]),r.setVariableDependencies(a,[i,a,s]),r.setVariableDependencies(s,[i,a,s]);let l=yv({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Cr(0,0,0)},uWorldQuaternion:{value:new wl(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Cr(Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"])))},particleSize:{value:0}};i.material.uniforms=u;let c=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(c),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"]));let d=e.colliderEntityId&&this.system.getColliderData(e.colliderEntityId),p={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new wl(0,0,0,1)},uColliderPos:{value:new Cr(0,0,0)},uColliderSize:{value:new Cr(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new wl(0,0,0,1)},uColliderQuaternionInvert:{value:new wl(0,0,0,1)},particleSize:{value:0},uGravity:{value:this.worldGravity},uNoiseStrength:{value:this.noiseStrength},uNoiseScale:{value:this.noiseScale},uNoiseSeed:{value:e.noiseSeed},uRandomMassFactor:{value:e.randomMass},uBounce:{value:e.collisionBounce},uSpeed:{value:Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/th}};a.material.uniforms=p;let f={uIndex:{value:l},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};s.material.uniforms=f;let h=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],m={...ui(this.system.data).shape,size:h};this.emitterShape.applyToShader(i.material.uniforms,m),r.init(),this.gpuCompute=r,this.positionSimRT=i,this.velocitySimRT=a,this.emissionRateSimRT=s,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0,this.system.stop(),this.system.start()}getDirectionFromVariable(e){let r=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),i=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[r,o,i]}updateSimulationDefinition(e){if(this.simFeaturesDefinition.USE_COLLIDER=!1,this.simFeaturesDefinition.USE_ATTRACTOR=!1,this.simFeaturesDefinition.USE_VORTEX=!1,this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!1,this.simFeaturesDefinition.USE_BOX_COLLIDER=!1,this.simFeaturesDefinition.USE_NORMALS=!1,this.simFeaturesDefinition.USE_CURL_NOISE=!1,this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!1,this.simFeaturesDefinition.USE_FBM_NOISE=!1,e.colliderEntityId&&this.system.colliderEntities.length>0){let o=this.system.getColliderData(e.colliderEntityId);switch(o?.forceType){case"attractor":this.simFeaturesDefinition.USE_ATTRACTOR=!0;break;case"collider":this.simFeaturesDefinition.USE_COLLIDER=!0;break;case"vortex":this.simFeaturesDefinition.USE_VORTEX=!0;break}let i=o?.colliderType;i==="sphere"&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),i==="box"&&(this.simFeaturesDefinition.USE_BOX_COLLIDER=!0)}e.directionMode==="normals"&&(this.simFeaturesDefinition.USE_NORMALS=!0),e.noiseType==="curl"&&(this.simFeaturesDefinition.USE_CURL_NOISE=!0),e.noiseType==="simplex"&&(this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!0),e.noiseType==="fbm"&&(this.simFeaturesDefinition.USE_FBM_NOISE=!0);let r="";for(let[o,i]of Object.entries(this.simFeaturesDefinition))i&&(r+=`#define ${o}
3448
- `);return r}createShape(e,r){this.emitterShape&&this.emitterShape.dispose();let o=new Cr(Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.size[2],[this.uuid,"particles","shape_size_2"])));if(e.type==="MeshEmitterShape"){let i=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(i=a)}),i?new ps(o,r,e.type,i):new ps(o,r,"SphereEmitterShape")}else return new ps(o,r,e.type)}createPrimaryEmitter(e){let r,o=e*e;return r=new _3(new P3(1,1,1),this.material,o),this.updateGeometryAttributes(r,e),this.material.needsUpdate=!0,r.onBeforeRender=()=>{this.applyWorldSpace()},r}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:r,loopDuration:o=0}){return Math.ceil(e*(r+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,r){let o=e-this.lastEmitTime,i=1/r;if(o>=i){let a=Math.max(1,Math.floor(o/i));return this.lastEmitTime=e,this.emittedParticlesAmount+a>this.particlesAmount&&(this.emittedParticlesAmount=0),this.emittedParticlesAmount+=a,a}return 0}checkIfAllParticlesAreDead(){return this.lastEmitTime+this.system.data.life+1<this.globalTime}reset(){this.hasBeenReset=!0,this.lastEmitTime=0,this.emittedParticlesAmount=0,this.gpuCompute&&this.init(ui(this.system.data))}startEmitting(){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=this.globalTime}stopEmitting(){this.isEmitting=!1}};import{BufferGeometry as M3,Float32BufferAttribute as I3}from"three";var Zu=class extends bt{constructor(e,r,o){super(e,r);this.type="ParticleSystem";this.geometry=new M3;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;this.isFrozen=!1;this.isIdle=!0;this.emitter=null;this.colliderEntities=[];this.renderer=null;this.isPreWarm=!1;this._hasOnAfterRenderBeenCalled=!1;this.onAfterRender=e=>{this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))};this.context=o,this.data={...r,...ui(r)},this.geometry.setAttribute("position",new I3([],3)),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Ku(e,this),this.add(this.emitter),this.updateParticleState(this.data)}update(e){if(!this.isReady||!this.started||this.isFrozen||this.isIdle)return;this.actualTime+=e,this.stopped||(this.currentLoopTime+=e);let r=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||r)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),!r&&this.start(this.data.emitTimeLoopDelayStart==="start"?0:this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let i=this.actualTime/1e3;this.emitter.update(i,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(r=>r.identity===e)}getColliderData(e){let r=this.colliderEntities.find(o=>o.identity===e);return r?r.data:null}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Oe(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...Je.drop(e,1).props}}),Oe(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...Je.drop(e,1).props}})}updateState(e,r){super.updateState(e,r),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let r=this.context.scene.find(e.colliderEntityId);this.colliderEntities=r?[r]:[]}e.colliderEntityId===null&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){!this.emitter||this.emitter.updateForceFieldParameters(e)}start(e=0){if(this.currentLoopTime=0,e){setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting()}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting()}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function N3(n,t,e){let r;return t.geometry.type==="TextGeometry"?new Za(n,t,e):(t.geometry.type==="SubdivGeometry"?r=new oi(n,t,e):t.geometry.type==="PathGeometry"?r=new ds(n,t,e):t.geometry.type==="VectorGeometry"?r=new $u(n,t,e):t.geometry.type==="BooleanGeometry"?r=new nr(n,t,e):t.geometry.type==="UIGeometry"?r=new ci(n,t,e):r=new ot(n,t,e),r)}function Ju(n,t,e){return console.assert(t.type!==void 0),t.type==="Mesh"?N3(n,t,e):t.type==="Empty"?new Pn(n,t):t.type==="Particle"?new Zu(n,t,e):t.type==="ParticleCollider"?new zu(n,t,e):t.type==="Splat"?new Pn(n,t):t.type==="Bone"?new Xu(n,t):t.type==="Page"?new Or(n,t,e):t.type==="PointLight"?new Wu(n,t,e):t.type==="SpotLight"?new ss(n,t,e):t.type==="DirectionalLight"?new as(n,t,e):t.type==="Component"||t.type==="Instance"?new Yo(n,t,e):Ir.is(t.type)?new qo(n,t):(console.error(t),new Pn(n,t))}Er.createEntity=Ju;function D3(n,t,e){let r=Ju(n.identity,t,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,u=n.overrideData,c=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(r));for(let p of Object.keys(r))n[p]=r[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=c,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Er.changeEntityProptotype=D3;Er.Cloner=es;function Bv(n,t,e,r){n.updateByOp(t,e,r,!1)}import{Matrix4 as L3,Ray as R3,Raycaster as V3}from"three";function Lv(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,Qa(n),Xa(n)),r.length===0&&o.length===0&&n.layers.set(0),n instanceof or&&n.needsAO&&n.layers.enable(5),e}function Rv(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission").filter(i=>i.data.visible),o=t.getLayersOfType("outline").filter(i=>i.data.visible);return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function Vv(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Lv(e,e.material[r])&&(t=!0);else Lv(e,e.material)&&(t=!0)}),t}function zv(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Rv(e,e.material[r])&&(t=!0);else Rv(e,e.material)&&(t=!0)}),t}var z3=new V3,G3=new L3,k3=new R3;function Sl(n,t,e,r=!1){let o=n.cloner;if(o)for(let i of o.children){let a=G3.copy(i.matrixWorld).invert(),s=k3.copy(t.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let u=z3;u.set(s.origin,s.direction),u.near=t.near,u.far=t.far;let c=u.intersectObject(n,!1);c.length>0&&e.push({...c[0],object:r?i:n})}}var ed=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let i=[o,r],a=r;for(;this._constraints.has(a);)a=this._constraints.get(a),e.has(a)||i.push(a);for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let l=t.find(i[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var qr=Ft(fs()),bo=Ft(hs());var lt=Ft(fs()),ue=Ft(hs()),Tn=class{constructor(t,e,r){this._dataNormalized=t,this._minD=e,this._maxD=r}static createFromUnnormalized(t){let e=ue.sup(t),r=ue.inf(t),o=(0,lt.default)(new Float32Array(t.size),t.shape),i=e-r;return i<1e-4?ue.assigns(o,0):(ue.subs(o,t,r),ue.divs(o,o,i)),new Tn(o,r,e)}get data(){return this._dataNormalized}get minD(){return this._minD}get maxD(){return this._maxD}denormalize(){let t=(0,lt.default)(new Float32Array(this._dataNormalized.size),this._dataNormalized.shape);return ue.muls(t,this._dataNormalized,this._maxD-this._minD),ue.adds(t,t,this._minD),t}},We=class{constructor(t,e){this._quantized=t,this._method=e}get quantized(){return this._quantized}static maxIntBits(t){return 2**t-1}static fromNormalized(t,e){let r=t.data,o;if(e==="norm8x"){let i=We.maxIntBits(8),a=(0,lt.default)(new Float32Array(r.size),r.shape);ue.muls(a,r,i),ue.roundeq(a),o=(0,lt.default)(new Uint8Array(a.data),r.shape)}else if(e==="norm565"){let i=(0,lt.default)(new Float32Array(r.size),r.shape);ue.assign(i,r),ue.mulseq(i.pick(null,0),We.maxIntBits(5)),ue.mulseq(i.pick(null,1),We.maxIntBits(6)),ue.mulseq(i.pick(null,2),We.maxIntBits(5)),ue.roundeq(i);let a=(0,lt.default)(new Uint16Array(i.data),r.shape),s=(0,lt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]),l=(0,lt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]);ue.lshifts(s,a.pick(null,0),11),ue.lshifts(l,a.pick(null,1),5),ue.boreq(s,l),ue.boreq(s,a.pick(null,2)),o=s}else{let i=(0,lt.default)(new Float32Array(r.size),r.shape);ue.assign(i,r),ue.mulseq(i.pick(null,0),We.maxIntBits(11)),ue.mulseq(i.pick(null,1),We.maxIntBits(10)),ue.mulseq(i.pick(null,2),We.maxIntBits(11)),ue.roundeq(i);let a=(0,lt.default)(new Uint32Array(i.data),r.shape),s=(0,lt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]),l=(0,lt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]);ue.lshifts(s,a.pick(null,0),21),ue.lshifts(l,a.pick(null,1),11),ue.boreq(s,l),ue.boreq(s,a.pick(null,2)),o=s}return new We(o,e)}dequantize(t,e){let r=this._method,o,i=this._quantized;if(r==="norm8x"){let a=We.maxIntBits(8);o=(0,lt.default)(new Float32Array(i.size),i.shape),ue.muls(o,i,1/a)}else if(r==="norm565"){let a=(0,lt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),s=(0,lt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),l=(0,lt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]);ue.rrshifts(a,i,11),ue.rrshifts(s,i,5),ue.bandseq(s,We.maxIntBits(6)),ue.bands(l,i,We.maxIntBits(5)),o=(0,lt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ue.muls(o.pick(null,0),a,1/We.maxIntBits(5)),ue.muls(o.pick(null,1),s,1/We.maxIntBits(6)),ue.muls(o.pick(null,2),l,1/We.maxIntBits(5))}else{let a=(0,lt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),s=(0,lt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),l=(0,lt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]);ue.rrshifts(a,i,21),ue.rrshifts(s,i,11),ue.bandseq(s,We.maxIntBits(10)),ue.bands(l,i,We.maxIntBits(11)),o=(0,lt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ue.muls(o.pick(null,0),a,1/We.maxIntBits(11)),ue.muls(o.pick(null,1),s,1/We.maxIntBits(10)),ue.muls(o.pick(null,2),l,1/We.maxIntBits(11))}return new Tn(o,t,e)}};var $e=class{constructor(t,e,r,o,i,a=!1){this._quantized=t,this._minMaxMatrix=e,this._chunkSize=r,this._quantizationMethod=o,this._variableChunkSize=i,this._isDynamicChunks=a}get length(){return this._quantized.shape[0]}get nchunks(){return this._minMaxMatrix.shape[0]}get quantized(){return this._quantized}get method(){return this._quantizationMethod}get minmaxMatrix(){return this._minMaxMatrix}_createPrunedMinMax(t){let e=t.length,r=this.minmaxMatrix.shape[0]-e,o=(0,qr.default)(new Float32Array(r*2),[r,2]),i=0,a=r,s=0,l=this.minmaxMatrix.shape[0];for(let u=0;u<t.length;u++)l=t[u],a=l-s+i,a>i&&bo.assign(o.hi(a,2).lo(i,0),this.minmaxMatrix.hi(l,2).lo(s,0)),i=a,s=l+1;return i<r&&bo.assign(o.lo(i,0),this.minmaxMatrix.lo(s,0)),o}_createPrunedQuantized(t){let e=t.length,r=this.quantized.shape[0]-e,o=this._quantizationMethod,i,a;if(o==="norm8x"){a=this._quantized.shape[1];let d=a?r*a:r;i=(0,qr.default)(new Uint8Array(d),a?[r,a]:[r,1])}else o==="norm565"?i=(0,qr.default)(new Uint16Array(r),[r]):i=(0,qr.default)(new Uint32Array(r),[r]);let s=0,l=r,u=0,c=i.shape[0];for(let d=0;d<t.length;d++)c=t[d],l=c-u+s,l>s&&(a?bo.assign(i.hi(l,a).lo(s,0),this._quantized.hi(c,a).lo(u,0)):bo.assign(i.hi(l).lo(s),this._quantized.hi(c).lo(u))),s=l,u=c+1;return s<r&&(a?bo.assign(i.lo(s,0),this._quantized.lo(u,0)):bo.assign(i.lo(s),this._quantized.lo(u))),i}pruneFeature(t,e,r){let o=this._createPrunedQuantized(t),i=this._createPrunedMinMax(e);return new $e(o,i,this._chunkSize,this._quantizationMethod,r,!0)}static getRequiredNChunks(t,e){return Math.floor(t/e)}static fromArray(t,e,r){let o=t.shape[0],i=Math.floor(o/r),a=(0,qr.default)(new Float32Array(i*2),[i,2],[2,1]),s;e==="norm8x"?s=(0,qr.default)(new Uint8Array(t.size),t.shape):e==="norm565"?s=(0,qr.default)(new Uint16Array(t.shape[0]),[t.shape[0]]):s=(0,qr.default)(new Uint32Array(t.shape[0]),[t.shape[0]]);for(let l=0;l<i;l++){let u=l*r,c=l+1<i?(l+1)*r:o,d;t.shape.length>1?d=Tn.createFromUnnormalized(t.hi(c,t.shape[1]).lo(u,0)):d=Tn.createFromUnnormalized(t.hi(c).lo(u)),a.set(l,0,d.minD),a.set(l,1,d.maxD),s.shape.length>1?bo.assign(s.hi(c,s.shape[1]).lo(u,0),We.fromNormalized(d,e).quantized):bo.assign(s.hi(c).lo(u),We.fromNormalized(d,e).quantized)}return new $e(s,a,r,e)}denormDequant(){let t=this._minMaxMatrix.shape[0],e=this._quantized,r=e.shape[0],o=this._quantizationMethod,i=this._chunkSize,a;if(this._isDynamicChunks){if(!this._variableChunkSize)throw new Error("variable chunk must exists if chunkSize isDynamic");a=this._variableChunkSize}let s;o==="norm8x"?s=(0,qr.default)(new Float32Array(e.size),e.shape):s=(0,qr.default)(new Float32Array(r*3),[r,3]);let l=0,u=i;for(let c=0;c<t;c++){let[d,p]=[this._minMaxMatrix.get(c,0),this._minMaxMatrix.get(c,1)];this._isDynamicChunks&&(u=a[c]);let f=c+1<t?l+u:r,h;e.shape.length>1?h=new We(e.hi(f,e.shape[1]).lo(l,0),o):h=new We(e.hi(f).lo(l),o),bo.assign(s.hi(f,s.shape[1]).lo(l,0),h.dequantize(d,p).denormalize()),l=f}return s}static async fetchArrayBuffer(t){return await(await fetch(t,{mode:"cors"})).arrayBuffer()}};var Xo=Ft(fs()),Me=Ft(hs());var aS="http://127.0.0.1:8000";var di=Ft(fs()),Ue=Ft(hs());var sS=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9];function lS(n){return n<1e5?n<100?n<10?0:1:n<1e4?n<1e3?2:3:4:n<1e7?n<1e6?5:6:n<1e9?n<1e8?7:8:9}function cS(n,t){if(n===t)return 0;if(~~n===n&&~~t===t){if(n===0||t===0)return n<t?-1:1;if(n<0||t<0){if(t>=0)return-1;if(n>=0)return 1;n=-n,t=-t}let o=lS(n),i=lS(t),a=0;return o<i?(n*=sS[i-o-1],t/=10,a=-1):o>i&&(t*=sS[o-i-1],n/=10,a=1),n===t?a:n<t?-1:1}let e=String(n),r=String(t);return e===r?0:e<r?-1:1}function dD(n){let t=0;for(;n>=32;)t|=n&1,n>>=1;return n+t}function uS(n,t,e,r){let o=t+1;if(o===e)return 1;if(r(n[o++],n[t])<0){for(;o<e&&r(n[o],n[o-1])<0;)o++;pD(n,t,o)}else for(;o<e&&r(n[o],n[o-1])>=0;)o++;return o-t}function pD(n,t,e){for(e--;t<e;){let r=n[t];n[t++]=n[e],n[e--]=r}}function dS(n,t,e,r,o){for(r===t&&r++;r<e;r++){let i=n[r],a=t,s=r;for(;a<s;){let u=a+s>>>1;o(i,n[u])<0?s=u:a=u+1}let l=r-a;switch(l){case 3:n[a+3]=n[a+2];case 2:n[a+2]=n[a+1];case 1:n[a+1]=n[a];break;default:for(;l>0;)n[a+l]=n[a+l-1],l--}n[a]=i}}function nh(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])>0){for(s=r-o;l<s&&i(n,t[e+o+l])>0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}else{for(s=o+1;l<s&&i(n,t[e+o-l])<=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let u=a;a=o-l,l=o-u}for(a++;a<l;){let u=a+(l-a>>>1);i(n,t[e+u])>0?a=u+1:l=u}return l}function ih(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])<0){for(s=o+1;l<s&&i(n,t[e+o-l])<0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let u=a;a=o-l,l=o-u}else{for(s=r-o;l<s&&i(n,t[e+o+l])>=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}for(a++;a<l;){let u=a+(l-a>>>1);i(n,t[e+u])<0?l=u:a=u+1}return l}var ah=class{constructor(t,e){_t(this,"array",null);_t(this,"compare",null);_t(this,"minGallop",7);_t(this,"length",0);_t(this,"tmpStorageLength",256);_t(this,"stackLength",0);_t(this,"runStart",null);_t(this,"runLength",null);_t(this,"stackSize",0);this.array=t,this.compare=e,this.length=t.length,this.length<2*256&&(this.tmpStorageLength=this.length>>>1),this.tmp=new Array(this.tmpStorageLength),this.stackLength=this.length<120?5:this.length<1542?10:this.length<119151?19:40,this.runStart=new Array(this.stackLength),this.runLength=new Array(this.stackLength)}pushRun(t,e){this.runStart[this.stackSize]=t,this.runLength[this.stackSize]=e,this.stackSize+=1}mergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;if(t>=1&&this.runLength[t-1]<=this.runLength[t]+this.runLength[t+1]||t>=2&&this.runLength[t-2]<=this.runLength[t]+this.runLength[t-1])this.runLength[t-1]<this.runLength[t+1]&&t--;else if(this.runLength[t]>this.runLength[t+1])break;this.mergeAt(t)}}forceMergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;t>0&&this.runLength[t-1]<this.runLength[t+1]&&t--,this.mergeAt(t)}}mergeAt(t){let e=this.compare,r=this.array,o=this.runStart[t],i=this.runLength[t],a=this.runStart[t+1],s=this.runLength[t+1];this.runLength[t]=i+s,t===this.stackSize-3&&(this.runStart[t+1]=this.runStart[t+2],this.runLength[t+1]=this.runLength[t+2]),this.stackSize--;let l=ih(r[a],r,o,i,0,e);o+=l,i-=l,i!==0&&(s=nh(r[o+i-1],r,a,s,s-1,e),s!==0&&(i<=s?this.mergeLow(o,i,a,s):this.mergeHigh(o,i,a,s)))}mergeLow(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<e;l++)s[l]=a[t+l];let u=0,c=r,d=t;if(a[d++]=a[c++],--o===0){for(l=0;l<e;l++)a[d+l]=s[u+l];return}if(e===1){for(l=0;l<o;l++)a[d+l]=a[c+l];a[d+o]=s[u];return}let p=this.minGallop;for(;;){let f=0,h=0,m=!1;do if(i(a[c],s[u])<0){if(a[d++]=a[c++],h++,f=0,--o===0){m=!0;break}}else if(a[d++]=s[u++],f++,h=0,--e===1){m=!0;break}while((f|h)<p);if(m)break;do{if(f=ih(a[c],s,u,e,0,i),f!==0){for(l=0;l<f;l++)a[d+l]=s[u+l];if(d+=f,u+=f,e-=f,e<=1){m=!0;break}}if(a[d++]=a[c++],--o===0){m=!0;break}if(h=nh(s[u],a,c,o,0,i),h!==0){for(l=0;l<h;l++)a[d+l]=a[c+l];if(d+=h,c+=h,o-=h,o===0){m=!0;break}}if(a[d++]=s[u++],--e===1){m=!0;break}p--}while(f>=7||h>=7);if(m)break;p<0&&(p=0),p+=2}if(this.minGallop=p,p<1&&(this.minGallop=1),e===1){for(l=0;l<o;l++)a[d+l]=a[c+l];a[d+o]=s[u]}else{if(e===0)throw new Error("mergeLow preconditions were not respected");for(l=0;l<e;l++)a[d+l]=s[u+l]}}mergeHigh(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<o;l++)s[l]=a[r+l];let u=t+e-1,c=o-1,d=r+o-1,p=0,f=0;if(a[d--]=a[u--],--e===0){for(p=d-(o-1),l=0;l<o;l++)a[p+l]=s[l];return}if(o===1){for(d-=e,u-=e,f=d+1,p=u+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[d]=s[c];return}let h=this.minGallop;for(;;){let m=0,y=0,g=!1;do if(i(s[c],a[u])<0){if(a[d--]=a[u--],m++,y=0,--e===0){g=!0;break}}else if(a[d--]=s[c--],y++,m=0,--o===1){g=!0;break}while((m|y)<h);if(g)break;do{if(m=e-ih(s[c],a,t,e,e-1,i),m!==0){for(d-=m,u-=m,e-=m,f=d+1,p=u+1,l=m-1;l>=0;l--)a[f+l]=a[p+l];if(e===0){g=!0;break}}if(a[d--]=s[c--],--o===1){g=!0;break}if(y=o-nh(a[u],s,0,o,o-1,i),y!==0){for(d-=y,c-=y,o-=y,f=d+1,p=c+1,l=0;l<y;l++)a[f+l]=s[p+l];if(o<=1){g=!0;break}}if(a[d--]=a[u--],--e===0){g=!0;break}h--}while(m>=7||y>=7);if(g)break;h<0&&(h=0),h+=2}if(this.minGallop=h,h<1&&(this.minGallop=1),o===1){for(d-=e,u-=e,f=d+1,p=u+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[d]=s[c]}else{if(o===0)throw new Error("mergeHigh preconditions were not respected");for(p=d-(o-1),l=0;l<o;l++)a[p+l]=s[l]}}};function pS(n,t,e,r){if(!Array.isArray(n))throw new TypeError("Can only sort arrays");t?typeof t!="function"&&(r=e,e=t,t=cS):t=cS,e||(e=0),r||(r=n.length);let o=r-e;if(o<2)return;let i=0;if(o<32){i=uS(n,e,r,t),dS(n,e,r,e+i,t);return}let a=new ah(n,t),s=dD(o);do{if(i=uS(n,e,r,t),i<s){let l=o;l>s&&(l=s),dS(n,e,e+l,e+i,t),i=l}a.pushRun(e,i),a.mergeRuns(),o-=i,e+=i}while(o!==0);a.forceMergeRuns()}function sh(n){let t=(0,di.default)(new Int32Array(n.shape[0]),[n.shape[0]]),e=(0,di.default)(new Int32Array(n.shape[0]),[n.shape[0]]);return Ue.bands(t,n,1023),Ue.lshifts(e,t,16),Ue.bxoreq(t,e),Ue.bandseq(t,4278190335),Ue.lshifts(e,t,8),Ue.bxoreq(t,e),Ue.bandseq(t,50393103),Ue.lshifts(e,t,4),Ue.bxoreq(t,e),Ue.bandseq(t,51130563),Ue.lshifts(e,t,2),Ue.bxoreq(t,e),Ue.bandseq(t,153391689),t}function fD(n){let t=sh(n.pick(null,0)),e=sh(n.pick(null,1));Ue.lshiftseq(e,1);let r=sh(n.pick(null,2));return Ue.lshiftseq(r,2),Ue.boreq(t,e),Ue.boreq(t,r),t}function Mn(n,t){if(n.shape[0]!==t.shape[0])throw new Error("wrong length");let e=(0,di.default)(new Float32Array(n.size),n.shape,n.stride,n.offset);for(let r=0;r<t.shape[0];r++){let o=t.get(r);if(n.shape.length>1)for(let i=0;i<n.shape[1];i++)e.set(r,i,n.get(o,i));else e.set(r,n.get(o))}return e}function lh(n){let t=Ue.sup(n),e=Ue.inf(n),r=1e3/Math.min(1e3,t-e),o=(0,di.default)(new Float32Array(n.data),n.shape);Ue.mulseq(o,r);let i=(0,di.default)(new Int32Array(o.data),n.shape),a=fD(i),l=Array.from(a.data).map((d,p)=>[d,p]);pS(l,(d,p)=>d[0]-p[0]);let u=l.map(([d,p])=>p);return(0,di.default)(Uint32Array.from(u))}var Tr=class{constructor(t,e,r,o,i,a,s,l,u,c){this.propertyDescs=t,this.format=e,this.nsplats=r,this.xyz=o,this.colors=i,this.harmonics=a,this.opacity=s,this.scaling=l,this.rotation=u,this.maxSHDegree=c}getPlyBinary(){let t=Tr._generateHeaderString(this.propertyDescs,this.format,this.nsplats),e=new TextEncoder().encode(t),r=Object.keys(this.propertyDescs).length,o=(0,Xo.default)(new Float32Array(this.nsplats*r),[this.nsplats,r]);if(Me.assign(o.pick(null,this.propertyDescs.x.index),this.xyz.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.y.index),this.xyz.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.z.index),this.xyz.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.f_dc_0.index),this.colors.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.f_dc_1.index),this.colors.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.f_dc_2.index),this.colors.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.opacity.index),this.opacity.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.scale_0.index),this.scaling.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.scale_1.index),this.scaling.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.scale_2.index),this.scaling.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.rot_0.index),this.rotation.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.rot_1.index),this.rotation.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.rot_2.index),this.rotation.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.rot_3.index),this.rotation.pick(null,3)),this.harmonics&&this.harmonics.length>0)for(let s=0;s<this.harmonics.length;s++){let l=s*3;Me.assign(o.pick(null,this.propertyDescs[`f_rest_${l}`].index),this.harmonics[s].pick(null,0)),Me.assign(o.pick(null,this.propertyDescs[`f_rest_${l+1}`].index),this.harmonics[s].pick(null,1)),Me.assign(o.pick(null,this.propertyDescs[`f_rest_${l+2}`].index),this.harmonics[s].pick(null,2))}let i=new Uint8Array(o.data.buffer),a=new Uint8Array(i.length+e.length);return a.set(e),a.set(i,e.length),a.buffer}save(t,e){let r=this.getPlyBinary(),o=new Blob([r],{type:"application/octet-stream"}),i=new File([o],t),a=new FormData;a.append("file",i),a.append("filename",t),a.append("basedir",e),fetch(`${aS}/push_file`,{method:"POST",body:a})}static async loadFile(t){return await(await fetch(t)).arrayBuffer()}mortonPositionSplatsSort(){let t=lh(this.xyz),e=Mn(this.xyz,t),r=Mn(this.colors,t),o=Mn(this.opacity,t),i=Mn(this.scaling,t),a=Mn(this.rotation,t),s=[];for(let l=0;l<this.harmonics.length;l++)s.push(Mn(this.harmonics[l],t));return new Tr(this.propertyDescs,this.format,this.nsplats,e,r,s,o,i,a,this.maxSHDegree)}static _generateHeaderString(t,e,r){let o=`ply
3447
+ `;var th=10,Ku=class extends w3{constructor(e,r){super();this.type="ParticleEmitter";this.debugMode=!1;this.worldSpace=!0;this.rootObject=null;this.gpuCompute=null;this.positionSimRT=null;this.velocitySimRT=null;this.emissionRateSimRT=null;this.emitterShape=void 0;this.isEmitting=!1;this.hasBeenReset=!1;this.emittedParticlesAmount=0;this.lastEmitTime=0;this.globalTime=0;this.targetFPS=60;this.previousRatio=1;this.lerpFactor=.4;this.particlesAmount=0;this.noiseStrength=0;this.noiseScale=0;this.isBillboardBased=!0;this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1};this.textureLoader=new O3;this.currentWorldPosition=new Cr;this.systemQuaternion=new Dv;this.worldGravity=new Cr(0,0,0);this.directionAxis=new Cr(0,0,0);this.colliderV3=new Cr(0,0,0);this.colliderQuaternion=new Dv(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=r,this.shared=r.context.shared;let o=r.data;this.material=new Qu(o.renderMaterial,r.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Cr(0,0,0)},uEmissionData:{value:new Cr(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Cr(0,0,0)},uWorldQuaternion:{value:new wl(0,0,0,1)},uRandScaleFactor:{value:o.randomScale??0},uRandRotationFactor:{value:o.randomRotation??0},uRotation:{value:o.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:o.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,o.renderMaterial.texture),this.init(o)}setTexture(e,r){let o=r.data;if(typeof r=="string"){let i=this.shared.image(r),a=new Ev(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new Ev(i);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);i.src=s}}updateGeometryAttributes(e,r){let o=fv(r);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new A3(o,2))}applyWorldSpace(){if(!this.system.started||!this.worldSpace||!this.positionSimRT||!this.velocitySimRT)return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,r){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset){this.reset();return}this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let o=1e3/r,i=this.targetFPS/o,a=this.previousRatio+(i-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=a,this.previousRatio=a;let s=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=s,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0];if(!e)return;e.getWorldPosition(this.colliderV3),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let r=e.data.size;this.colliderV3.fromArray(r),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,r){if(!this.velocitySimRT||!this.positionSimRT)return;r[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),r[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(i,a)=>{let s=[...this.system.data.shape.size];s[i]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};r[2]==="shape_size_0"&&o(0,e),r[2]==="shape_size_1"&&o(1,e),r[2]==="shape_size_2"&&o(2,e),r[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/th),r[2]==="gravity"&&this.worldGravity.set(0,e/100,0),r[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),r[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),r[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),r[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),r[2]==="direction_z"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(!(!this.positionSimRT||!this.velocitySimRT)){if(this.shouldReInitGPUCompute(e)&&this.init(di(this.system.data)),e.life!==void 0&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),e.speed!==void 0&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/th),e.collisionBounce!==void 0&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),e.noiseStrength!==void 0&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),e.noiseScale!==void 0&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),e.noiseSeed!==void 0&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),e.randomMass!==void 0&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),e.renderMaterial?.size!==void 0){let r=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(r)}if(e.renderMaterial?.spriteRotation!==void 0&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),e.shape!==void 0){let r=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(r[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(r[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(r[2],[this.uuid,"particles","shape_size_2"]))],i={...di(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,i)}if(e.gravity!==void 0&&(this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.velocitySimRT.material.uniforms.uGravity={value:this.worldGravity}),e.direction!==void 0){let r=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(r),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}e.randomRotation!==void 0&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),e.randomScale!==void 0&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(e.forceIntensity!==void 0&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),e.forceDambing!==void 0&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let r=[Number(e[0])*eh.DEG2RAD,Number(e[1])*eh.DEG2RAD,Number(e[2])*eh.DEG2RAD],o=new C3(r[0],r[1],r[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(o).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:r,rootObjectType:o,colliderEntityId:i,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:u,directionMode:c,noiseType:d}=e;return r!==void 0||o!==void 0||(i||i===null)||l!==void 0||a!==void 0||u!==void 0||s!==void 0||c!==void 0||d!==void 0}init(e){if(this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:e.birthRatePerSec,particleMaxLifeTime:e.life,loopDuration:e.emitTimeCycle==="infinity"?0:e.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn(`The maximum number of particles is limited to ${1e5}.`),this.particlesAmount=1e5),this.emitterShape=this.createShape(e.shape,this.particlesAmount),!this.emitterShape)return;let r=new T3(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),o=this.updateSimulationDefinition(e),i=r.addVariable("uCurrentPosition",o+xv,this.emitterShape.positionsTexture),a=r.addVariable("uCurrentVelocity",o+_v,this.emitterShape.directionsTexture),s=r.addVariable("uCurrentEmissionRate",Iv,gv(this.emitterShape.textureSize));r.setVariableDependencies(i,[i,a,s]),r.setVariableDependencies(a,[i,a,s]),r.setVariableDependencies(s,[i,a,s]);let l=yv({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Cr(0,0,0)},uWorldQuaternion:{value:new wl(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Cr(Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"])))},particleSize:{value:0}};i.material.uniforms=u;let c=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(c),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"]));let d=e.colliderEntityId&&this.system.getColliderData(e.colliderEntityId),p={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new wl(0,0,0,1)},uColliderPos:{value:new Cr(0,0,0)},uColliderSize:{value:new Cr(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new wl(0,0,0,1)},uColliderQuaternionInvert:{value:new wl(0,0,0,1)},particleSize:{value:0},uGravity:{value:this.worldGravity},uNoiseStrength:{value:this.noiseStrength},uNoiseScale:{value:this.noiseScale},uNoiseSeed:{value:e.noiseSeed},uRandomMassFactor:{value:e.randomMass},uBounce:{value:e.collisionBounce},uSpeed:{value:Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/th}};a.material.uniforms=p;let f={uIndex:{value:l},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};s.material.uniforms=f;let h=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],m={...di(this.system.data).shape,size:h};this.emitterShape.applyToShader(i.material.uniforms,m),r.init(),this.gpuCompute=r,this.positionSimRT=i,this.velocitySimRT=a,this.emissionRateSimRT=s,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0,this.system.stop(),this.system.start()}getDirectionFromVariable(e){let r=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),i=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[r,o,i]}updateSimulationDefinition(e){if(this.simFeaturesDefinition.USE_COLLIDER=!1,this.simFeaturesDefinition.USE_ATTRACTOR=!1,this.simFeaturesDefinition.USE_VORTEX=!1,this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!1,this.simFeaturesDefinition.USE_BOX_COLLIDER=!1,this.simFeaturesDefinition.USE_NORMALS=!1,this.simFeaturesDefinition.USE_CURL_NOISE=!1,this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!1,this.simFeaturesDefinition.USE_FBM_NOISE=!1,e.colliderEntityId&&this.system.colliderEntities.length>0){let o=this.system.getColliderData(e.colliderEntityId);switch(o?.forceType){case"attractor":this.simFeaturesDefinition.USE_ATTRACTOR=!0;break;case"collider":this.simFeaturesDefinition.USE_COLLIDER=!0;break;case"vortex":this.simFeaturesDefinition.USE_VORTEX=!0;break}let i=o?.colliderType;i==="sphere"&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),i==="box"&&(this.simFeaturesDefinition.USE_BOX_COLLIDER=!0)}e.directionMode==="normals"&&(this.simFeaturesDefinition.USE_NORMALS=!0),e.noiseType==="curl"&&(this.simFeaturesDefinition.USE_CURL_NOISE=!0),e.noiseType==="simplex"&&(this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!0),e.noiseType==="fbm"&&(this.simFeaturesDefinition.USE_FBM_NOISE=!0);let r="";for(let[o,i]of Object.entries(this.simFeaturesDefinition))i&&(r+=`#define ${o}
3448
+ `);return r}createShape(e,r){this.emitterShape&&this.emitterShape.dispose();let o=new Cr(Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.size[2],[this.uuid,"particles","shape_size_2"])));if(e.type==="MeshEmitterShape"){let i=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(i=a)}),i?new ps(o,r,e.type,i):new ps(o,r,"SphereEmitterShape")}else return new ps(o,r,e.type)}createPrimaryEmitter(e){let r,o=e*e;return r=new _3(new P3(1,1,1),this.material,o),this.updateGeometryAttributes(r,e),this.material.needsUpdate=!0,r.onBeforeRender=()=>{this.applyWorldSpace()},r}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:r,loopDuration:o=0}){return Math.ceil(e*(r+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,r){let o=e-this.lastEmitTime,i=1/r;if(o>=i){let a=Math.max(1,Math.floor(o/i));return this.lastEmitTime=e,this.emittedParticlesAmount+a>this.particlesAmount&&(this.emittedParticlesAmount=0),this.emittedParticlesAmount+=a,a}return 0}checkIfAllParticlesAreDead(){return this.lastEmitTime+this.system.data.life+1<this.globalTime}reset(){this.hasBeenReset=!0,this.lastEmitTime=0,this.emittedParticlesAmount=0,this.gpuCompute&&this.init(di(this.system.data))}startEmitting(){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=this.globalTime}stopEmitting(){this.isEmitting=!1}};import{BufferGeometry as M3,Float32BufferAttribute as I3}from"three";var Zu=class extends bt{constructor(e,r,o){super(e,r);this.type="ParticleSystem";this.geometry=new M3;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;this.isFrozen=!1;this.isIdle=!0;this.emitter=null;this.colliderEntities=[];this.renderer=null;this.isPreWarm=!1;this._hasOnAfterRenderBeenCalled=!1;this.onAfterRender=e=>{this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))};this.context=o,this.data={...r,...di(r)},this.geometry.setAttribute("position",new I3([],3)),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Ku(e,this),this.add(this.emitter),this.updateParticleState(this.data)}update(e){if(!this.isReady||!this.started||this.isFrozen||this.isIdle)return;this.actualTime+=e,this.stopped||(this.currentLoopTime+=e);let r=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||r)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),!r&&this.start(this.data.emitTimeLoopDelayStart==="start"?0:this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let i=this.actualTime/1e3;this.emitter.update(i,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(r=>r.identity===e)}getColliderData(e){let r=this.colliderEntities.find(o=>o.identity===e);return r?r.data:null}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Oe(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...Je.drop(e,1).props}}),Oe(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...Je.drop(e,1).props}})}updateState(e,r){super.updateState(e,r),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let r=this.context.scene.find(e.colliderEntityId);this.colliderEntities=r?[r]:[]}e.colliderEntityId===null&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){!this.emitter||this.emitter.updateForceFieldParameters(e)}start(e=0){if(this.currentLoopTime=0,e){setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting()}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting()}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function N3(n,t,e){let r;return t.geometry.type==="TextGeometry"?new Ja(n,t,e):(t.geometry.type==="SubdivGeometry"?r=new ni(n,t,e):t.geometry.type==="PathGeometry"?r=new ds(n,t,e):t.geometry.type==="VectorGeometry"?r=new $u(n,t,e):t.geometry.type==="BooleanGeometry"?r=new nr(n,t,e):t.geometry.type==="UIGeometry"?r=new ui(n,t,e):r=new ot(n,t,e),r)}function Ju(n,t,e){return console.assert(t.type!==void 0),t.type==="Mesh"?N3(n,t,e):t.type==="Empty"?new Pn(n,t):t.type==="Particle"?new Zu(n,t,e):t.type==="ParticleCollider"?new zu(n,t,e):t.type==="Splat"?new Pn(n,t):t.type==="Bone"?new Xu(n,t):t.type==="Page"?new Or(n,t,e):t.type==="PointLight"?new Wu(n,t,e):t.type==="SpotLight"?new ls(n,t,e):t.type==="DirectionalLight"?new ss(n,t,e):t.type==="Component"||t.type==="Instance"?new Yo(n,t,e):Ir.is(t.type)?new qo(n,t):(console.error(t),new Pn(n,t))}Er.createEntity=Ju;function D3(n,t,e){let r=Ju(n.identity,t,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,u=n.overrideData,c=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(r));for(let p of Object.keys(r))n[p]=r[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=c,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Er.changeEntityProptotype=D3;Er.Cloner=ts;function Bv(n,t,e,r){n.updateByOp(t,e,r,!1)}import{Matrix4 as L3,Ray as R3,Raycaster as V3}from"three";function Lv(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,Ka(n),Qa(n)),r.length===0&&o.length===0&&n.layers.set(0),n instanceof or&&n.needsAO&&n.layers.enable(5),e}function Rv(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission").filter(i=>i.data.visible),o=t.getLayersOfType("outline").filter(i=>i.data.visible);return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function Vv(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Lv(e,e.material[r])&&(t=!0);else Lv(e,e.material)&&(t=!0)}),t}function zv(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Rv(e,e.material[r])&&(t=!0);else Rv(e,e.material)&&(t=!0)}),t}var z3=new V3,G3=new L3,k3=new R3;function Sl(n,t,e,r=!1){let o=n.cloner;if(o)for(let i of o.children){let a=G3.copy(i.matrixWorld).invert(),s=k3.copy(t.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let u=z3;u.set(s.origin,s.direction),u.near=t.near,u.far=t.far;let c=u.intersectObject(n,!1);c.length>0&&e.push({...c[0],object:r?i:n})}}var ed=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let i=[o,r],a=r;for(;this._constraints.has(a);)a=this._constraints.get(a),e.has(a)||i.push(a);for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let l=t.find(i[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var qr=Ft(fs()),bo=Ft(hs());var lt=Ft(fs()),ue=Ft(hs()),Mn=class{constructor(t,e,r){this._dataNormalized=t,this._minD=e,this._maxD=r}static createFromUnnormalized(t){let e=ue.sup(t),r=ue.inf(t),o=(0,lt.default)(new Float32Array(t.size),t.shape),i=e-r;return i<1e-4?ue.assigns(o,0):(ue.subs(o,t,r),ue.divs(o,o,i)),new Mn(o,r,e)}get data(){return this._dataNormalized}get minD(){return this._minD}get maxD(){return this._maxD}denormalize(){let t=(0,lt.default)(new Float32Array(this._dataNormalized.size),this._dataNormalized.shape);return ue.muls(t,this._dataNormalized,this._maxD-this._minD),ue.adds(t,t,this._minD),t}},We=class{constructor(t,e){this._quantized=t,this._method=e}get quantized(){return this._quantized}static maxIntBits(t){return 2**t-1}static fromNormalized(t,e){let r=t.data,o;if(e==="norm8x"){let i=We.maxIntBits(8),a=(0,lt.default)(new Float32Array(r.size),r.shape);ue.muls(a,r,i),ue.roundeq(a),o=(0,lt.default)(new Uint8Array(a.data),r.shape)}else if(e==="norm565"){let i=(0,lt.default)(new Float32Array(r.size),r.shape);ue.assign(i,r),ue.mulseq(i.pick(null,0),We.maxIntBits(5)),ue.mulseq(i.pick(null,1),We.maxIntBits(6)),ue.mulseq(i.pick(null,2),We.maxIntBits(5)),ue.roundeq(i);let a=(0,lt.default)(new Uint16Array(i.data),r.shape),s=(0,lt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]),l=(0,lt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]);ue.lshifts(s,a.pick(null,0),11),ue.lshifts(l,a.pick(null,1),5),ue.boreq(s,l),ue.boreq(s,a.pick(null,2)),o=s}else{let i=(0,lt.default)(new Float32Array(r.size),r.shape);ue.assign(i,r),ue.mulseq(i.pick(null,0),We.maxIntBits(11)),ue.mulseq(i.pick(null,1),We.maxIntBits(10)),ue.mulseq(i.pick(null,2),We.maxIntBits(11)),ue.roundeq(i);let a=(0,lt.default)(new Uint32Array(i.data),r.shape),s=(0,lt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]),l=(0,lt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]);ue.lshifts(s,a.pick(null,0),21),ue.lshifts(l,a.pick(null,1),11),ue.boreq(s,l),ue.boreq(s,a.pick(null,2)),o=s}return new We(o,e)}dequantize(t,e){let r=this._method,o,i=this._quantized;if(r==="norm8x"){let a=We.maxIntBits(8);o=(0,lt.default)(new Float32Array(i.size),i.shape),ue.muls(o,i,1/a)}else if(r==="norm565"){let a=(0,lt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),s=(0,lt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),l=(0,lt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]);ue.rrshifts(a,i,11),ue.rrshifts(s,i,5),ue.bandseq(s,We.maxIntBits(6)),ue.bands(l,i,We.maxIntBits(5)),o=(0,lt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ue.muls(o.pick(null,0),a,1/We.maxIntBits(5)),ue.muls(o.pick(null,1),s,1/We.maxIntBits(6)),ue.muls(o.pick(null,2),l,1/We.maxIntBits(5))}else{let a=(0,lt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),s=(0,lt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),l=(0,lt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]);ue.rrshifts(a,i,21),ue.rrshifts(s,i,11),ue.bandseq(s,We.maxIntBits(10)),ue.bands(l,i,We.maxIntBits(11)),o=(0,lt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ue.muls(o.pick(null,0),a,1/We.maxIntBits(11)),ue.muls(o.pick(null,1),s,1/We.maxIntBits(10)),ue.muls(o.pick(null,2),l,1/We.maxIntBits(11))}return new Mn(o,t,e)}};var $e=class{constructor(t,e,r,o,i,a=!1){this._quantized=t,this._minMaxMatrix=e,this._chunkSize=r,this._quantizationMethod=o,this._variableChunkSize=i,this._isDynamicChunks=a}get length(){return this._quantized.shape[0]}get nchunks(){return this._minMaxMatrix.shape[0]}get quantized(){return this._quantized}get method(){return this._quantizationMethod}get minmaxMatrix(){return this._minMaxMatrix}_createPrunedMinMax(t){let e=t.length,r=this.minmaxMatrix.shape[0]-e,o=(0,qr.default)(new Float32Array(r*2),[r,2]),i=0,a=r,s=0,l=this.minmaxMatrix.shape[0];for(let u=0;u<t.length;u++)l=t[u],a=l-s+i,a>i&&bo.assign(o.hi(a,2).lo(i,0),this.minmaxMatrix.hi(l,2).lo(s,0)),i=a,s=l+1;return i<r&&bo.assign(o.lo(i,0),this.minmaxMatrix.lo(s,0)),o}_createPrunedQuantized(t){let e=t.length,r=this.quantized.shape[0]-e,o=this._quantizationMethod,i,a;if(o==="norm8x"){a=this._quantized.shape[1];let d=a?r*a:r;i=(0,qr.default)(new Uint8Array(d),a?[r,a]:[r,1])}else o==="norm565"?i=(0,qr.default)(new Uint16Array(r),[r]):i=(0,qr.default)(new Uint32Array(r),[r]);let s=0,l=r,u=0,c=i.shape[0];for(let d=0;d<t.length;d++)c=t[d],l=c-u+s,l>s&&(a?bo.assign(i.hi(l,a).lo(s,0),this._quantized.hi(c,a).lo(u,0)):bo.assign(i.hi(l).lo(s),this._quantized.hi(c).lo(u))),s=l,u=c+1;return s<r&&(a?bo.assign(i.lo(s,0),this._quantized.lo(u,0)):bo.assign(i.lo(s),this._quantized.lo(u))),i}pruneFeature(t,e,r){let o=this._createPrunedQuantized(t),i=this._createPrunedMinMax(e);return new $e(o,i,this._chunkSize,this._quantizationMethod,r,!0)}static getRequiredNChunks(t,e){return Math.floor(t/e)}static fromArray(t,e,r){let o=t.shape[0],i=Math.floor(o/r),a=(0,qr.default)(new Float32Array(i*2),[i,2],[2,1]),s;e==="norm8x"?s=(0,qr.default)(new Uint8Array(t.size),t.shape):e==="norm565"?s=(0,qr.default)(new Uint16Array(t.shape[0]),[t.shape[0]]):s=(0,qr.default)(new Uint32Array(t.shape[0]),[t.shape[0]]);for(let l=0;l<i;l++){let u=l*r,c=l+1<i?(l+1)*r:o,d;t.shape.length>1?d=Mn.createFromUnnormalized(t.hi(c,t.shape[1]).lo(u,0)):d=Mn.createFromUnnormalized(t.hi(c).lo(u)),a.set(l,0,d.minD),a.set(l,1,d.maxD),s.shape.length>1?bo.assign(s.hi(c,s.shape[1]).lo(u,0),We.fromNormalized(d,e).quantized):bo.assign(s.hi(c).lo(u),We.fromNormalized(d,e).quantized)}return new $e(s,a,r,e)}denormDequant(){let t=this._minMaxMatrix.shape[0],e=this._quantized,r=e.shape[0],o=this._quantizationMethod,i=this._chunkSize,a;if(this._isDynamicChunks){if(!this._variableChunkSize)throw new Error("variable chunk must exists if chunkSize isDynamic");a=this._variableChunkSize}let s;o==="norm8x"?s=(0,qr.default)(new Float32Array(e.size),e.shape):s=(0,qr.default)(new Float32Array(r*3),[r,3]);let l=0,u=i;for(let c=0;c<t;c++){let[d,p]=[this._minMaxMatrix.get(c,0),this._minMaxMatrix.get(c,1)];this._isDynamicChunks&&(u=a[c]);let f=c+1<t?l+u:r,h;e.shape.length>1?h=new We(e.hi(f,e.shape[1]).lo(l,0),o):h=new We(e.hi(f).lo(l),o),bo.assign(s.hi(f,s.shape[1]).lo(l,0),h.dequantize(d,p).denormalize()),l=f}return s}static async fetchArrayBuffer(t){return await(await fetch(t,{mode:"cors"})).arrayBuffer()}};var Xo=Ft(fs()),Me=Ft(hs());var aS="http://127.0.0.1:8000";var pi=Ft(fs()),Ue=Ft(hs());var sS=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9];function lS(n){return n<1e5?n<100?n<10?0:1:n<1e4?n<1e3?2:3:4:n<1e7?n<1e6?5:6:n<1e9?n<1e8?7:8:9}function cS(n,t){if(n===t)return 0;if(~~n===n&&~~t===t){if(n===0||t===0)return n<t?-1:1;if(n<0||t<0){if(t>=0)return-1;if(n>=0)return 1;n=-n,t=-t}let o=lS(n),i=lS(t),a=0;return o<i?(n*=sS[i-o-1],t/=10,a=-1):o>i&&(t*=sS[o-i-1],n/=10,a=1),n===t?a:n<t?-1:1}let e=String(n),r=String(t);return e===r?0:e<r?-1:1}function dD(n){let t=0;for(;n>=32;)t|=n&1,n>>=1;return n+t}function uS(n,t,e,r){let o=t+1;if(o===e)return 1;if(r(n[o++],n[t])<0){for(;o<e&&r(n[o],n[o-1])<0;)o++;pD(n,t,o)}else for(;o<e&&r(n[o],n[o-1])>=0;)o++;return o-t}function pD(n,t,e){for(e--;t<e;){let r=n[t];n[t++]=n[e],n[e--]=r}}function dS(n,t,e,r,o){for(r===t&&r++;r<e;r++){let i=n[r],a=t,s=r;for(;a<s;){let u=a+s>>>1;o(i,n[u])<0?s=u:a=u+1}let l=r-a;switch(l){case 3:n[a+3]=n[a+2];case 2:n[a+2]=n[a+1];case 1:n[a+1]=n[a];break;default:for(;l>0;)n[a+l]=n[a+l-1],l--}n[a]=i}}function nh(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])>0){for(s=r-o;l<s&&i(n,t[e+o+l])>0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}else{for(s=o+1;l<s&&i(n,t[e+o-l])<=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let u=a;a=o-l,l=o-u}for(a++;a<l;){let u=a+(l-a>>>1);i(n,t[e+u])>0?a=u+1:l=u}return l}function ih(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])<0){for(s=o+1;l<s&&i(n,t[e+o-l])<0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let u=a;a=o-l,l=o-u}else{for(s=r-o;l<s&&i(n,t[e+o+l])>=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}for(a++;a<l;){let u=a+(l-a>>>1);i(n,t[e+u])<0?l=u:a=u+1}return l}var ah=class{constructor(t,e){_t(this,"array",null);_t(this,"compare",null);_t(this,"minGallop",7);_t(this,"length",0);_t(this,"tmpStorageLength",256);_t(this,"stackLength",0);_t(this,"runStart",null);_t(this,"runLength",null);_t(this,"stackSize",0);this.array=t,this.compare=e,this.length=t.length,this.length<2*256&&(this.tmpStorageLength=this.length>>>1),this.tmp=new Array(this.tmpStorageLength),this.stackLength=this.length<120?5:this.length<1542?10:this.length<119151?19:40,this.runStart=new Array(this.stackLength),this.runLength=new Array(this.stackLength)}pushRun(t,e){this.runStart[this.stackSize]=t,this.runLength[this.stackSize]=e,this.stackSize+=1}mergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;if(t>=1&&this.runLength[t-1]<=this.runLength[t]+this.runLength[t+1]||t>=2&&this.runLength[t-2]<=this.runLength[t]+this.runLength[t-1])this.runLength[t-1]<this.runLength[t+1]&&t--;else if(this.runLength[t]>this.runLength[t+1])break;this.mergeAt(t)}}forceMergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;t>0&&this.runLength[t-1]<this.runLength[t+1]&&t--,this.mergeAt(t)}}mergeAt(t){let e=this.compare,r=this.array,o=this.runStart[t],i=this.runLength[t],a=this.runStart[t+1],s=this.runLength[t+1];this.runLength[t]=i+s,t===this.stackSize-3&&(this.runStart[t+1]=this.runStart[t+2],this.runLength[t+1]=this.runLength[t+2]),this.stackSize--;let l=ih(r[a],r,o,i,0,e);o+=l,i-=l,i!==0&&(s=nh(r[o+i-1],r,a,s,s-1,e),s!==0&&(i<=s?this.mergeLow(o,i,a,s):this.mergeHigh(o,i,a,s)))}mergeLow(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<e;l++)s[l]=a[t+l];let u=0,c=r,d=t;if(a[d++]=a[c++],--o===0){for(l=0;l<e;l++)a[d+l]=s[u+l];return}if(e===1){for(l=0;l<o;l++)a[d+l]=a[c+l];a[d+o]=s[u];return}let p=this.minGallop;for(;;){let f=0,h=0,m=!1;do if(i(a[c],s[u])<0){if(a[d++]=a[c++],h++,f=0,--o===0){m=!0;break}}else if(a[d++]=s[u++],f++,h=0,--e===1){m=!0;break}while((f|h)<p);if(m)break;do{if(f=ih(a[c],s,u,e,0,i),f!==0){for(l=0;l<f;l++)a[d+l]=s[u+l];if(d+=f,u+=f,e-=f,e<=1){m=!0;break}}if(a[d++]=a[c++],--o===0){m=!0;break}if(h=nh(s[u],a,c,o,0,i),h!==0){for(l=0;l<h;l++)a[d+l]=a[c+l];if(d+=h,c+=h,o-=h,o===0){m=!0;break}}if(a[d++]=s[u++],--e===1){m=!0;break}p--}while(f>=7||h>=7);if(m)break;p<0&&(p=0),p+=2}if(this.minGallop=p,p<1&&(this.minGallop=1),e===1){for(l=0;l<o;l++)a[d+l]=a[c+l];a[d+o]=s[u]}else{if(e===0)throw new Error("mergeLow preconditions were not respected");for(l=0;l<e;l++)a[d+l]=s[u+l]}}mergeHigh(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<o;l++)s[l]=a[r+l];let u=t+e-1,c=o-1,d=r+o-1,p=0,f=0;if(a[d--]=a[u--],--e===0){for(p=d-(o-1),l=0;l<o;l++)a[p+l]=s[l];return}if(o===1){for(d-=e,u-=e,f=d+1,p=u+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[d]=s[c];return}let h=this.minGallop;for(;;){let m=0,y=0,g=!1;do if(i(s[c],a[u])<0){if(a[d--]=a[u--],m++,y=0,--e===0){g=!0;break}}else if(a[d--]=s[c--],y++,m=0,--o===1){g=!0;break}while((m|y)<h);if(g)break;do{if(m=e-ih(s[c],a,t,e,e-1,i),m!==0){for(d-=m,u-=m,e-=m,f=d+1,p=u+1,l=m-1;l>=0;l--)a[f+l]=a[p+l];if(e===0){g=!0;break}}if(a[d--]=s[c--],--o===1){g=!0;break}if(y=o-nh(a[u],s,0,o,o-1,i),y!==0){for(d-=y,c-=y,o-=y,f=d+1,p=c+1,l=0;l<y;l++)a[f+l]=s[p+l];if(o<=1){g=!0;break}}if(a[d--]=a[u--],--e===0){g=!0;break}h--}while(m>=7||y>=7);if(g)break;h<0&&(h=0),h+=2}if(this.minGallop=h,h<1&&(this.minGallop=1),o===1){for(d-=e,u-=e,f=d+1,p=u+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[d]=s[c]}else{if(o===0)throw new Error("mergeHigh preconditions were not respected");for(p=d-(o-1),l=0;l<o;l++)a[p+l]=s[l]}}};function pS(n,t,e,r){if(!Array.isArray(n))throw new TypeError("Can only sort arrays");t?typeof t!="function"&&(r=e,e=t,t=cS):t=cS,e||(e=0),r||(r=n.length);let o=r-e;if(o<2)return;let i=0;if(o<32){i=uS(n,e,r,t),dS(n,e,r,e+i,t);return}let a=new ah(n,t),s=dD(o);do{if(i=uS(n,e,r,t),i<s){let l=o;l>s&&(l=s),dS(n,e,e+l,e+i,t),i=l}a.pushRun(e,i),a.mergeRuns(),o-=i,e+=i}while(o!==0);a.forceMergeRuns()}function sh(n){let t=(0,pi.default)(new Int32Array(n.shape[0]),[n.shape[0]]),e=(0,pi.default)(new Int32Array(n.shape[0]),[n.shape[0]]);return Ue.bands(t,n,1023),Ue.lshifts(e,t,16),Ue.bxoreq(t,e),Ue.bandseq(t,4278190335),Ue.lshifts(e,t,8),Ue.bxoreq(t,e),Ue.bandseq(t,50393103),Ue.lshifts(e,t,4),Ue.bxoreq(t,e),Ue.bandseq(t,51130563),Ue.lshifts(e,t,2),Ue.bxoreq(t,e),Ue.bandseq(t,153391689),t}function fD(n){let t=sh(n.pick(null,0)),e=sh(n.pick(null,1));Ue.lshiftseq(e,1);let r=sh(n.pick(null,2));return Ue.lshiftseq(r,2),Ue.boreq(t,e),Ue.boreq(t,r),t}function In(n,t){if(n.shape[0]!==t.shape[0])throw new Error("wrong length");let e=(0,pi.default)(new Float32Array(n.size),n.shape,n.stride,n.offset);for(let r=0;r<t.shape[0];r++){let o=t.get(r);if(n.shape.length>1)for(let i=0;i<n.shape[1];i++)e.set(r,i,n.get(o,i));else e.set(r,n.get(o))}return e}function lh(n){let t=Ue.sup(n),e=Ue.inf(n),r=1e3/Math.min(1e3,t-e),o=(0,pi.default)(new Float32Array(n.data),n.shape);Ue.mulseq(o,r);let i=(0,pi.default)(new Int32Array(o.data),n.shape),a=fD(i),l=Array.from(a.data).map((d,p)=>[d,p]);pS(l,(d,p)=>d[0]-p[0]);let u=l.map(([d,p])=>p);return(0,pi.default)(Uint32Array.from(u))}var Tr=class{constructor(t,e,r,o,i,a,s,l,u,c){this.propertyDescs=t,this.format=e,this.nsplats=r,this.xyz=o,this.colors=i,this.harmonics=a,this.opacity=s,this.scaling=l,this.rotation=u,this.maxSHDegree=c}getPlyBinary(){let t=Tr._generateHeaderString(this.propertyDescs,this.format,this.nsplats),e=new TextEncoder().encode(t),r=Object.keys(this.propertyDescs).length,o=(0,Xo.default)(new Float32Array(this.nsplats*r),[this.nsplats,r]);if(Me.assign(o.pick(null,this.propertyDescs.x.index),this.xyz.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.y.index),this.xyz.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.z.index),this.xyz.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.f_dc_0.index),this.colors.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.f_dc_1.index),this.colors.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.f_dc_2.index),this.colors.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.opacity.index),this.opacity.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.scale_0.index),this.scaling.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.scale_1.index),this.scaling.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.scale_2.index),this.scaling.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.rot_0.index),this.rotation.pick(null,0)),Me.assign(o.pick(null,this.propertyDescs.rot_1.index),this.rotation.pick(null,1)),Me.assign(o.pick(null,this.propertyDescs.rot_2.index),this.rotation.pick(null,2)),Me.assign(o.pick(null,this.propertyDescs.rot_3.index),this.rotation.pick(null,3)),this.harmonics&&this.harmonics.length>0)for(let s=0;s<this.harmonics.length;s++){let l=s*3;Me.assign(o.pick(null,this.propertyDescs[`f_rest_${l}`].index),this.harmonics[s].pick(null,0)),Me.assign(o.pick(null,this.propertyDescs[`f_rest_${l+1}`].index),this.harmonics[s].pick(null,1)),Me.assign(o.pick(null,this.propertyDescs[`f_rest_${l+2}`].index),this.harmonics[s].pick(null,2))}let i=new Uint8Array(o.data.buffer),a=new Uint8Array(i.length+e.length);return a.set(e),a.set(i,e.length),a.buffer}save(t,e){let r=this.getPlyBinary(),o=new Blob([r],{type:"application/octet-stream"}),i=new File([o],t),a=new FormData;a.append("file",i),a.append("filename",t),a.append("basedir",e),fetch(`${aS}/push_file`,{method:"POST",body:a})}static async loadFile(t){return await(await fetch(t)).arrayBuffer()}mortonPositionSplatsSort(){let t=lh(this.xyz),e=In(this.xyz,t),r=In(this.colors,t),o=In(this.opacity,t),i=In(this.scaling,t),a=In(this.rotation,t),s=[];for(let l=0;l<this.harmonics.length;l++)s.push(In(this.harmonics[l],t));return new Tr(this.propertyDescs,this.format,this.nsplats,e,r,s,o,i,a,this.maxSHDegree)}static _generateHeaderString(t,e,r){let o=`ply
3449
3449
  format ${e.format} ${e.version}
3450
3450
  element vertex ${r}`,i=Object.keys(t).length,a=Array(i);for(let s in t){let l=t[s];a[l.index]={name:s,dtype:l.dtype}}for(let s=0;s<a.length;s++)o=`${o}
3451
3451
  property ${a[s].dtype} ${a[s].name}`;return`${o}
3452
3452
  end_header
3453
3453
  `}static fromArrayBuffer(t,e=3){let{splatCount:r,vertexData:o,propertiesDesc:i,format:a}=Tr.decodeHeader(t),s=o.buffer.slice(o.byteOffset),l=Object.keys(i).length,u=(0,Xo.default)(new Float32Array(s),[r,l]),c=0,d={},p={double:8,int:4,uint:4,float:4,short:2,ushort:2,uchar:1};for(let v in i)if(i.hasOwnProperty(v)){let _=i[v].dtype;d[v]=c,c+=p[_]}let f=(0,Xo.default)(new Float32Array(r*3),[r,3]);Me.assign(f.pick(null,0),u.pick(null,d.x/4)),Me.assign(f.pick(null,1),u.pick(null,d.y/4)),Me.assign(f.pick(null,2),u.pick(null,d.z/4));let h=(0,Xo.default)(new Float32Array(r*3),[r,3]);Me.assign(h.pick(null,0),u.pick(null,d.scale_0/4)),Me.assign(h.pick(null,1),u.pick(null,d.scale_1/4)),Me.assign(h.pick(null,2),u.pick(null,d.scale_2/4));let m=(0,Xo.default)(new Float32Array(r*3),[r,3]);Me.assign(m.pick(null,0),u.pick(null,d.f_dc_0/4)),Me.assign(m.pick(null,1),u.pick(null,d.f_dc_1/4)),Me.assign(m.pick(null,2),u.pick(null,d.f_dc_2/4));let y=(0,Xo.default)(new Float32Array(r*4),[r,4]);Me.assign(y.pick(null,0),u.pick(null,d.rot_1/4)),Me.assign(y.pick(null,1),u.pick(null,d.rot_2/4)),Me.assign(y.pick(null,2),u.pick(null,d.rot_3/4)),Me.assign(y.pick(null,3),u.pick(null,d.rot_0/4));for(let v=0;v<r;v++){let _=y.pick(v,null),A=Math.sqrt(_.get(0)**2+_.get(1)**2+_.get(2)**2+_.get(3)**2);Me.divseq(_,A)}let g=(0,Xo.default)(new Float32Array(r*1),[r,1]);Me.assign(g.pick(null,0),u.pick(null,d.opacity/4));let S=(Math.min(Math.max(e,0),3)+1)**2-1,w=[];for(let v=0;v<S;v++){let _=(0,Xo.default)(new Float32Array(r*3),[r,3]),A=v*3;Me.assign(_.pick(null,0),u.pick(null,d[`f_rest_${A}`]/4)),Me.assign(_.pick(null,1),u.pick(null,d[`f_rest_${A+1}`]/4)),Me.assign(_.pick(null,2),u.pick(null,d[`f_rest_${A+2}`]/4)),w.push(_)}return new Tr(i,a,r,f,m,w,g,h,y,e)}static async fromPLYFile(t,e=3){let r=await Tr.loadFile(t);return Tr.fromArrayBuffer(r,e)}static decodeHeader(t){let e=new TextDecoder,r=0,o="",i=100;for(;;){if(r+i>=t.byteLength)throw new Error("End of file reached while searching for end of header");let h=new Uint8Array(t,r,i);o+=e.decode(h),r+=i;let m=r-i*2,y=new Uint8Array(t,Math.max(0,m),m>0?i*2:i);if(e.decode(y).includes("end_header"))break}let a=o.split(`
3454
- `),s=0,l={},u={},c=0,d;for(let h=0;h<a.length;h++){let m=a[h].trim();if(m.startsWith("element vertex")){let y=m.match(/\d+/);y&&(s=parseInt(y[0]))}else if(m.startsWith("property")){let y=m.match(/(\w+)\s+(\w+)\s+(\w+)/);if(y){let g=y[2],b=y[3];l[b]=c,u[b]={dtype:g,index:c},c++}}else if(m.startsWith("format")){let y=m.match(/(\w+)\s+(\w+)\s+(\d+\.?\d*)/);y&&(d={format:y[2],version:y[3]})}else if(m==="end_header")break}let p=o.indexOf("end_header")+10+1,f=new DataView(t,p);return{splatCount:s,vertexData:f,headerOffset:r,propertiesDesc:u,format:d}}};var pi=class{constructor(t,e,r,o,i,a,s,l){this.config=t,this.xyz=e,this.scaling=r,this.color=o,this.opacity=i,this.harmonics=s,this.quaternion=a,this.variableChunkSize=l}get isDynamicChunks(){return this.variableChunkSize&&this.variableChunkSize.length>0}get nchunks(){return this.xyz.nchunks}get nsplats(){return this.xyz.length}get chunkSize(){return this.config.chunkSize}static compressFromGaussianData(t,e){let r=$e.fromArray(t.xyz,e.xyz,e.chunkSize),o=$e.fromArray(t.scaling,e.scaling,e.chunkSize),i=$e.fromArray(t.colors,e.color,e.chunkSize),a=$e.fromArray(t.opacity,e.opacity,e.chunkSize),s=$e.fromArray(t.rotation,e.quaternion,e.chunkSize),l=t.harmonics,u=[];if(e.harmonics)for(let c=0;c<l.length;c++){let d=$e.fromArray(l[c],e.harmonics,e.chunkSize);u.push(d)}return new pi(e,r,o,i,a,s,u)}_countIndexesInChunks(t){let e=[],r=this.nchunks,o=this.chunkSize,i=this.nsplats,a=$e.getRequiredNChunks(i,o);if(r===a)for(let s=0;s<t.length;s++){let l=t[s],u=Math.floor(l/this.chunkSize);u in e?e[u].push(l):e[u]=[l]}else{let s=this.variableChunkSize,l={},u=0;for(let c=0;c<r;c++)l[c]=u,u+=s[c];for(let c=0;c<t.length;c++){let d=t[c],p=Math.min(Math.floor(d/o),r-1);for(;d>=l[p]+s[p];)p++;p in e?e[p].push(d):e[p]=[d]}}return e}pruneSplats(t){let e=this._countIndexesInChunks(t),r,o=[];return e.length>0&&(r=this.variableChunkSize?[...this.variableChunkSize]:Array(this.nchunks).fill(this.chunkSize),e.forEach((i,a)=>{r[a]-=i.length,r[a]<=0&&o.push(a)}),r=r.filter(i=>i>0)),new pi(this.config,this.xyz.pruneFeature(t,o,r),this.scaling.pruneFeature(t,o,r),this.color.pruneFeature(t,o,r),this.opacity.pruneFeature(t,o,r),this.quaternion.pruneFeature(t,o,r),this.harmonics?this.harmonics.map(i=>i.pruneFeature(t,o,this.variableChunkSize)):void 0,r)}static async loadConfig(t){return await(await fetch(t,{method:"GET",mode:"cors",headers:{Accept:"application/json"}})).json()}toGaussians(){let t={format:"binary_little_endian",version:"1.0"},e={},r=0;if(e.x={dtype:"float",index:r},r++,e.y={dtype:"float",index:r},r++,e.z={dtype:"float",index:r},r++,e.f_dc_0={dtype:"float",index:r},r++,e.f_dc_1={dtype:"float",index:r},r++,e.f_dc_2={dtype:"float",index:r},r++,this.harmonics&&this.harmonics.length>0)for(let a=0;a<this.harmonics.length;a++)e[`f_rest_${a}`]={dtype:"float",index:r},r++,e[`f_rest_${a+1}`]={dtype:"float",index:r},r++,e[`f_rest_${a+2}`]={dtype:"float",index:r},r++;e.opacity={dtype:"float",index:r},r++,e.scale_0={dtype:"float",index:r},r++,e.scale_1={dtype:"float",index:r},r++,e.scale_2={dtype:"float",index:r},r++,e.rot_0={dtype:"float",index:r},r++,e.rot_1={dtype:"float",index:r},r++,e.rot_2={dtype:"float",index:r},r++,e.rot_3={dtype:"float",index:r},r++;let o=this.harmonics?.map(a=>a.denormDequant());return new Tr(e,t,this.xyz.length,this.xyz.denormDequant(),this.color.denormDequant(),o||[],this.opacity.denormDequant(),this.scaling.denormDequant(),this.quaternion.denormDequant(),3)}};var fi=Ft(fs()),mt=Ft(hs());import{Matrix3 as ch,Matrix4 as hD,Quaternion as mD}from"three";var fS={xyz:3,color:3,opacity:1,scaling:3,quaternion:4,harmonics:3},In=class{constructor(t){this._buffer=t}get buffer(){return this._buffer}get decoded(){return this._decoded||(this._decoded=this.decodeBuffer()),this._decoded}get colorsA(){let t=.28209479177387814,e=this.decoded.color.denormDequant(),r=this.decoded.opacity.denormDequant(),o=(0,fi.default)(new Float32Array(e.shape[0]*4),[e.shape[0],4]);return mt.mulseq(e,t),mt.addseq(e,.5),mt.mulseq(e,255),mt.maxseq(e,0),mt.minseq(e,255),mt.negeq(r),mt.expeq(r),mt.addseq(r,1),mt.recipeq(r),mt.mulseq(r,255),mt.assign(o.hi(e.shape[0],3).lo(0,0),e),mt.assign(o.hi(e.shape[0],4).lo(0,3),r),(0,fi.default)(new Uint8Array(o.data),[e.shape[0],4]).data}get nsplats(){return this.decoded.nsplats}getSplatCount(){return this.decoded.nsplats}get precomputedCovarianceBufferData(){return this._precomputedCovarianceBufferData}decodeBuffer(){let{splatCount:t,chunkCount:e,chunkSize:r,typeChunks:o,vertexData:i,propertiesDesc:a}=this.decodeHeader(),s={xyz:a.xyz.compressionMethod,color:a.color.compressionMethod,opacity:a.opacity.compressionMethod,scaling:a.scaling.compressionMethod,quaternion:a.quaternion.compressionMethod,chunkSize:r};a.harmonics_0&&(s.harmonics=a.harmonics_0.compressionMethod);let l=i.byteOffset,u=Array(Object.keys(a).length);for(let g in a)u[a[g].index]={name:g,method:a[g].compressionMethod};let c=e*2*4,d=l,p=o==="dynamic"?e*2:0,f,h=!1;if(p>0){let g=new Uint16Array(i.buffer.slice(d,d+p));d+=p,f=Array.from(g),h=!0}let m={};for(let g of u){let b=0,S=!0;if(g.method==="norm8x")b=t*1*fS[g.name];else if(g.method==="norm11")b=t*4;else if(g.method==="norm565")b=t*2;else throw S=!1,new Error(`Not Implemented format: ${g.method}`);let w;if(S){let A=i.buffer.slice(d,d+c);w=(0,fi.default)(new Float32Array(A),[e,2]),d+=c}else throw new Error("loading chunk byt hasnot minmax!");let v=i.buffer.slice(d,d+b);d+=b;let _;if(g.method==="norm8x")_=(0,fi.default)(new Uint8Array(v),[t,fS[g.name]]);else if(g.method==="norm11")_=(0,fi.default)(new Uint32Array(v));else if(g.method==="norm565")_=(0,fi.default)(new Uint16Array(v));else throw new Error(`Not Implemented format: ${g.method}`);m[g.name]=new $e(_,w,r,g.method,f,h)}let y=[];for(let g=0;g<15;g++){let b=m[`harmonics_${g}`];b&&(y.push(b),delete m[`harmonics_${g}`])}return y.length>0&&(m.harmonics=y),new pi(s,m.xyz,m.scaling,m.color,m.opacity,m.quaternion,m.harmonics,f)}buildPreComputedBuffers(){let r=this.decoded,o=r.nsplats,i=new ArrayBuffer(24*o),a=new Float32Array(i),s=r.scaling.denormDequant(),l=r.quaternion.denormDequant(),u=new mD,c=new ch,d=new ch,p=new ch,f=new hD;for(let h=0;h<o;h++){f.makeScale(Math.exp(s.get(h,0)),Math.exp(s.get(h,1)),Math.exp(s.get(h,2))),d.setFromMatrix4(f),u.set(l.get(h,0),l.get(h,1),l.get(h,2),l.get(h,3)),f.makeRotationFromQuaternion(u),c.setFromMatrix4(f),p.copy(c).multiply(d);let m=p.elements;a[6*h]=m[0]*m[0]+m[3]*m[3]+m[6]*m[6],a[6*h+1]=m[0]*m[1]+m[3]*m[4]+m[6]*m[7],a[6*h+2]=m[0]*m[2]+m[3]*m[5]+m[6]*m[8],a[6*h+3]=m[1]*m[1]+m[4]*m[4]+m[7]*m[7],a[6*h+4]=m[1]*m[2]+m[4]*m[5]+m[7]*m[8],a[6*h+5]=m[2]*m[2]+m[5]*m[5]+m[8]*m[8]}this._precomputedCovarianceBufferData=i}decodeHeader(){let t=this._buffer,e=new TextDecoder,r=0,o="",i=100;for(;;){if(r+i>=t.byteLength)throw new Error("End of file reached while searching for end of header");let m=new Uint8Array(t,r,i);o+=e.decode(m),r+=i;let y=r-i*2,g=new Uint8Array(t,Math.max(0,y),y>=0?i*2:i);if(e.decode(g).includes("end_header"))break}let a=o.split(`
3455
- `),s=0,l=0,u=0,c=0,d="",p={};for(let m=0;m<a.length;m++){let y=a[m].trim();if(y.startsWith("element vertex")){let g=y.match(/\d+/);g&&(s=parseInt(g[0]))}else if(y.startsWith("property")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);if(g){let b=g[2],S=g[3];p[b]={compressionMethod:S,index:c},c++}}else if(y.startsWith("element chunks")){let g=y.match(/\d+/);g&&(l=parseInt(g[0]))}else if(y.startsWith("element chunkSize")){let g=y.match(/\d+/);g&&(u=parseInt(g[0]))}else if(y.startsWith("element typeChunks")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);g&&(d=g[3])}else if(y==="end_header")break}let f=o.indexOf("end_header")+10+1,h=new DataView(t,f);return{splatCount:s,chunkCount:l,chunkSize:u,typeChunks:d,vertexData:h,propertiesDesc:p}}pruneSplats(t){let r=this.decodeBuffer().pruneSplats(t);return In.fromCompressedGaussianSplats(r)}static fromCompressedGaussianSplats(t){let e=t.xyz.length,r=t.xyz.nchunks,o=`gspline
3454
+ `),s=0,l={},u={},c=0,d;for(let h=0;h<a.length;h++){let m=a[h].trim();if(m.startsWith("element vertex")){let y=m.match(/\d+/);y&&(s=parseInt(y[0]))}else if(m.startsWith("property")){let y=m.match(/(\w+)\s+(\w+)\s+(\w+)/);if(y){let g=y[2],b=y[3];l[b]=c,u[b]={dtype:g,index:c},c++}}else if(m.startsWith("format")){let y=m.match(/(\w+)\s+(\w+)\s+(\d+\.?\d*)/);y&&(d={format:y[2],version:y[3]})}else if(m==="end_header")break}let p=o.indexOf("end_header")+10+1,f=new DataView(t,p);return{splatCount:s,vertexData:f,headerOffset:r,propertiesDesc:u,format:d}}};var fi=class{constructor(t,e,r,o,i,a,s,l){this.config=t,this.xyz=e,this.scaling=r,this.color=o,this.opacity=i,this.harmonics=s,this.quaternion=a,this.variableChunkSize=l}get isDynamicChunks(){return this.variableChunkSize&&this.variableChunkSize.length>0}get nchunks(){return this.xyz.nchunks}get nsplats(){return this.xyz.length}get chunkSize(){return this.config.chunkSize}static compressFromGaussianData(t,e){let r=$e.fromArray(t.xyz,e.xyz,e.chunkSize),o=$e.fromArray(t.scaling,e.scaling,e.chunkSize),i=$e.fromArray(t.colors,e.color,e.chunkSize),a=$e.fromArray(t.opacity,e.opacity,e.chunkSize),s=$e.fromArray(t.rotation,e.quaternion,e.chunkSize),l=t.harmonics,u=[];if(e.harmonics)for(let c=0;c<l.length;c++){let d=$e.fromArray(l[c],e.harmonics,e.chunkSize);u.push(d)}return new fi(e,r,o,i,a,s,u)}_countIndexesInChunks(t){let e=[],r=this.nchunks,o=this.chunkSize,i=this.nsplats,a=$e.getRequiredNChunks(i,o);if(r===a)for(let s=0;s<t.length;s++){let l=t[s],u=Math.floor(l/this.chunkSize);u in e?e[u].push(l):e[u]=[l]}else{let s=this.variableChunkSize,l={},u=0;for(let c=0;c<r;c++)l[c]=u,u+=s[c];for(let c=0;c<t.length;c++){let d=t[c],p=Math.min(Math.floor(d/o),r-1);for(;d>=l[p]+s[p];)p++;p in e?e[p].push(d):e[p]=[d]}}return e}pruneSplats(t){let e=this._countIndexesInChunks(t),r,o=[];return e.length>0&&(r=this.variableChunkSize?[...this.variableChunkSize]:Array(this.nchunks).fill(this.chunkSize),e.forEach((i,a)=>{r[a]-=i.length,r[a]<=0&&o.push(a)}),r=r.filter(i=>i>0)),new fi(this.config,this.xyz.pruneFeature(t,o,r),this.scaling.pruneFeature(t,o,r),this.color.pruneFeature(t,o,r),this.opacity.pruneFeature(t,o,r),this.quaternion.pruneFeature(t,o,r),this.harmonics?this.harmonics.map(i=>i.pruneFeature(t,o,this.variableChunkSize)):void 0,r)}static async loadConfig(t){return await(await fetch(t,{method:"GET",mode:"cors",headers:{Accept:"application/json"}})).json()}toGaussians(){let t={format:"binary_little_endian",version:"1.0"},e={},r=0;if(e.x={dtype:"float",index:r},r++,e.y={dtype:"float",index:r},r++,e.z={dtype:"float",index:r},r++,e.f_dc_0={dtype:"float",index:r},r++,e.f_dc_1={dtype:"float",index:r},r++,e.f_dc_2={dtype:"float",index:r},r++,this.harmonics&&this.harmonics.length>0)for(let a=0;a<this.harmonics.length;a++)e[`f_rest_${a}`]={dtype:"float",index:r},r++,e[`f_rest_${a+1}`]={dtype:"float",index:r},r++,e[`f_rest_${a+2}`]={dtype:"float",index:r},r++;e.opacity={dtype:"float",index:r},r++,e.scale_0={dtype:"float",index:r},r++,e.scale_1={dtype:"float",index:r},r++,e.scale_2={dtype:"float",index:r},r++,e.rot_0={dtype:"float",index:r},r++,e.rot_1={dtype:"float",index:r},r++,e.rot_2={dtype:"float",index:r},r++,e.rot_3={dtype:"float",index:r},r++;let o=this.harmonics?.map(a=>a.denormDequant());return new Tr(e,t,this.xyz.length,this.xyz.denormDequant(),this.color.denormDequant(),o||[],this.opacity.denormDequant(),this.scaling.denormDequant(),this.quaternion.denormDequant(),3)}};var hi=Ft(fs()),mt=Ft(hs());import{Matrix3 as ch,Matrix4 as hD,Quaternion as mD}from"three";var fS={xyz:3,color:3,opacity:1,scaling:3,quaternion:4,harmonics:3},Nn=class{constructor(t){this._buffer=t}get buffer(){return this._buffer}get decoded(){return this._decoded||(this._decoded=this.decodeBuffer()),this._decoded}get colorsA(){let t=.28209479177387814,e=this.decoded.color.denormDequant(),r=this.decoded.opacity.denormDequant(),o=(0,hi.default)(new Float32Array(e.shape[0]*4),[e.shape[0],4]);return mt.mulseq(e,t),mt.addseq(e,.5),mt.mulseq(e,255),mt.maxseq(e,0),mt.minseq(e,255),mt.negeq(r),mt.expeq(r),mt.addseq(r,1),mt.recipeq(r),mt.mulseq(r,255),mt.assign(o.hi(e.shape[0],3).lo(0,0),e),mt.assign(o.hi(e.shape[0],4).lo(0,3),r),(0,hi.default)(new Uint8Array(o.data),[e.shape[0],4]).data}get nsplats(){return this.decoded.nsplats}getSplatCount(){return this.decoded.nsplats}get precomputedCovarianceBufferData(){return this._precomputedCovarianceBufferData}decodeBuffer(){let{splatCount:t,chunkCount:e,chunkSize:r,typeChunks:o,vertexData:i,propertiesDesc:a}=this.decodeHeader(),s={xyz:a.xyz.compressionMethod,color:a.color.compressionMethod,opacity:a.opacity.compressionMethod,scaling:a.scaling.compressionMethod,quaternion:a.quaternion.compressionMethod,chunkSize:r};a.harmonics_0&&(s.harmonics=a.harmonics_0.compressionMethod);let l=i.byteOffset,u=Array(Object.keys(a).length);for(let g in a)u[a[g].index]={name:g,method:a[g].compressionMethod};let c=e*2*4,d=l,p=o==="dynamic"?e*2:0,f,h=!1;if(p>0){let g=new Uint16Array(i.buffer.slice(d,d+p));d+=p,f=Array.from(g),h=!0}let m={};for(let g of u){let b=0,S=!0;if(g.method==="norm8x")b=t*1*fS[g.name];else if(g.method==="norm11")b=t*4;else if(g.method==="norm565")b=t*2;else throw S=!1,new Error(`Not Implemented format: ${g.method}`);let w;if(S){let A=i.buffer.slice(d,d+c);w=(0,hi.default)(new Float32Array(A),[e,2]),d+=c}else throw new Error("loading chunk byt hasnot minmax!");let v=i.buffer.slice(d,d+b);d+=b;let _;if(g.method==="norm8x")_=(0,hi.default)(new Uint8Array(v),[t,fS[g.name]]);else if(g.method==="norm11")_=(0,hi.default)(new Uint32Array(v));else if(g.method==="norm565")_=(0,hi.default)(new Uint16Array(v));else throw new Error(`Not Implemented format: ${g.method}`);m[g.name]=new $e(_,w,r,g.method,f,h)}let y=[];for(let g=0;g<15;g++){let b=m[`harmonics_${g}`];b&&(y.push(b),delete m[`harmonics_${g}`])}return y.length>0&&(m.harmonics=y),new fi(s,m.xyz,m.scaling,m.color,m.opacity,m.quaternion,m.harmonics,f)}buildPreComputedBuffers(){let r=this.decoded,o=r.nsplats,i=new ArrayBuffer(24*o),a=new Float32Array(i),s=r.scaling.denormDequant(),l=r.quaternion.denormDequant(),u=new mD,c=new ch,d=new ch,p=new ch,f=new hD;for(let h=0;h<o;h++){f.makeScale(Math.exp(s.get(h,0)),Math.exp(s.get(h,1)),Math.exp(s.get(h,2))),d.setFromMatrix4(f),u.set(l.get(h,0),l.get(h,1),l.get(h,2),l.get(h,3)),f.makeRotationFromQuaternion(u),c.setFromMatrix4(f),p.copy(c).multiply(d);let m=p.elements;a[6*h]=m[0]*m[0]+m[3]*m[3]+m[6]*m[6],a[6*h+1]=m[0]*m[1]+m[3]*m[4]+m[6]*m[7],a[6*h+2]=m[0]*m[2]+m[3]*m[5]+m[6]*m[8],a[6*h+3]=m[1]*m[1]+m[4]*m[4]+m[7]*m[7],a[6*h+4]=m[1]*m[2]+m[4]*m[5]+m[7]*m[8],a[6*h+5]=m[2]*m[2]+m[5]*m[5]+m[8]*m[8]}this._precomputedCovarianceBufferData=i}decodeHeader(){let t=this._buffer,e=new TextDecoder,r=0,o="",i=100;for(;;){if(r+i>=t.byteLength)throw new Error("End of file reached while searching for end of header");let m=new Uint8Array(t,r,i);o+=e.decode(m),r+=i;let y=r-i*2,g=new Uint8Array(t,Math.max(0,y),y>=0?i*2:i);if(e.decode(g).includes("end_header"))break}let a=o.split(`
3455
+ `),s=0,l=0,u=0,c=0,d="",p={};for(let m=0;m<a.length;m++){let y=a[m].trim();if(y.startsWith("element vertex")){let g=y.match(/\d+/);g&&(s=parseInt(g[0]))}else if(y.startsWith("property")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);if(g){let b=g[2],S=g[3];p[b]={compressionMethod:S,index:c},c++}}else if(y.startsWith("element chunks")){let g=y.match(/\d+/);g&&(l=parseInt(g[0]))}else if(y.startsWith("element chunkSize")){let g=y.match(/\d+/);g&&(u=parseInt(g[0]))}else if(y.startsWith("element typeChunks")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);g&&(d=g[3])}else if(y==="end_header")break}let f=o.indexOf("end_header")+10+1,h=new DataView(t,f);return{splatCount:s,chunkCount:l,chunkSize:u,typeChunks:d,vertexData:h,propertiesDesc:p}}pruneSplats(t){let r=this.decodeBuffer().pruneSplats(t);return Nn.fromCompressedGaussianSplats(r)}static fromCompressedGaussianSplats(t){let e=t.xyz.length,r=t.xyz.nchunks,o=`gspline
3456
3456
  element vertex ${e}
3457
3457
  element chunks ${r}
3458
3458
  element chunkSize ${t.chunkSize}
@@ -3464,7 +3464,7 @@ property scaling ${t.scaling.method}
3464
3464
  property quaternion ${t.quaternion.method}`;if(t.harmonics&&t.harmonics.length>0)for(let T=0;T<t.harmonics.length;T++)o=`${o}
3465
3465
  property harmonics_${T} ${t.harmonics[T].method}`;o=`${o}
3466
3466
  end_header
3467
- `;let a=new TextEncoder().encode(o),s=r*2*4,l=t.xyz.quantized.data.buffer.byteLength,u=t.xyz instanceof $e?s:0,c=t.color.quantized.data.buffer.byteLength,d=t.color instanceof $e?s:0,p=t.opacity.quantized.data.buffer.byteLength,f=t.opacity instanceof $e?s:0,h=t.scaling.quantized.data.buffer.byteLength,m=t.scaling instanceof $e?s:0,y=t.quaternion.quantized.data.buffer.byteLength,g=t.quaternion instanceof $e?s:0,b=t.variableChunkSize?Uint16Array.from(t.variableChunkSize):void 0,S=b?b.byteLength:0,w=a.byteLength+S+l+u+c+d+p+f+h+m+y+g,v=0,_=0;if(t.harmonics&&t.harmonics.length>0)for(let T=0;T<t.harmonics.length;T++)v+=t.harmonics[T].quantized.data.buffer.byteLength,_+=t.harmonics[T]instanceof $e?s:0;v=0,_=0,w+=v+_;let A=new Uint8Array(w),x=0;if(A.set(a,x),x+=a.byteLength,S>0&&(A.set(new Uint8Array(b.buffer),x),x+=S),t.xyz instanceof $e&&(A.set(new Uint8Array(t.xyz.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(t.xyz.quantized.data.buffer),x),x+=l,t.color instanceof $e&&(A.set(new Uint8Array(t.color.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(t.color.quantized.data.buffer),x),x+=c,t.opacity instanceof $e&&(A.set(new Uint8Array(t.opacity.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(t.opacity.quantized.data.buffer),x),x+=p,t.scaling instanceof $e&&(A.set(new Uint8Array(t.scaling.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(t.scaling.quantized.data.buffer),x),x+=h,t.quaternion instanceof $e&&(A.set(new Uint8Array(t.quaternion.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(t.quaternion.quantized.data.buffer),x),x+=y,v>0&&t.harmonics&&t.harmonics.length>0)for(let T=0;T<t.harmonics.length;T++){let C=t.harmonics[T];C instanceof $e&&(A.set(new Uint8Array(C.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(C.quantized.data.buffer),x),x+=C.quantized.data.byteLength}return new In(A.buffer)}};var hS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var vo=class{};_t(vo,"DepthMapRange",1<<16),_t(vo,"MemoryPageSize",65536),_t(vo,"BytesPerFloat",4),_t(vo,"BytesPerInt",4);function yD(n){let t,e,r,o,i,a,s,l,u,c,d,p,f,h,m,y;function g(P){let O=new Float64Array(c,a,16);for(let I=0;I<16;I++)O[I]=P[I];let M;if(r>1){t.exports.sortIndexes(o,i,u,a,s,l,p.DepthMapRange,r);let I=new Uint32Array(r);M=I.buffer,I.set(new Uint32Array(c,l,r))}else if(r===1){let I=new Uint32Array(r);I[0]=new Uint32Array(c,o,e)[0],M=I.buffer}else M=new ArrayBuffer(0);n.postMessage({sortDone:!0,indexesBuffer:M},[M])}function b(P,O,M){let I=new Float32Array(c,i,e*3);r=0;let N=new Uint32Array(c,o,e);for(let B=0;B<M.length-1;B++){let D=O[B],G=P[B].elements,L=D.filter(z=>z.enabled&&z.mode==="Include").map(z=>z.type==="Box"?_(z):T(z)),V=D.filter(z=>z.enabled&&z.mode==="Exclude").map(z=>z.type==="Box"?_(z):T(z));for(let z=M[B];z<M[B+1];z++){let F=f[z*3],$=f[z*3+1],q=f[z*3+2];if((L.length===0||w(F,$,q,L))&&(V.length===0||!w(F,$,q,V))){let H=1/(G[3]*F+G[7]*$+G[11]*q+G[15]);I[r*3]=(G[0]*F+G[4]*$+G[8]*q+G[12])*H,I[r*3+1]=(G[1]*F+G[5]*$+G[9]*q+G[13])*H,I[r*3+2]=(G[2]*F+G[6]*$+G[10]*q+G[14])*H,N[r]=z,r++}}}}function S(P,O){let M=[],I=O.filter(D=>D.enabled&&D.mode==="Include").map(D=>D.type==="Box"?_(D):T(D)),N=O.filter(D=>D.enabled&&D.mode==="Exclude").map(D=>D.type==="Box"?_(D):T(D)),B=P.length;for(let D=0;D<B;D+=3){let G=P[D],L=P[D+1],V=P[D+2];(I.length===0||w(G,L,V,I))&&(N.length===0||!w(G,L,V,N))||M.push(D/3)}return console.log(M),M}function w(P,O,M,I,N){return I[N==="Intersect"?"every":"some"](B=>{let D=v(P,O,M,B.invRotationMatrix,B.cropCenter);return Array.isArray(B)?x(D.x,D.y,D.z,B):C(D.x,D.y,D.z,B)})}function v(P,O,M,I,N){let B=P-N[0],D=O-N[1],G=M-N[2],L=1/(I[3]*B+I[7]*D+I[11]*G+I[15]);return{x:(I[0]*B+I[4]*D+I[8]*G+I[12])*L+N[0],y:(I[1]*B+I[5]*D+I[9]*G+I[13])*L+N[1],z:(I[2]*B+I[6]*D+I[10]*G+I[14])*L+N[2]}}function _(P){let O=P.cropSize[0]/2,M=P.cropSize[1]/2,I=P.cropSize[2]/2,N=[P.cropCenter[0]-O,P.cropCenter[1]-M,P.cropCenter[2]-I,P.cropCenter[0]+O,P.cropCenter[1]+M,P.cropCenter[2]+I],B=A(P.cropRotation);return Object.assign(N,{invRotationMatrix:B,cropCenter:P.cropCenter})}function A(P){let O=[],M=P[0]*Math.PI/180,I=P[1]*Math.PI/180,N=P[2]*Math.PI/180,B=Math.cos(M),D=Math.sin(M),G=Math.cos(I),L=Math.sin(I),V=Math.cos(N),z=Math.sin(N),F=B*V,$=B*z,q=D*V,H=D*z;return O[0]=G*V,O[1]=-G*z,O[2]=L,O[4]=$+q*L,O[5]=F-H*L,O[6]=-D*G,O[8]=H-F*L,O[9]=q+$*L,O[10]=B*G,O[12]=0,O[13]=0,O[14]=0,O[3]=0,O[7]=0,O[11]=0,O[15]=1,O}function x(P,O,M,I){return P>=I[0]&&P<=I[3]&&O>=I[1]&&O<=I[4]&&M>=I[2]&&M<=I[5]}function T(P){let O=2/P.cropSize[0],M=2/P.cropSize[1],I=2/P.cropSize[2],N=A(P.cropRotation);return{invRadiusX:O,invRadiusY:M,invRadiusZ:I,cropCenter:P.cropCenter,invRotationMatrix:N}}function C(P,O,M,I){let N=(P-I.cropCenter[0])*I.invRadiusX,B=(O-I.cropCenter[1])*I.invRadiusY,D=(M-I.cropCenter[2])*I.invRadiusZ;return N*N+B*B+D*D<=1}n.onmessage=P=>{if(P.data.getCroppedIndexes){let O=new Uint32Array(S(new Float32Array(P.data.positions),P.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:O},[O])}else if(P.data.positions)d=P.data.positions,f=new Float32Array(d),m=P.data.meshMatrixWorlds,y=P.data.cropsArray,h=P.data.meshIndexIntervals,b(m,y,h),n.postMessage({sortSetupComplete:!0});else if(P.data.sort||P.data.newMatrixWorlds||P.data.newCropsArray)(P.data.newMatrixWorlds||P.data.newCropsArray)&&(y=P.data.newCropsArray||y,m=P.data.newMatrixWorlds||m,b(m,y,h)),g(P.data.sort.view,P.data.sort.cameraPosition);else if(P.data.init){p=P.data.init.Constants,e=P.data.init.splatCount;let O=p.BytesPerInt,M=p.BytesPerFloat*3,I=new Uint8Array(P.data.init.sorterWasmBytes),N=O+M,B=e*N,D=e*p.BytesPerInt*2+p.DepthMapRange*p.BytesPerInt*2,G=p.MemoryPageSize*32,L=B+D+G,V=Math.floor(L/p.MemoryPageSize)+1,z={module:{},env:{memory:new WebAssembly.Memory({initial:V*2,maximum:V*3,shared:!0})}};WebAssembly.compile(I).then(F=>WebAssembly.instantiate(F,z)).then(F=>{t=F,o=0,i=e*O,a=i+e*M,u=a+16*p.BytesPerFloat*2,s=u+e*p.BytesPerInt,l=s+p.DepthMapRange*p.BytesPerInt,c=z.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function mS(n){let t=new Worker(URL.createObjectURL(new Blob(["(",yD.toString(),")(self)"],{type:"application/javascript"}))),e=atob(hS),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:n,Constants:{BytesPerFloat:vo.BytesPerFloat,BytesPerInt:vo.BytesPerInt,DepthMapRange:vo.DepthMapRange,MemoryPageSize:vo.MemoryPageSize}}}),t}import{Matrix4 as DD,Quaternion as bS,Vector2 as ED,Vector3 as ms}from"three";import{BufferAttribute as gD,BufferGeometry as xD,Color as bD,DataTexture as nd,DataUtils as vD,DoubleSide as SD,DynamicDrawUsage as wD,FloatType as gS,HalfFloatType as _D,InstancedBufferAttribute as AD,InstancedBufferGeometry as PD,Mesh as OD,NormalBlending as CD,RGBAFormat as TD,RGBAIntegerFormat as MD,RGFormat as xS,ShaderMaterial as ID,UnsignedIntType as ND,Vector2 as Nn}from"three";var od=function(){let n=new Float32Array(1),t=new Int32Array(n.buffer);return function(e){return n[0]=e,t[0]}}(),yS=function(n,t,e,r){return n+(t<<8)+(e<<16)+(r<<24)};var id=new Nn,Dn=class extends OD{constructor(e,r,o,i,a=!1,s=1,l,u){super(o,i);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=u,this.splatBuffers=e,this.geometry=o,this.material=i,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,i=1,a,s){let l=Dn.buildGeomtery(r),u=Dn.buildMaterial(a);return new Dn(e,r,l,u,o,i,a,s)}static buildMaterial(e){let r=`
3467
+ `;let a=new TextEncoder().encode(o),s=r*2*4,l=t.xyz.quantized.data.buffer.byteLength,u=t.xyz instanceof $e?s:0,c=t.color.quantized.data.buffer.byteLength,d=t.color instanceof $e?s:0,p=t.opacity.quantized.data.buffer.byteLength,f=t.opacity instanceof $e?s:0,h=t.scaling.quantized.data.buffer.byteLength,m=t.scaling instanceof $e?s:0,y=t.quaternion.quantized.data.buffer.byteLength,g=t.quaternion instanceof $e?s:0,b=t.variableChunkSize?Uint16Array.from(t.variableChunkSize):void 0,S=b?b.byteLength:0,w=a.byteLength+S+l+u+c+d+p+f+h+m+y+g,v=0,_=0;if(t.harmonics&&t.harmonics.length>0)for(let T=0;T<t.harmonics.length;T++)v+=t.harmonics[T].quantized.data.buffer.byteLength,_+=t.harmonics[T]instanceof $e?s:0;v=0,_=0,w+=v+_;let A=new Uint8Array(w),x=0;if(A.set(a,x),x+=a.byteLength,S>0&&(A.set(new Uint8Array(b.buffer),x),x+=S),t.xyz instanceof $e&&(A.set(new Uint8Array(t.xyz.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(t.xyz.quantized.data.buffer),x),x+=l,t.color instanceof $e&&(A.set(new Uint8Array(t.color.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(t.color.quantized.data.buffer),x),x+=c,t.opacity instanceof $e&&(A.set(new Uint8Array(t.opacity.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(t.opacity.quantized.data.buffer),x),x+=p,t.scaling instanceof $e&&(A.set(new Uint8Array(t.scaling.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(t.scaling.quantized.data.buffer),x),x+=h,t.quaternion instanceof $e&&(A.set(new Uint8Array(t.quaternion.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(t.quaternion.quantized.data.buffer),x),x+=y,v>0&&t.harmonics&&t.harmonics.length>0)for(let T=0;T<t.harmonics.length;T++){let C=t.harmonics[T];C instanceof $e&&(A.set(new Uint8Array(C.minmaxMatrix.data.buffer),x),x+=s),A.set(new Uint8Array(C.quantized.data.buffer),x),x+=C.quantized.data.byteLength}return new Nn(A.buffer)}};var hS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var vo=class{};_t(vo,"DepthMapRange",1<<16),_t(vo,"MemoryPageSize",65536),_t(vo,"BytesPerFloat",4),_t(vo,"BytesPerInt",4);function yD(n){let t,e,r,o,i,a,s,l,u,c,d,p,f,h,m,y;function g(P){let O=new Float64Array(c,a,16);for(let I=0;I<16;I++)O[I]=P[I];let M;if(r>1){t.exports.sortIndexes(o,i,u,a,s,l,p.DepthMapRange,r);let I=new Uint32Array(r);M=I.buffer,I.set(new Uint32Array(c,l,r))}else if(r===1){let I=new Uint32Array(r);I[0]=new Uint32Array(c,o,e)[0],M=I.buffer}else M=new ArrayBuffer(0);n.postMessage({sortDone:!0,indexesBuffer:M},[M])}function b(P,O,M){let I=new Float32Array(c,i,e*3);r=0;let N=new Uint32Array(c,o,e);for(let B=0;B<M.length-1;B++){let D=O[B],G=P[B].elements,L=D.filter(z=>z.enabled&&z.mode==="Include").map(z=>z.type==="Box"?_(z):T(z)),V=D.filter(z=>z.enabled&&z.mode==="Exclude").map(z=>z.type==="Box"?_(z):T(z));for(let z=M[B];z<M[B+1];z++){let F=f[z*3],$=f[z*3+1],q=f[z*3+2];if((L.length===0||w(F,$,q,L))&&(V.length===0||!w(F,$,q,V))){let H=1/(G[3]*F+G[7]*$+G[11]*q+G[15]);I[r*3]=(G[0]*F+G[4]*$+G[8]*q+G[12])*H,I[r*3+1]=(G[1]*F+G[5]*$+G[9]*q+G[13])*H,I[r*3+2]=(G[2]*F+G[6]*$+G[10]*q+G[14])*H,N[r]=z,r++}}}}function S(P,O){let M=[],I=O.filter(D=>D.enabled&&D.mode==="Include").map(D=>D.type==="Box"?_(D):T(D)),N=O.filter(D=>D.enabled&&D.mode==="Exclude").map(D=>D.type==="Box"?_(D):T(D)),B=P.length;for(let D=0;D<B;D+=3){let G=P[D],L=P[D+1],V=P[D+2];(I.length===0||w(G,L,V,I))&&(N.length===0||!w(G,L,V,N))||M.push(D/3)}return console.log(M),M}function w(P,O,M,I,N){return I[N==="Intersect"?"every":"some"](B=>{let D=v(P,O,M,B.invRotationMatrix,B.cropCenter);return Array.isArray(B)?x(D.x,D.y,D.z,B):C(D.x,D.y,D.z,B)})}function v(P,O,M,I,N){let B=P-N[0],D=O-N[1],G=M-N[2],L=1/(I[3]*B+I[7]*D+I[11]*G+I[15]);return{x:(I[0]*B+I[4]*D+I[8]*G+I[12])*L+N[0],y:(I[1]*B+I[5]*D+I[9]*G+I[13])*L+N[1],z:(I[2]*B+I[6]*D+I[10]*G+I[14])*L+N[2]}}function _(P){let O=P.cropSize[0]/2,M=P.cropSize[1]/2,I=P.cropSize[2]/2,N=[P.cropCenter[0]-O,P.cropCenter[1]-M,P.cropCenter[2]-I,P.cropCenter[0]+O,P.cropCenter[1]+M,P.cropCenter[2]+I],B=A(P.cropRotation);return Object.assign(N,{invRotationMatrix:B,cropCenter:P.cropCenter})}function A(P){let O=[],M=P[0]*Math.PI/180,I=P[1]*Math.PI/180,N=P[2]*Math.PI/180,B=Math.cos(M),D=Math.sin(M),G=Math.cos(I),L=Math.sin(I),V=Math.cos(N),z=Math.sin(N),F=B*V,$=B*z,q=D*V,H=D*z;return O[0]=G*V,O[1]=-G*z,O[2]=L,O[4]=$+q*L,O[5]=F-H*L,O[6]=-D*G,O[8]=H-F*L,O[9]=q+$*L,O[10]=B*G,O[12]=0,O[13]=0,O[14]=0,O[3]=0,O[7]=0,O[11]=0,O[15]=1,O}function x(P,O,M,I){return P>=I[0]&&P<=I[3]&&O>=I[1]&&O<=I[4]&&M>=I[2]&&M<=I[5]}function T(P){let O=2/P.cropSize[0],M=2/P.cropSize[1],I=2/P.cropSize[2],N=A(P.cropRotation);return{invRadiusX:O,invRadiusY:M,invRadiusZ:I,cropCenter:P.cropCenter,invRotationMatrix:N}}function C(P,O,M,I){let N=(P-I.cropCenter[0])*I.invRadiusX,B=(O-I.cropCenter[1])*I.invRadiusY,D=(M-I.cropCenter[2])*I.invRadiusZ;return N*N+B*B+D*D<=1}n.onmessage=P=>{if(P.data.getCroppedIndexes){let O=new Uint32Array(S(new Float32Array(P.data.positions),P.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:O},[O])}else if(P.data.positions)d=P.data.positions,f=new Float32Array(d),m=P.data.meshMatrixWorlds,y=P.data.cropsArray,h=P.data.meshIndexIntervals,b(m,y,h),n.postMessage({sortSetupComplete:!0});else if(P.data.sort||P.data.newMatrixWorlds||P.data.newCropsArray)(P.data.newMatrixWorlds||P.data.newCropsArray)&&(y=P.data.newCropsArray||y,m=P.data.newMatrixWorlds||m,b(m,y,h)),g(P.data.sort.view,P.data.sort.cameraPosition);else if(P.data.init){p=P.data.init.Constants,e=P.data.init.splatCount;let O=p.BytesPerInt,M=p.BytesPerFloat*3,I=new Uint8Array(P.data.init.sorterWasmBytes),N=O+M,B=e*N,D=e*p.BytesPerInt*2+p.DepthMapRange*p.BytesPerInt*2,G=p.MemoryPageSize*32,L=B+D+G,V=Math.floor(L/p.MemoryPageSize)+1,z={module:{},env:{memory:new WebAssembly.Memory({initial:V*2,maximum:V*3,shared:!0})}};WebAssembly.compile(I).then(F=>WebAssembly.instantiate(F,z)).then(F=>{t=F,o=0,i=e*O,a=i+e*M,u=a+16*p.BytesPerFloat*2,s=u+e*p.BytesPerInt,l=s+p.DepthMapRange*p.BytesPerInt,c=z.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function mS(n){let t=new Worker(URL.createObjectURL(new Blob(["(",yD.toString(),")(self)"],{type:"application/javascript"}))),e=atob(hS),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:n,Constants:{BytesPerFloat:vo.BytesPerFloat,BytesPerInt:vo.BytesPerInt,DepthMapRange:vo.DepthMapRange,MemoryPageSize:vo.MemoryPageSize}}}),t}import{Matrix4 as DD,Quaternion as bS,Vector2 as ED,Vector3 as ms}from"three";import{BufferAttribute as gD,BufferGeometry as xD,Color as bD,DataTexture as nd,DataUtils as vD,DoubleSide as SD,DynamicDrawUsage as wD,FloatType as gS,HalfFloatType as _D,InstancedBufferAttribute as AD,InstancedBufferGeometry as PD,Mesh as OD,NormalBlending as CD,RGBAFormat as TD,RGBAIntegerFormat as MD,RGFormat as xS,ShaderMaterial as ID,UnsignedIntType as ND,Vector2 as Dn}from"three";var od=function(){let n=new Float32Array(1),t=new Int32Array(n.buffer);return function(e){return n[0]=e,t[0]}}(),yS=function(n,t,e,r){return n+(t<<8)+(e<<16)+(r<<24)};var id=new Dn,En=class extends OD{constructor(e,r,o,i,a=!1,s=1,l,u){super(o,i);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=u,this.splatBuffers=e,this.geometry=o,this.material=i,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,i=1,a,s){let l=En.buildGeomtery(r),u=En.buildMaterial(a);return new En(e,r,l,u,o,i,a,s)}static buildMaterial(e){let r=`
3468
3468
  precision highp float;
3469
3469
  #include <common>
3470
3470
 
@@ -3618,4 +3618,4 @@ end_header
3618
3618
  A = exp(A) * vColor.a;
3619
3619
  gl_FragColor = vec4(color.rgb, A);
3620
3620
  gVelocity = vec4(0.0); // so it is ignored by TAA
3621
- }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Nn},viewport:{type:"v2",value:new Nn},basisViewport:{type:"v2",value:new Nn},debugColor:{type:"v3",value:new bD},covariancesTextureSize:{type:"v2",value:new Nn(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Nn(1024,1024)},orthoZoom:{type:"f",value:-1}};return new ID({uniforms:i,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:CD,depthTest:!0,depthWrite:!1,side:SD})}static buildGeomtery(e){let r=new xD;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new gD(o,3);r.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new PD().copy(r),s=new Uint32Array(e),l=new AD(s,1,!1);return l.setUsage(wD),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(i.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new Nn(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Nn(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=vD.toHalfFloat(this.covariances[h]);s=new nd(l,i.x,i.y,xS,_D)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new nd(l,i.x,i.y,xS,gS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let u=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,g=h*4;u[g]=yS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),u[g+1]=od(this.centers[y]),u[g+2]=od(this.centers[y+1]),u[g+3]=od(this.centers[y+2])}let c=new nd(u,a.x,a.y,MD,ND);c.internalFormat="RGBA32UI",c.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=c,this.material.uniforms.centersColorsTextureSize.value.copy(a);let d=256*4,p=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)p.set(this.meshMatrixWorlds[h].elements,h*16);let f=new nd(p,d,1,TD,gS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:u,texture:c,size:a},meshMatrixWorlds:{data:p,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,i){this.splatCount>0&&(id.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(id),this.material.uniforms.basisViewport.value.set(2/id.x,2/id.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=i,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose())}};var _l=class{constructor(t={}){_t(this,"updateSplatMeshUniforms",function(){let t=new ED;return function(){if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(this.renderer.getSize(t),this.cameraFocalLengthX=this.camera.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=this.camera.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,this.camera.isPerspectiveCamera?-1:this.camera.zoom*this.devicePixelRatio))}}());_t(this,"updateView",function(){let t=new DD,e=[],r=new ms(0,0,-1),o=new ms(0,0,-1),i=new ms,a=new ms;return function(s=!1){let l=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(this.camera.quaternion);let d=!1,p=!1;if(o.dot(r)<=.95&&(d=!0),a.copy(this.camera.position).sub(i).length()>=1&&(p=!0),!d&&!p&&!l&&!u)return}i.copy(this.camera.position),r.copy(o),t.copy(this.camera.matrixWorld).invert(),t.premultiply(this.camera.perspCamera.projectionMatrix),e[0]=this.camera.position.x,e[1]=this.camera.position.y,e[2]=this.camera.position.z;let c={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...l?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=c:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(c))}}());this.scene=t.scene,this.currentPage=null,this.renderer=t.renderer,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.splatRenderingInitialized=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null}get camera(){return this.scene.activeCamera}reloadSplats(){this.splatRenderingInitialized=!1;let t=this.loadSplat();this.renderer.pipeline.opaquePass.splatViewer=t?this:null}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new ms().fromArray(t.position)),t.orientation&&(t.orientation=new bS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseEntity(a=>{if(a.data.type==="Splat"){let s=a.visible;a.traverseAncestors(l=>{s&&(s=l.visible)}),s&&e.push(a)}}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new In(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of r)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[r][i]===void 0?(t=!0,this.cropsArray[r][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,u)=>l!==this.cropsArray[r][i][a][u])?(t=!0,this.cropsArray[r][i][a]=s):s!==this.cropsArray[r][i]?.[a]&&(t=!0,this.cropsArray[r][i][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new ms,o=new bS,i=!1,a=1,s,l){this.splatMesh=Dn.buildMesh(t,e,i,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=10,this.updateSplatMeshUniforms(),this.splatRenderCount=e}setupSortWorker(t){this.sortWorker=mS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.updateView(!0,!0),this.splatRenderingInitialized=!0)}}update(){this.splatRenderingInitialized!==!1&&(this.updateSplatMeshUniforms(),this.updateView())}getSplatMesh(){return this.splatMesh}};var kD=new zD;kD.wireframe=!0;var vS=new LD,ad=class extends BD{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new ed;this.invisibleObjects=new Pn("jflkdsafjasdifjaslk",{...Tc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Or("fdasfa",{...To.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=zv(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Vv(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Or&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],i=r;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push(i)}return r.sort((o,i)=>Tl(o.sortKey,i.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===ln)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Or&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Or&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof ci&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Or&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);i.updateVisible(this),i.resetBBoxNeedsUpdate(),An(i)&&fl(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),fl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),An(o)&&(o.freeBooleanPointer(),i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof ds&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),An(o)&&(o.invalidateUpstreamBooleanData(),fl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Or&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,i){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{Bv(a,r,o,{scene:this,shared:i}),a instanceof ot&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,i,a,s=[]){e.updateEntityByOp(r,o,i,a),this.traverseEntity(l=>{(l instanceof ci||l instanceof Or)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,o,i,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(i=>{i instanceof qo&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ce.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{Ce.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,i,a,s,l){if(e){let u=i.find(e);u&&u!==i&&a.forInstancesRec(c=>{c.data=tn(c.data,d=>{let p=d.events.data(l.id),f=c.goUp(s);if(f){let h=[...Cl(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,g=Ze.zoom(p,r);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s):l.data.type==="Animation"&&this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Yo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=tn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Dc.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,r,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,r,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,r,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,r,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,r,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,r,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,r,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,r,o,i)})}),!0})}expandInstances(e,r,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof Yo&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Yu(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Yo&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)Ce.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(Ce.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let u=[];if(e.intersectObject(s,!0,u),u.length){let c=u[0];c.object=s,c.point.applyMatrix4(c.object.matrixWorld);let d=s.matrixWorld.clone().invert();c.point.applyMatrix4(d),o.push(c)}}else(An(s)||hl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Sl(s,e,o)),i(s)}};return i(this),o}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Ce.is(a)&&(a.visible||s?.object.data.visible)&&((An(a)||hl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Sl(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)Ce.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)Ce.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)Ce.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof ot&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,r).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();fl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)oa.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)Ce.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,i,a,s){let l={scene:this,shared:s},u=Ju(e,r,l);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(a,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,s)),u.updateState(r,l),u instanceof ot&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(this),u.cloner&&this.toExpandCloner.add(u),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&u.traverseEntity(c=>{let d=c.dataPatched;if(c instanceof ot&&d.bones&&d.boneInverses){let p=d.bones.map(m=>this.find(m)),f=d.boneInverses.map(m=>new RD().fromArray(m)),h=new GD(p,f);c.bind(h,c.bindMatrix)}else c.matrixAutoUpdate=!0}),u}getCenter(e){let r=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],u=this.find(s),c=l?u.recursiveBBox:u.singleBBox;r.push(...c.vertices)}let o=new VD;return o.setFromPoints(r),o.getCenter(vS),vS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof bt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof rr&&e(r.material[o]);else r.material instanceof rr&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(i=>{i instanceof qo&&i.setViewplaneSize(e,r,o)})}initializeSplatViewer(e){this.splatViewer=new _l({scene:this,renderer:e}),this.reloadSplats()}reloadSplats(){this.splatViewer?.reloadSplats()}};import{DRACOLoader as FD}from"three/examples/jsm/loaders/DRACOLoader.js";var En;function jD(){return En||(En=new FD,En.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),En.decoderPending}async function UD(n){if(En){let t={attributeIDs:En.defaultAttributeIDs,attributeTypes:En.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await En.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function SS(n,t){let[e,r]=bd(mc.deserialize(new Uint8Array(n)));Lc(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 jD();for(let i of o){let a=await UD(et(i.geometry.data.draco));if(a){a.index&&(i.geometry.data.index={array:a.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};a.attributes.forEach(({name:l,array:u,itemSize:c})=>{s[l]={array:u,itemSize:c,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{Mesh as zde}from"three";import{mergeBufferGeometries as Fde}from"three/examples/jsm/utils/BufferGeometryUtils.js";function wS(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as _S,ShaderLib as HD}from"three";function AS(n){let t=new Set;return n.traverse(e=>{if(e instanceof or)if(it(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(qD(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new _S,specularColor:new _S});let o=0;e.onBeforeCompile=(i,a)=>{r&&r(i,a),i.uniforms=Object.assign({},HD.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=Ux(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else WD(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function qD(n){return n.getLayersOfType("transmission").length>0}function WD(n){let t=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function PS(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function OS(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as $D}from"three/examples/jsm/utils/BufferGeometryUtils.js";function CS(n){let t=[];return n.traverse(e=>{e instanceof es&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(u){console.error(u)}return l!==void 0&&s.matrix.determinant()<0&&wS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof bt&&a.unshift(r.geometry),a.length){let s=$D(a);r instanceof bt&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:n,shared:sb})}),n}function TS(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function MS(n){Object.values(n.shared.materials).forEach(t=>{uh(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?uh(e.material):"materials"in e&&e.materials.forEach(r=>{uh(r)})})}function uh(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var BS=Ft(NS(),1);function DS(n){return n.traverseMaterial(t=>{t.needsJitter=!1}),n}var ES="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",dh=class extends XD{load(t,e,r,o=console.error){let i=new YD(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(ES+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(ES),i.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await SS(t,MS);e.version&&(0,BS.default)(e.version,"1.0.2")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([mb(e)&&xx(),Ob(e)&&nb(),av(e)&&ov()].filter(Boolean));let r=new ri(e.shared);Object.values(r.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new ad(e.scene,r),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=CS(o),o=AS(o),o=PS(o),o=OS(o),o=TS(o),o=DS(o),o}};export{dh as default};
3621
+ }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Dn},viewport:{type:"v2",value:new Dn},basisViewport:{type:"v2",value:new Dn},debugColor:{type:"v3",value:new bD},covariancesTextureSize:{type:"v2",value:new Dn(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Dn(1024,1024)},orthoZoom:{type:"f",value:-1}};return new ID({uniforms:i,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:CD,depthTest:!0,depthWrite:!1,side:SD})}static buildGeomtery(e){let r=new xD;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new gD(o,3);r.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new PD().copy(r),s=new Uint32Array(e),l=new AD(s,1,!1);return l.setUsage(wD),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(i.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new Dn(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Dn(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=vD.toHalfFloat(this.covariances[h]);s=new nd(l,i.x,i.y,xS,_D)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new nd(l,i.x,i.y,xS,gS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let u=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,g=h*4;u[g]=yS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),u[g+1]=od(this.centers[y]),u[g+2]=od(this.centers[y+1]),u[g+3]=od(this.centers[y+2])}let c=new nd(u,a.x,a.y,MD,ND);c.internalFormat="RGBA32UI",c.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=c,this.material.uniforms.centersColorsTextureSize.value.copy(a);let d=256*4,p=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)p.set(this.meshMatrixWorlds[h].elements,h*16);let f=new nd(p,d,1,TD,gS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:u,texture:c,size:a},meshMatrixWorlds:{data:p,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,i){this.splatCount>0&&(id.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(id),this.material.uniforms.basisViewport.value.set(2/id.x,2/id.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=i,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose())}};var _l=class{constructor(t={}){_t(this,"updateSplatMeshUniforms",function(){let t=new ED;return function(){if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(this.renderer.getSize(t),this.cameraFocalLengthX=this.camera.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=this.camera.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,this.camera.isPerspectiveCamera?-1:this.camera.zoom*this.devicePixelRatio))}}());_t(this,"updateView",function(){let t=new DD,e=[],r=new ms(0,0,-1),o=new ms(0,0,-1),i=new ms,a=new ms;return function(s=!1){let l=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(this.camera.quaternion);let d=!1,p=!1;if(o.dot(r)<=.95&&(d=!0),a.copy(this.camera.position).sub(i).length()>=1&&(p=!0),!d&&!p&&!l&&!u)return}i.copy(this.camera.position),r.copy(o),t.copy(this.camera.matrixWorld).invert(),t.premultiply(this.camera.perspCamera.projectionMatrix),e[0]=this.camera.position.x,e[1]=this.camera.position.y,e[2]=this.camera.position.z;let c={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...l?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=c:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(c))}}());this.scene=t.scene,this.currentPage=null,this.renderer=t.renderer,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.splatRenderingInitialized=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null}get camera(){return this.scene.activeCamera}reloadSplats(){this.splatRenderingInitialized=!1;let t=this.loadSplat();this.renderer.pipeline.opaquePass.splatViewer=t?this:null}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new ms().fromArray(t.position)),t.orientation&&(t.orientation=new bS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseEntity(a=>{if(a.data.type==="Splat"){let s=a.visible;a.traverseAncestors(l=>{s&&(s=l.visible)}),s&&e.push(a)}}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new Nn(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of r)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[r][i]===void 0?(t=!0,this.cropsArray[r][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,u)=>l!==this.cropsArray[r][i][a][u])?(t=!0,this.cropsArray[r][i][a]=s):s!==this.cropsArray[r][i]?.[a]&&(t=!0,this.cropsArray[r][i][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new ms,o=new bS,i=!1,a=1,s,l){this.splatMesh=En.buildMesh(t,e,i,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=10,this.updateSplatMeshUniforms(),this.splatRenderCount=e}setupSortWorker(t){this.sortWorker=mS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.updateView(!0,!0),this.splatRenderingInitialized=!0)}}update(){this.splatRenderingInitialized!==!1&&(this.updateSplatMeshUniforms(),this.updateView())}getSplatMesh(){return this.splatMesh}};var kD=new zD;kD.wireframe=!0;var vS=new LD,ad=class extends BD{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new ed;this.invisibleObjects=new Pn("jflkdsafjasdifjaslk",{...Tc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Or("fdasfa",{...To.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=zv(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Vv(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Or&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],i=r;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push(i)}return r.sort((o,i)=>Tl(o.sortKey,i.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===ln)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Or&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Or&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof ui&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Or&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);i.updateVisible(this),i.resetBBoxNeedsUpdate(),An(i)&&fl(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),fl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),An(o)&&(o.freeBooleanPointer(),i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof ds&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),An(o)&&(o.invalidateUpstreamBooleanData(),fl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Or&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,i){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{Bv(a,r,o,{scene:this,shared:i}),a instanceof ot&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,i,a,s=[]){e.updateEntityByOp(r,o,i,a),this.traverseEntity(l=>{(l instanceof ui||l instanceof Or)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,o,i,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(i=>{i instanceof qo&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ce.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{Ce.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,i,a,s,l){if(e){let u=i.find(e);u&&u!==i&&a.forInstancesRec(c=>{c.data=tn(c.data,d=>{let p=d.events.data(l.id),f=c.goUp(s);if(f){let h=[...Cl(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,g=Ze.zoom(p,r);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s):l.data.type==="Animation"&&this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Yo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=tn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Dc.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,r,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,r,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,r,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,r,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,r,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,r,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,r,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,r,o,i)})}),!0})}expandInstances(e,r,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof Yo&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Yu(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Yo&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)Ce.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(Ce.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let u=[];if(e.intersectObject(s,!0,u),u.length){let c=u[0];c.object=s,c.point.applyMatrix4(c.object.matrixWorld);let d=s.matrixWorld.clone().invert();c.point.applyMatrix4(d),o.push(c)}}else(An(s)||hl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Sl(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Ce.is(a)&&(a.visible||s?.object.data.visible)&&((An(a)||hl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Sl(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)Ce.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)Ce.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)Ce.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof ot&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,r).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();fl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)na.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)Ce.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,i,a,s){let l={scene:this,shared:s},u=Ju(e,r,l);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(a,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,s)),u.updateState(r,l),u instanceof ot&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(this),u.cloner&&this.toExpandCloner.add(u),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&u.traverseEntity(c=>{let d=c.dataPatched;if(c instanceof ot&&d.bones&&d.boneInverses){let p=d.bones.map(m=>this.find(m)),f=d.boneInverses.map(m=>new RD().fromArray(m)),h=new GD(p,f);c.bind(h,c.bindMatrix)}else c.matrixAutoUpdate=!0}),u}getCenter(e){let r=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],u=this.find(s),c=l?u.recursiveBBox:u.singleBBox;r.push(...c.vertices)}let o=new VD;return o.setFromPoints(r),o.getCenter(vS),vS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof bt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof rr&&e(r.material[o]);else r.material instanceof rr&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(i=>{i instanceof qo&&i.setViewplaneSize(e,r,o)})}initializeSplatViewer(e){this.splatViewer=new _l({scene:this,renderer:e}),this.reloadSplats()}reloadSplats(){this.splatViewer?.reloadSplats()}};import{DRACOLoader as FD}from"three/examples/jsm/loaders/DRACOLoader.js";var Bn;function jD(){return Bn||(Bn=new FD,Bn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Bn.decoderPending}async function UD(n){if(Bn){let t={attributeIDs:Bn.defaultAttributeIDs,attributeTypes:Bn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Bn.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function SS(n,t){let[e,r]=bd(mc.deserialize(new Uint8Array(n)));Lc(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 jD();for(let i of o){let a=await UD(et(i.geometry.data.draco));if(a){a.index&&(i.geometry.data.index={array:a.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};a.attributes.forEach(({name:l,array:u,itemSize:c})=>{s[l]={array:u,itemSize:c,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{Mesh as zde}from"three";import{mergeBufferGeometries as Fde}from"three/examples/jsm/utils/BufferGeometryUtils.js";function wS(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as _S,ShaderLib as HD}from"three";function AS(n){let t=new Set;return n.traverse(e=>{if(e instanceof or)if(it(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(qD(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new _S,specularColor:new _S});let o=0;e.onBeforeCompile=(i,a)=>{r&&r(i,a),i.uniforms=Object.assign({},HD.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=Ux(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else WD(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function qD(n){return n.getLayersOfType("transmission").length>0}function WD(n){let t=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function PS(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function OS(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as $D}from"three/examples/jsm/utils/BufferGeometryUtils.js";function CS(n){let t=[];return n.traverse(e=>{e instanceof ts&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(u){console.error(u)}return l!==void 0&&s.matrix.determinant()<0&&wS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof bt&&a.unshift(r.geometry),a.length){let s=$D(a);r instanceof bt&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:n,shared:sb})}),n}function TS(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function MS(n){Object.values(n.shared.materials).forEach(t=>{uh(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?uh(e.material):"materials"in e&&e.materials.forEach(r=>{uh(r)})})}function uh(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var BS=Ft(NS(),1);function DS(n){return n.traverseMaterial(t=>{t.needsJitter=!1}),n}var ES="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",dh=class extends XD{load(t,e,r,o=console.error){let i=new YD(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(ES+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(ES),i.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await SS(t,MS);e.version&&(0,BS.default)(e.version,"1.0.3")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([mb(e)&&xx(),Ob(e)&&nb(),av(e)&&ov()].filter(Boolean));let r=new oi(e.shared);Object.values(r.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new ad(e.scene,r),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=CS(o),o=AS(o),o=PS(o),o=OS(o),o=TS(o),o=DS(o),o}};export{dh as default};